[ library(gfd) | Reference Manual | Alphabetic Index ]

# <ConsistencyModule:> #=(?ExprX, ?ExprY, ?Bool)

Reified ExprX is 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, #= / 2, suspend : #= / 3, ic : #= / 3, fd : #= / 3