
refine(++UpDown, ?SetVar)

   Refine a set variable's domain

Arguments
   UpDown              Atom ('up' or 'down').
   SetVar              A set variable.

Type
   library(cardinal)

Description
Pick the first element of SetVar's poss (lub\glb) and try to include it
		in its glb, or to definitely exclude it from the domain.
		If heuristic UpDown is 'up' then inclusion is tried first; otherwise (down)
		exclusion is tried first.

Fail Conditions
   Fails if Var can not be refined (it is either ground or both the inclusion
		and exclusion of the first element of its poss leads to a failure due to
		unsatisfied constraints).

Resatisfiable
   Yes.

Examples
   
?- S `:: [a]+[b,c], refine(up,S), glb_poss(S,G,P).
G = [a,b], P = [c] ;
G = [a], P = [c] ;
no

?- S `:: [a]+[b,c], refine(down,S), glb_poss(S,G,P).
G = [a], P = [c] ;
G = [a,b], P = [c] ;
no


See Also
   set_labeling / 2, set_labeling / 1
