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 LPO with precedence: reviter > rev > @ > . > nil )