NO Problem 1: (VAR v_NonEmpty:S X:S Y:S) (RULES diff(X:S,Y:S) -> if(leq(X:S,Y:S)) if(ffalse) -> Y:S if(ttrue) -> X:S leq(0,Y:S) -> ttrue leq(s(X:S),0) -> ffalse leq(s(X:S),s(Y:S)) -> leq(X:S,Y:S) p(0) -> 0 p(s(X:S)) -> X:S ) Problem 1: Extra Variables Processor: -> Rules: diff(X:S,Y:S) -> if(leq(X:S,Y:S)) if(ffalse) -> Y:S if(ttrue) -> X:S leq(0,Y:S) -> ttrue leq(s(X:S),0) -> ffalse leq(s(X:S),s(Y:S)) -> leq(X:S,Y:S) p(0) -> 0 p(s(X:S)) -> X:S -> The system has extra variables. The problem is infinite.