| << Prev | - Up - | Next >> | 
In this section, we present the Oz functor Dominance (see Section A.6) implementing a solver as described in the preceding section. It exports solutionPredicate which can be used as follows: 
{ExploreAll {Dominance.solutionPredicate Desc}} where Desc is a tree description in the form of a list where each element is of one of the forms described below: 
dom(X R Y)where X and Y are both atoms naming variables, and R is an atom or list of atoms from the set eq, above, below, side.
lab(X f(X1 ... Xn))where X and Xi are atoms naming variables.
labeled(X)where X is an atom naming a variable. This is a new constraint not mentioned in our abstract syntax but very convenient in practice: it simply states that X must be identified with some variable that is explicitly labeled in the input description.
Dominance.oz>=functor 
import FD FS
export SolutionPredicate
define 
   <Dominance: SolutionPredicate> 
   <Dominance: MakeNode> 
   <Dominance: characteristic constraints> 
   <Dominance: well-formedness clauses> 
   <Dominance: Solver class> 
   <Dominance: utilities> 
end SolutionPredicate takes a tree description as argument and returns a procedure appropriate for encapsulated search. This procedure creates a solver object. This object is only needed for converting the description into constraints and starting the search. 
fun {SolutionPredicate Desc}
   proc {$ Info}
      {New Solver init(Desc Info) _}
   end 
end| << Prev | - Up - | Next >> |