
appnd([],L,L).
appnd([X|L],K,[X|M]) :- appnd(L,K,M).

memb(X,[X|_]).
memb(X,[_|L]) :- memb(X,L).

middle(L,K) :- append(_,Tail,K), append(L,_,Tail).

ordered([]).
ordered([_]).
ordered([X,Y|L]) :- X < Y, ordered([Y|L]).

perm([],[]).
perm(L,[X|K]) :- appnd(L1,[X|L2],L), appnd(L1,L2,L3), perm(L3,K).

psort(L,K) :- perm(L,K), ordered(K).

