NO Problem 1: (VAR v_NonEmpty:S N:S X:S XS:S Y:S YS:S ZS:S) (RULES U101(tt) -> fst(splitAt(N:S,XS:S)) U11(tt) -> snd(splitAt(N:S,XS:S)) U21(tt) -> X:S U31(tt) -> N:S U41(tt) -> cons(N:S) U51(tt) -> head(afterNth(N:S,XS:S)) U61(tt) -> Y:S U71(tt) -> pair(nil,XS:S) U81(tt) -> U82(splitAt(N:S,XS:S)) U82(pair(YS:S,ZS:S)) -> pair(cons(X:S),ZS:S) U91(tt) -> XS:S afterNth(N:S,XS:S) -> U11(and(isNatural)) and(tt) -> X:S fst(pair(X:S,Y:S)) -> U21(and(isLNat)) head(cons(N:S)) -> U31(and(isNatural)) isLNat -> and(isNatural) isLNat -> isLNat isLNat -> isNatural isLNat -> isPLNat isLNat -> tt isNatural -> and(isNatural) isNatural -> isLNat isNatural -> isNatural isNatural -> tt isPLNat -> and(isLNat) isPLNat -> and(isNatural) natsFrom(N:S) -> U41(isNatural) sel(N:S,XS:S) -> U51(and(isNatural)) snd(pair(X:S,Y:S)) -> U61(and(isLNat)) splitAt(0,XS:S) -> U71(isLNat) splitAt(s(N:S),cons(X:S)) -> U81(and(isNatural)) tail(cons(N:S)) -> U91(and(isNatural)) take(N:S,XS:S) -> U101(and(isNatural)) ) Problem 1: Extra Variables Processor: -> Rules: U101(tt) -> fst(splitAt(N:S,XS:S)) U11(tt) -> snd(splitAt(N:S,XS:S)) U21(tt) -> X:S U31(tt) -> N:S U41(tt) -> cons(N:S) U51(tt) -> head(afterNth(N:S,XS:S)) U61(tt) -> Y:S U71(tt) -> pair(nil,XS:S) U81(tt) -> U82(splitAt(N:S,XS:S)) U82(pair(YS:S,ZS:S)) -> pair(cons(X:S),ZS:S) U91(tt) -> XS:S afterNth(N:S,XS:S) -> U11(and(isNatural)) and(tt) -> X:S fst(pair(X:S,Y:S)) -> U21(and(isLNat)) head(cons(N:S)) -> U31(and(isNatural)) isLNat -> and(isNatural) isLNat -> isLNat isLNat -> isNatural isLNat -> isPLNat isLNat -> tt isNatural -> and(isNatural) isNatural -> isLNat isNatural -> isNatural isNatural -> tt isPLNat -> and(isLNat) isPLNat -> and(isNatural) natsFrom(N:S) -> U41(isNatural) sel(N:S,XS:S) -> U51(and(isNatural)) snd(pair(X:S,Y:S)) -> U61(and(isLNat)) splitAt(0,XS:S) -> U71(isLNat) splitAt(s(N:S),cons(X:S)) -> U81(and(isNatural)) tail(cons(N:S)) -> U91(and(isNatural)) take(N:S,XS:S) -> U101(and(isNatural)) -> The system has extra variables. The problem is infinite.