NO Problem 1: (VAR v_NonEmpty:S L:S N:S X:S) (RULES U11(tt) -> s(length(L: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 zeros -> cons(0) ) Problem 1: Extra Variables Processor: -> Rules: U11(tt) -> s(length(L: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 zeros -> cons(0) -> The system has extra variables. The problem is infinite.