(VAR x xs ys ) (RULES app(nil, xs) -> nil app(cons(x, xs), ys) -> cons(x, app(xs, ys)) rev(nil) -> nil rev(cons(x, xs)) -> append(xs, rev(cons(x, nil))) )