YES (VAR y x z) (RULES @(.(y,x),z) -> .(y,@(x,z)) @(reviter(y,x),z) -> reviter(y,@(x,z)) @(nil(),y) -> y @(@(y,x),z) -> @(y,@(x,z)) reviter(nil(),y) -> y reviter(.(y,x),z) -> reviter(x,.(y,z)) rev(y) -> reviter(y,nil()) )