next up previous index
Next: Evaluation Constraint Predicates Up: The Finite Domains Library Previous: Arithmetic Constraint Predicates   Index

Logical Constraint Predicates

The logical constraints can be used to combine simpler constraints and to build complex logical constraint expressions. These constraints are preprocessed by the system and transformed into a sequence of evaluation constraints and arithmetic constraints. The logical operators are declared with the following precedences:
:- op(750, fy, #\+).
:- op(760, yfx, #/\).
:- op(770, yfx, #\/).
:- op(780, yfx, #=>).
:- op(790, yfx, #<=>).

#\+ +E1
E1 is false, i.e. the logical negation of the constraint expression E1 is imposed.

+E1 #/\+E2
Both constraint expressions E1 and E2 are true. This is equivalent to normal conjunction (E1, E2).

+E1 #\/+E2
At least one of constraint expressions E1 and E2 is true. As soon as one of E1 or E2 becomes false, the other constraint is imposed.

+E1 #=> +E2
The constraint expression E1 implies the constraint expression E2. If E1 becomes true, then E2 is imposed. If E2 becomes false, then the negation of E1 will be imposed.

+E1 #<=> +E2
The constraint expression E1 is equivalent to the constraint expression E2. If one expression becomes true, the other one will be imposed. If one expression becomes false, the negation of the other one will be imposed.


next up previous index
Next: Evaluation Constraint Predicates Up: The Finite Domains Library Previous: Arithmetic Constraint Predicates   Index
Warwick Harvey
2004-08-07