Next: , Up: CLPFD Interface   [Contents][Index]


10.9.6.1 Posting Constraints

A constraint is called in the same way as any other Prolog predicate. When called, the constraint is posted to the store. For example:

| ?- X in 1..5, Y in 2..8, X+Y #= T.
X in 1..5,
Y in 2..8,
T in 3..13

| ?- X in 1.0..5.0, T in 3.0..13.0, X+Y $= T.
X in 1.0..5.0,
T in 3.0..13.0,
Y in-2.0000000000000013..12.000000000000002

Note that the answer constraint shows the domains of nonground query variables, but does not show any constraints that may be attached to them.

Normally, after posting a constraint, propagation to fixpoint is performed, which can be an overkill. The following provides a means of posting a set of constraints in one batch, suspending all propagation until the whole set has been posted. Suspending propagation can significantly reduce posting overhead.

fd_batch(+Goals)   since release 4.2.1

where Goals should be a list of constraints, or Prolog goals posting such constraints. Please note: Every constraint posting must be deterministic and must not be backtracked over. A posting that is backtracked over leads to undefined behavior.


Send feedback on this subject.