domains s=symbol ls=s* predicates elem(s,ls) usup(ls,ls) clauses elem(X,[X|_]). elem(X,[_|O]):-elem(X,O). usup([],[]). usup([G|O],L):-elem(G,O),!,usup(O,L). usup([G|O],L):-usup(O,L1),L=[G|L1].