YES (VAR x y z) (RULES @(rev(x),nil()) -> rev(x) reviter(x,y) -> @(rev(x),y) rev(.(x,y)) -> @(rev(y),.(x,nil())) rev(nil()) -> nil() @(@(x,y),z) -> @(x,@(y,z)) @(.(x,y),z) -> .(x,@(y,z)) @(nil(),y) -> y ) (COMMENT Termination is shown by ELPO with interpretations on natural numbers @_A(x1,x2) = x2 nil_A = 1 ._A(x1,x2) = 0 reviter_A(x1,x2) = x2 rev_A(x1) = 1 @#_A(x1,x2) = x2 nil#_A = 0 .#_A(x1,x2) = x2 reviter#_A(x1,x2) = 0 and precedence: reviter > rev > @ > . > nil )