
complement(?SetVar, ?Complement)

   Set complement constraint

Arguments
   SetVar              A variable.
   Complement          A variable

Type
   library(cardinal)

Description
Constrain sets so that Complement is the complement set of SetVar.
		(The universe is taken as the union of their LUBs.).

Fail Conditions
   Fails if Complement can not be the set complement of SetVar (in their universe).

Resatisfiable
   No.

Examples
   
?- complement([8,9], []), complement([8,9], [t]).
yes

?- complement([8,9], [8]).
no

?- complement([8,9], N).
N = []

?- sets([X,Y], [],[7,8,9], []), complement(X,Y), 8 `@ Y, glb_poss(X,GX,PX), glb_poss(Y,GY,PY).
GX = [], PX = [7,9], GY = [8], PY = [7,9]

?- sets([X,Y], [],[7,8,9], [cardinality:C]), complement(X,Y), card_labeling([X]).
no

?- sets([X,Y], [],[7,8,9], []), complement(X,Y), X `>= Y, set_labeling(up,[Y]).
Y = [], X = [7,8,9] ;
no

?- sets([X,Y], [],[7,8,9], [minimum:Min]), complement(X,Y), refine(up,X).
no

?- sets([X,Y], [],[7,8,9], []), complement(X,Y), #(X,1), #(Y,CY).
CY = 2


See Also
   complement / 3, `$ / 2, `= / 2
