
all_union(+SetVars, ?Union)

   Union constraint of a list of sets

Arguments
   SetVars             A list of variables.
   Union               A variable or a ground set.

Type
   library(cardinal)

Description
Constraint: Union is the set union of SetVars.
		Any variable in SetVars that is not yet a set domain variable, is declared
		as such using Union's lub.

Fail Conditions
   Fails if Union can not be the union of SetVars.

Resatisfiable
   No.

Examples
   
?- all_union([[8,a,9],[i,8,o],[],[a,8,5]], U).
U = [5,8,9,a,i,o].

?- all_union([X,Z,S,Y,T], [8,9]), glb_poss(X,GX,PX), glb_poss(Y,GY,PY).
GX = [], PX = [8,9], GY = [], PY = [8,9]

?- X `:: [a]+[b,c], all_union([X,[b,n],X], U), glb_poss(X,GX,PX), glb_poss(U,GU,PU).
GX = [a], PX = [b,c], GU = [a,b,n], PU = [c]

?- sets([X,Y,Z],[a,b],[d,g,h,j],[cardinality:4]), all_union([X,Y,Z],U), #(U,C), fd:dom(C,DomC).
DomC = [4,5,6]

?- sets([X,Y,Z],[a,b],[d,g,h,j],[]), all_union([X,Y,Z],U), #(U,4), #(Y,C), fd:dom(C,DomC).
DomC = [2,3,4]


See Also
   `= / 2, all_disjoint / 1
