[m-dev.] Re: [HAL-dev] Adding Herbrand types to Mercury

Fergus Henderson fjh at cs.mu.OZ.AU
Wed Dec 17 13:21:09 AEDT 2003

On 17-Dec-2003, Ralph Becket <rafe at cs.mu.OZ.AU> wrote:
> Fergus Henderson, Wednesday, 17 December 2003:
> > For traditional Prolog alias structures, you'd need something like this:
> > 
> > 	:- type herbrand_var(T)
> > 	--->    free
> > 	;       alias(herbrand_var(T))
> > 	;       bound(T).
> It occurred to me that with traditional Prolog alias structures, you
> don't need alias(X) since that's equivalent to bound('$'(X))

OK, that works.

> > No.  In particular, there is no requirement that a solver type value
> > with inst "ground" always be represented by a non-'$' data constructur.
> > For example, the ground value "f" might be represented as '$'(bound(f))'.
> Could you present a brief statement of what it means for
> - a solver type value to have inst any,

This means that its representation has been initialized.

> - a solver type value to have inst ground,

This means that the value is ground, i.e. it's representation has been
set to something which represents a ground term (a term containing no

> - a non-solver type value to have inst any, and
> - a non-solver type value to have inst ground.

For non-solver types that do not contain solver types,
those two both mean exactly the same thing: that the value is ground.

For non-solver types that contain solver types, inst `any' / `ground'
means that the top-level functor of the non-solver type is bound, and
the arguments of that functor have inst `any' / `ground' (respectively).
This definition applies recursively.

Fergus Henderson <fjh at cs.mu.oz.au>  |  "I have always known that the pursuit
The University of Melbourne         |  of excellence is a lethal habit"
WWW: <http://www.cs.mu.oz.au/~fjh>  |     -- the last words of T. S. Garp.
mercury-developers mailing list
Post messages to:       mercury-developers at cs.mu.oz.au
Administrative Queries: owner-mercury-developers at cs.mu.oz.au
Subscriptions:          mercury-developers-request at cs.mu.oz.au

More information about the developers mailing list