member(X, [X|Rest]). member(X, [Head|Rest]) :- member(X, Rest). not-member(Element, []). not-member(Element, [First | Left-over]) :- _1 .= princ-to-string(First), _2 .= princ-to-string(Element), string/=(_1, _2), not-member(Element, Left-over).