This example shows the first full constraint satisfaction problem (CSP) definition. A constraint solver (here SearchAll) expects a CSP in form of a script. A script is a procedure whose only argument is the solution when the CSP is solved. Transformed into common mathematical notation, the CSP states the following conjunction

X + Y = Y  AND  X < Y

The solution simply collects the three variables X, Y, and Z in a list. The solver SearchAll returns a list with all solutions of the CSP defined by the script. Note the use of the special constraint operators <: and =: instead of < and =.

The procedure FD.distribute defines a specific search strategy (a first fail branching or distribution strategy). Oz makes the search process fully programmable, which is one of its main benefits. However, the definition of distribution strategies is outside the scope of this tutorial. Please refer to the Oz documentation for details (e.g. the Finite Domain Constraint Programming Tutorial).