(VAR a k ls x) (RULES rev(ls) -> r1(ls,empty) r1(empty,a) -> a r1(cons(x,k),a) -> r1(k,cons(x,a)) )