append([],L2,L2). append([H|T],L2,[H|L3]):- append(T,L2,L3). partition(E,[],[],[]). partition(E,[H|T],[H|T1],L2):- H < E, partition(E,T,T1,L2). partition(E,[H|T],L1,[H|T2]):- H @>=E, partition(E,T,L1,T2). isort([],[]). isort([H|T],F):- isort(T,L), partition(H,L,L1,L2), append(L1,[H|L2],F).