YES TRS: natsFrom(N) -> cons(N,n__natsFrom(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) activate(n__natsFrom(X)) -> natsFrom(X) activate(X) -> X max/plus interpretations on N: natsFrom_A(x1) = max{11, 1 + x1} natsFrom#_A(x1) = max{12, 1 + x1} cons_A(x1,x2) = max{6, -3 + x1, x2} cons#_A(x1,x2) = max{12, -4, 10} n__natsFrom_A(x1) = max{11, 1 + x1} n__natsFrom#_A(x1) = max{0, 0} s_A(x1) = max{9, x1} s#_A(x1) = max{12, x1} fst_A(x1) = max{5, -14 + x1} fst#_A(x1) = max{24, 0} pair_A(x1,x2) = max{1, 14 + x1, 3 + x2} pair#_A(x1,x2) = max{12, 5 + x1, -2} snd_A(x1) = max{21, -3 + x1} snd#_A(x1) = max{0, 0} splitAt_A(x1,x2) = max{24, 18 + x1, 17 + x2} splitAt#_A(x1,x2) = max{24, 15 + x1, 13 + x2} 0_A = 0 0#_A = 1 nil_A = 7 nil#_A = 0 u_A(x1,x2,x3,x4) = max{19, x1, 19, 11 + x3, 25} u#_A(x1,x2,x3,x4) = max{11, -4 + x1, -1, 2 + x3, 12} activate_A(x1) = max{10, x1} activate#_A(x1) = max{12, x1} head_A(x1) = max{23, 3 + x1} head#_A(x1) = max{16, -4 + x1} tail_A(x1) = max{10, x1} tail#_A(x1) = max{1, 7 + x1} sel_A(x1,x2) = max{0, 22 + x1, 25 + x2} sel#_A(x1,x2) = max{17, 24 + x1, 19 + x2} afterNth_A(x1,x2) = max{20, 19 + x1, 22 + x2} afterNth#_A(x1,x2) = max{24, 20 + x1, 16 + x2} take_A(x1,x2) = max{0, 4 + x1, 10 + x2} take#_A(x1,x2) = max{24, 16 + x1, 13 + x2} precedence: 0 = sel > nil = head = afterNth = take > fst = snd = splitAt > u = tail > pair = activate > natsFrom > cons = n__natsFrom = s