To solve the problem, we start with a space whose store constrains the variables X, Y, and Z to the given domains. We also create three propagators imposing the constraintsX7Z2X-Z= 3^{ . }Y

The propagators for the disequations immediately write all their information into the store and disappear. The store then knows the domains

where denotes the finite domain {1} {3,..., 10}. The interval propagator for

Now propagation has reached a fixpoint. Thus, we continue with a first branching step. We choose to branch with the constraint X = 4. Figure 3 shows the resulting search tree.

The space obtained by adding a propagator for X = 4 can be solved by propagation and yields the solution

The space obtained by adding a propagator forX= 4Y= 1Z= 1

This time we branch with respect to the constraint X = 5.

The space obtained by adding a propagator for X = 5 fails
since
*X* - *Z* = 3^{ . }*Y* is inconsistent with
the store obtained by adding X = 5.

The space obtained by adding a propagator for *X* 5
reaches a fixpoint immediately after this propagator
has written its information into the constraint store,
which then looks as follows:

Now we branch with respect to the constraint X = 6.

The space obtained by adding a propagator for X = 6 can be solved by propagation and yields the solution

Finally, the space obtained by adding a propagator forX= 6Y= 1Z= 3

An alternative to the propagate and branch method is a naive enumerate and test method, which would enumerate all triples (X, Y, Z) admitted by the initial domain constraints and test the constraintsX= 8Y= 1Z= 5

Andreas Rossberg 2006-08-28