Reverse the elements of a list
rev([], []). rev([Head|Tail], List) :- append(X, [Head], List), rev(Tail, X).
Find the smallest element of a list.
min([X], X). min([Head1|[Head2|Tail]], X) :- Head1 =< Head2, min([Head1|Tail], X). min([Head1|[Head2|Tail]], X) :- Head1 > Head2, min([Head2|Tail], X).
Sort the elements of a list.
insert(X, [], [X]). insert(X, [H|T], [X,H|T]) :- X =< H. insert(X, [H|T], [H|Rest]) :- X > H, insert(X, T, Rest). isort([], Acc, Acc). isort([H|T], Acc, Sorted) :- insert(H, Acc, Acc2), isort(T, Acc2, Sorted).