George Rudolph wrote:
1. In Prolog, assuming the terms in a clause are bounded correctly,
the engine will attempt to unify all undetermined variables (whether
perceived as
“input” or “output” variables).
i.e. unification makes all unbound variables true, if possible.
"makes all unbound variables true" ???
Unification produces the smallest set of variable bindings that make
both terms equal. Variable bindings can be variable-value or
variable-variable. In the latter case, some variables may still be
undetermined after unification.
If this same behavior is possible in OZ, how would I specify this?
The operator '=' in Oz performs unification. In fact Oz is more general
than most Prolog implementations, because it handles cycles well. For
instance, if X=f(X Z) and Y=f(Z Y), performing X=Y will make X, Y and Z
equal to f(X X).
2. What is a good source for learning the details of constraint handling
in OZ?
I have read Peter Van Roy’s book—and it is excellent, but not
detailed enough
for what I need.
I have also browsed the online documentation, and I don’t quite
understand how
To adapt what I see there (ref. the Steiner Triples example) to the
particular
problems I want to solve.
I think it is a combination of APIs and knowing how to combine
statements
To get the results I want.
The Finite Domain Constraint Programming tutorial is an excellent way to
learn how to write solvers for combinatorial problems. It is one of the
best documents in the documentation of Mozart. I advise you to read it
carefully.
Don't hesitate to ask if you are experiencing problems.
Cheers,
raph
_________________________________________________________________________________
mozart-users mailing list
[email protected]
http://www.mozart-oz.org/mailman/listinfo/mozart-users