3.7.95. Entailment

Denotes that the catalogue mentions a sufficient condition for the entailment of a constraint. Consider a constraint π’ž(V 1 ,V 2 ,β‹―,V n ) and the potential sets of values π‘‘π‘œπ‘š(V 1 ),π‘‘π‘œπ‘š(V 2 ),β‹―,π‘‘π‘œπ‘š(V n ) that can respectively be assigned to the distinct domain variables V 1 ,V 2 ,β‹―,V n . The constraint π’ž(V 1 ,V 2 ,β‹―,V n ) is entailed if and only if π’ž(V 1 ,V 2 ,β‹―,V n ) holds whatever values π‘£π‘Žπ‘™ 1 βˆˆπ‘‘π‘œπ‘š(V 1 ),π‘£π‘Žπ‘™ 2 βˆˆπ‘‘π‘œπ‘š(V 2 ),β‹―,π‘£π‘Žπ‘™ n βˆˆπ‘‘π‘œπ‘š(V n ) will respectively be assigned variables V 1 ,V 2 ,β‹―,V n . A satisfied constraint for which all variables are already fixed is trivially entailed.

Entailment is usually not considered as very important when designing a filtering algorithm, even though it can sometimes save waking again and again a constraint that will for sure be satisfied. Failure to detect entailment can leads to a memory leak if the constraint system is supposed to reclaim memory for entailed constraints for which it is no more possible to backtrack over the point where the constraint was posted. From a modelling point of view, entailment detection is mandatory for coming up with the reified version of a constraint (see alsoΒ reified automaton constraint).