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 c(x 1 ,x 2 ,,x n ) is contractible if each ground satisfied instance c(𝑣𝑎𝑙 1 ,𝑣𝑎𝑙 2 ,,𝑣𝑎𝑙 n ) is still satisfied if we remove any of its 𝑣𝑎𝑙 i (1in).

  • A constraint c(x 1 ,x 2 ,,x n ) is extensible if each ground satisfied instance c(𝑣𝑎𝑙 1 ,𝑣𝑎𝑙 2 ,,𝑣𝑎𝑙 n ) is still satisfied if we insert any value into the sequence 𝑣𝑎𝑙 1 ,𝑣𝑎𝑙 2 ,,𝑣𝑎𝑙 n .

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:

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 𝒞 1

𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝_𝚌𝚘𝚗𝚜𝚎𝚌𝚞𝚝𝚒𝚟𝚎_𝚟𝚊𝚕𝚞𝚎𝚜(v 1 ,v 2 ,v 3 ,v 4 ) 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝_𝚌𝚘𝚗𝚜𝚎𝚌𝚞𝚝𝚒𝚟𝚎_𝚟𝚊𝚕𝚞𝚎𝚜(v 5 ,v 6 ,v 7 ,v 8 )

where 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝_𝚌𝚘𝚗𝚜𝚎𝚌𝚞𝚝𝚒𝚟𝚎_𝚟𝚊𝚕𝚞𝚎𝚜 forces variables to take consecutive distinct values, and the conjunction 𝒞 2

𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝(v 1 ,v 2 ) 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝(v 3 ,v 4 ) 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝(v 5 ,v 6 ) 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝(v 7 ,v 8 )

Conjunction 𝒞 1 implies conjunction 𝒞 2 since every constraint of 𝒞 2 is implied by at least one constraint of 𝒞 1 . For instance, 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝(v 1 ,v 2 ) is implied by 𝚊𝚕𝚕𝚍𝚒𝚏𝚏𝚎𝚛𝚎𝚗𝚝_𝚌𝚘𝚗𝚜𝚎𝚌𝚞𝚝𝚒𝚟𝚎_𝚟𝚊𝚕𝚞𝚎𝚜(v 1 ,v 2 ,v 3 ,v 4 ) since: