isEmpty nil true isEmpty cons x xs false last cons x nil x last cons x cons y ys last cons y ys dropLast nil nil dropLast cons x nil nil dropLast cons x cons y ys cons x dropLast cons y ys append nil ys ys append cons x xs ys cons x append xs ys reverse xs rev xs nil rev xs ys if isEmpty xs dropLast xs append ys last xs ys if true xs ys zs zs if false xs ys zs rev xs ys isEmpty 1 nil 0 true 0 cons 2 false 0 last 1 dropLast 1 append 2 reverse 1 rev 2 if 4 FULL ./TRS/secret06/aprove/reverse.trs