difflist([H|T],[H|D]-P) :- difflist(T,D-P). difflist([],X-X). normlist(L-P,L):- P = []. join(A-B, B-C, A-C). mergesort([],[]). mergesort([X],[X]). mergesort([A,B|Z],R):- split([A,B|Z],X,Y), mergesort(X,Xs), mergesort(Y,Ys), merge(Xs,Ys,R). split([],[],[]). split([X],[X],[]). split([A,B|T],[A|X],[B|Y]) :- split(T,X,Y). merge([], [], []). merge(X,[],X). merge([],X,X). merge([H1|X], [H2|Y], R) :- H1 < H2, R=[H1|R1], merge(X, [H2|Y], R1); H1 >= H2, R=[H2|R1], merge([H1|X], Y, R1).