2.1.8. Property view
If we want to reason about constraints we need to know their properties. Examples of properties of a constraint with respect to one of its arguments are:
A constraint is contractible if each ground satisfied instance is still satisfied if we remove any of its ().
A constraint is extensible if each ground satisfied instance is still satisfied if we insert any value into the sequence .
Examples of properties of a constraint with respect to another constraint are:
The fact that a constraint implies another constraint under the assumption that both constraints have exactly the same arguments.
The fact that if a constraint holds then another constraint does not hold, under the assumption that both constraints have exactly the same arguments.
Regarding the constraint we have:
It is contractible since removing a value from a ground satisfied instance leaves the remaining constraint satisfied.
It is not extensible since adding a value into a ground satisfied instance may not necessarily lead to a satisfied constraint.
The constraint is implied by more specific constraints, such as the constraint, which in addition forces all used values to be consecutive.
We now illustrate how to use such knowledge as a method for trying to check that a given conjunction of identical constraints, i.e. constraints with the same name, is implied by another conjunction of also identical constraints. This subproblem originates from learning models where we want to keep only the more general conjunctions of identical constraints. Consider the conjunction
where forces variables to take consecutive distinct values, and the conjunction
Conjunction implies conjunction since every constraint of is implied by at least one constraint of . For instance, is implied by since: