% List predicates concat([],L,L). concat([X|L1],L2,[X|L1L2]) :- concat(L1,L2,L1L2). in(X,[X|_]). in(X,[Y|L]) :- Y \= X, in(X,L). subsat([],_). subsat([X|A],B) :- in(X,B), subsat(A,B). %debag([],[]). %debag([X],[X]). %debag([X|Xs],L) :- debag(Xs,M), appnd([X],M,L). pick(X, [X|Xs],Xs). pick(X, [Y|Ys],Xs) :- Y \= X, pick(X,Ys,Xs). membur(X, [X|_]). membur(X, [_|T]) :- membur(X,T). sorted([]). sorted([_]). sorted([A,B|T]) :- A =< B, sorted([B|T]). appnd([],A,[A]). appnd([H|T],A,[H|L]) :- appnd(T,A,L).