% reverse(Xs, Ys) :- Ys is a reverse of the list Xs. reverse([], []). reverse([X | Xs], Ys) :- reverse(Xs, Zs), app(Zs, [X], Ys). % augmented by the APPEND program app([], Ys, Ys). app([X | Xs], Ys, [X | Zs]) :- app(Xs, Ys, Zs).