If heuristic UpDown is 'up' then, for each set variable, for each element in its poss (lub\glb), inclusion is tried first; otherwise (down) exclusion is tried first.
?- S `:: [a] + [b, c], T `:: [1] + [2], set_labeling(up, [S, T]). S = [a, b, c], T = [1, 2] ; S = [a, b, c], T = [1] ; S = [a, b], T = [1, 2] ; S = [a, b], T = [1] ; S = [a, c], T = [1, 2] ; S = [a, c], T = [1] ; S = [a], T = [1, 2] ; S = [a], T = [1] ; no ?- S `:: [a] + [b, c], T `:: [1] + [2], set_labeling(down, [S, T]). S = [a], T = [1] ; S = [a], T = [1, 2] ; S = [a, c], T = [1] ; S = [a, c], T = [1, 2] ; S = [a, b], T = [1] ; S = [a, b], T = [1, 2] ; S = [a, b, c], T = [1] ; S = [a, b, c], T = [1, 2] ; no