NO Problem 1: (VAR v_NonEmpty:S IL:S L:S M:S N:S X:S) (RULES U11(tt) -> s(length(L:S)) U21(tt) -> nil U31(tt) -> cons(N:S) and(tt) -> X:S isNat -> isNat isNat -> isNatList isNat -> tt isNatIList -> and(isNat) isNatIList -> isNatList isNatIList -> tt isNatList -> and(isNat) isNatList -> tt length(cons(N:S)) -> U11(and(isNatList)) length(nil) -> 0 take(0,IL:S) -> U21(isNatIList) take(s(M:S),cons(N:S)) -> U31(and(isNatIList)) zeros -> cons(0) ) Problem 1: Extra Variables Processor: -> Rules: U11(tt) -> s(length(L:S)) U21(tt) -> nil U31(tt) -> cons(N:S) and(tt) -> X:S isNat -> isNat isNat -> isNatList isNat -> tt isNatIList -> and(isNat) isNatIList -> isNatList isNatIList -> tt isNatList -> and(isNat) isNatList -> tt length(cons(N:S)) -> U11(and(isNatList)) length(nil) -> 0 take(0,IL:S) -> U21(isNatIList) take(s(M:S),cons(N:S)) -> U31(and(isNatIList)) zeros -> cons(0) -> The system has extra variables. The problem is infinite.