findmin([], Sofar, Sofar). findmin([H|T], Sofar, M) :- H < Sofar, findmin(T, H, M). findmin([H|T], Sofar, M) :- H >= Sofar, findmin(T, Sofar, M). min([H|T], M) :- findmin(T, H, M).