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