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 max/plus interpretations on N: natsFrom_A(x1) = max{2, -2 + x1} natsFrom#_A(x1) = max{1, 3} cons_A(x1,x2) = max{1, -2 + x1, x2} cons#_A(x1,x2) = max{0, 0, 2} n__natsFrom_A(x1) = max{1, -2 + x1} n__natsFrom#_A(x1) = max{3, 1} n__s_A(x1) = max{1, x1} n__s#_A(x1) = max{1, 2} fst_A(x1) = max{8, 1 + x1} fst#_A(x1) = max{6, 4} pair_A(x1,x2) = max{5, -1 + x1, -1 + x2} pair#_A(x1,x2) = max{3, 4, 4} snd_A(x1) = max{3, 2 + x1} snd#_A(x1) = max{8, 6} splitAt_A(x1,x2) = max{7, 1 + x1, -1 + x2} splitAt#_A(x1,x2) = max{4, 4, 4} 0_A = 7 0#_A = 4 nil_A = 9 nil#_A = 3 s_A(x1) = max{2, x1} s#_A(x1) = max{3, 3} u_A(x1,x2,x3,x4) = max{4, x1, 1, -3 + x3, -3} u#_A(x1,x2,x3,x4) = max{4, 4, 4, 4, 4} activate_A(x1) = max{8, x1} activate#_A(x1) = max{4, -1} head_A(x1) = max{11, 2 + x1} head#_A(x1) = max{9, 9} tail_A(x1) = max{8, 6 + x1} tail#_A(x1) = max{5, 0} sel_A(x1,x2) = max{3, 11 + x1, 3 + x2} sel#_A(x1,x2) = max{8, 10, 10} afterNth_A(x1,x2) = max{2, 9 + x1, 1 + x2} afterNth#_A(x1,x2) = max{5, 7, 10} take_A(x1,x2) = max{7, 8 + x1, 1 + x2} take#_A(x1,x2) = max{5, 7, 7} precedence: take > fst = splitAt > u > cons = pair = tail = sel > 0 = s = activate = head = afterNth > natsFrom = snd = nil > n__natsFrom = n__s