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

all_disjoint(+SetVars)

All sets disjointness global constraint
SetVars
A list of set variables.

Description

Constrain all pairs of sets in SetVars to be disjoint. I.e. No two sets can have a common element (empty pairwise intersection).

This version of all_disjoint/1 is a weak global constraint, but stronger than the simple posting of all pairwise disjoint/2 constraints, since it posts the additional constraint that the sum of the cardinalities of SetVars must be less than or equal to the cardinality of the union of all the initial LUBs.

Fail Conditions

Fails if SetVars can not be all disjoint.

Resatisfiable

No.

Examples

?- all_disjoint([[7],[8],[i,k]]).
yes

?- all_disjoint([[7,8],[i],[8]]).
no

?- sets([X,Y,Z], [],[1,2,7,8,9], [cardinality:2]), all_disjoint([X,Y,Z]).
no

?- sets([X,Y,Z], [],[1,2,7,8,9], [cardinality:2]), all_disjoint([X,Y,Z]), 2 `@ X, lub(Y,LubY), lub(Z,LubZ)
LubY = [1,7,8,9], LubZ = [1,7,8,9]

See Also

`$ / 2, `<> / 2, complement / 2, complement / 3, `/= / 2, all_union / 2