[HAL-dev] Re: [m-dev.] Solver types in Mercury - meeting notes and comments

Zoltan Somogyi zs at cs.mu.OZ.AU
Mon Feb 16 13:21:50 AEDT 2004

On 16-Feb-2004, Fergus Henderson <fjh at cs.mu.OZ.AU> wrote:
> So the correct example is
>  	:- pred p is semidet.
>  	p :- 1 >= list.length(std_util.solutions(
>  		(pred(Term::out) is nondet :- Term = f(c), q(Term)))).

I don't see how that could be replaced with true with or without solver
types being involved.

I think one disconnect between you two is that in this context, asking
"what is the declarative semantics" is a in a sense the wrong question.
We are providing facilities for building solvers, and it is up to the
*programmer of the solver* to ensure that the implementation of the
solver faithfully implements a declarative semantics. I think the best
we can do are:

- decide on what parts of the program have declarative semantics implemented by
  Mercury, and what parts have their declarative semantics implemented by a

- document exactly what properties we require from the solver implementation
  (including properties of the implemented declarative semantics), and

- provide tools for solver programmers.

One problem we haven't adddressed so far, but will need to, is detecting
and handling floundering.

> > Are you in this afternoon?  I think this discussion would work better in
> > person with a whiteboard!
> Sure.

That would be a good idea.

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