YES TRS: natsFrom(N) -> cons(N,n__natsFrom(n__s(N))) fst(pair(XS,YS)) -> XS snd(pair(XS,YS)) -> YS splitAt(0(),XS) -> pair(nil(),XS) splitAt(s(N),cons(X,XS)) -> u(splitAt(N,activate(XS)),N,X,activate(XS)) u(pair(YS,ZS),N,X,XS) -> pair(cons(activate(X),YS),ZS) head(cons(N,XS)) -> N tail(cons(N,XS)) -> activate(XS) sel(N,XS) -> head(afterNth(N,XS)) take(N,XS) -> fst(splitAt(N,XS)) afterNth(N,XS) -> snd(splitAt(N,XS)) natsFrom(X) -> n__natsFrom(X) s(X) -> n__s(X) activate(n__natsFrom(X)) -> natsFrom(activate(X)) activate(n__s(X)) -> s(activate(X)) activate(X) -> X linear polynomial interpretations on N: natsFrom_A(x1) = x1 + 1 natsFrom#_A(x1) = 1 cons_A(x1,x2) = x1 + x2 cons#_A(x1,x2) = 0 n__natsFrom_A(x1) = x1 + 1 n__natsFrom#_A(x1) = 0 n__s_A(x1) = 0 n__s#_A(x1) = 0 fst_A(x1) = x1 fst#_A(x1) = 0 pair_A(x1,x2) = x1 + x2 + 1 pair#_A(x1,x2) = 2 snd_A(x1) = x1 snd#_A(x1) = 0 splitAt_A(x1,x2) = x2 + 2 splitAt#_A(x1,x2) = 4 0_A = 1 0#_A = 6 nil_A = 1 nil#_A = 5 s_A(x1) = 0 s#_A(x1) = 1 u_A(x1,x2,x3,x4) = x1 + x3 u#_A(x1,x2,x3,x4) = 3 activate_A(x1) = x1 activate#_A(x1) = 2 head_A(x1) = x1 head#_A(x1) = 5 tail_A(x1) = x1 tail#_A(x1) = 3 sel_A(x1,x2) = x1 + x2 + 2 sel#_A(x1,x2) = x1 + x2 + 6 afterNth_A(x1,x2) = x1 + x2 + 2 afterNth#_A(x1,x2) = x1 + x2 + 5 take_A(x1,x2) = x1 + x2 + 2 take#_A(x1,x2) = x1 + x2 + 5 precedence: 0 = u = head = sel > fst = pair = snd = nil = afterNth = take > cons = splitAt = tail > activate > natsFrom > n__natsFrom = n__s > s