[ library(gfd) | Reference Manual | Alphabetic Index ]
# <ConsistencyModule:> #\=(?ExprX, ?ExprY, ?Bool)

Reified ExprX is not equal to ExprY.
*ExprX*
- Integer arithmetic expression
*ExprY*
- Integer arithmetic expression
*Bool*
- Reified truth value of the constraint

## Description

This predicate is a reified constraint: it succeeds if and only if the
truth value of its associated constraint (the constraint with arity one
less and the same arguments except for B) is equal to B, where the value
0 means false and 1 true. This constraint can be used both to test the
validity of the associated constraint (entailment test) and to impose
this constraint or its negation. For the former, B will be instantiated
as soon as either the associated constraint or its negation is subsumed
by the current state of its domain variables. For the latter, when B is
instantiated, then depending on its value, either the associated
constraint or its negation will be imposed on its arguments.

ConsistencyModule is the optional module specification to give the
consistency level for the propagation for this constraint: gfd_bc
for bounds consistency, and gfd_gac for domain (generalised arc)
consistency. Note that some operators (integer division, modulus)
only support bounds consistency and will be propagated with bounds
consistency even when posted with gfd_gac.

This constraint is implemented using Gecode's MiniModel's rel() for
both integer and boolean expressions, with sub-expressions/constraints
not supported by MiniModel factored out and posted as auxiliary
constraints.

### Modules

This predicate is sensitive to its module context (tool predicate, see @/2).
## See Also

#< / 3, #=< / 3, #= / 3, #>= / 3, #> / 3, suspend : =\= / 3, ic : =\= / 3, #\= / 2, suspend : #\= / 3, ic : #\= / 3, fd : #\= / 3