rev1(X,Y):-rev(X,[],Y). rev([],X,X). rev([A|Rest],Y,Z):- rev(Rest,[A|Y],Z). rev2([],[]). rev2([A|As],Bs):- reverse(As,Cs), append(Cs,[A],Bs). min1(A,A,A). min1(A,B,A):-A