NO Problem 1: (VAR v_NonEmpty:S X:S Y:S) (RULES filter(s(s(X:S)),cons(Y:S)) -> if(divides(s(s(X:S)),Y:S)) from(X:S) -> cons(X:S) head(cons(X:S)) -> X:S if(ffalse) -> Y:S if(ttrue) -> X:S primes -> sieve(from(s(s(0)))) sieve(cons(X:S)) -> cons(X:S) tail(cons(X:S)) -> Y:S ) Problem 1: Extra Variables Processor: -> Rules: filter(s(s(X:S)),cons(Y:S)) -> if(divides(s(s(X:S)),Y:S)) from(X:S) -> cons(X:S) head(cons(X:S)) -> X:S if(ffalse) -> Y:S if(ttrue) -> X:S primes -> sieve(from(s(s(0)))) sieve(cons(X:S)) -> cons(X:S) tail(cons(X:S)) -> Y:S -> The system has extra variables. The problem is infinite.