YES(?,O(n^1)) We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We add following dependency tuples: Strict DPs: { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , splitAt^#(0(), XS) -> c_6() , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , activate^#(X) -> c_8() , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , head^#(cons(N, XS)) -> c_10() , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , splitAt^#(0(), XS) -> c_6() , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , activate^#(X) -> c_8() , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , head^#(cons(N, XS)) -> c_10() , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We estimate the number of application of {1,2,3,4,6,8,10} by applications of Pre({1,2,3,4,6,8,10}) = {5,7,9,11,12,13,14}. Here rules are labeled as follows: DPs: { 1: natsFrom^#(N) -> c_1() , 2: natsFrom^#(X) -> c_2() , 3: fst^#(pair(XS, YS)) -> c_3() , 4: snd^#(pair(XS, YS)) -> c_4() , 5: splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , 6: splitAt^#(0(), XS) -> c_6() , 7: u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , 8: activate^#(X) -> c_8() , 9: activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , 10: head^#(cons(N, XS)) -> c_10() , 11: tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , 12: sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , 13: afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , 14: take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } Weak DPs: { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(0(), XS) -> c_6() , activate^#(X) -> c_8() , head^#(cons(N, XS)) -> c_10() } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We estimate the number of application of {3} by applications of Pre({3}) = {1,2,4}. Here rules are labeled as follows: DPs: { 1: splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , 2: u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , 3: activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , 4: tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , 5: sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , 6: afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , 7: take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) , 8: natsFrom^#(N) -> c_1() , 9: natsFrom^#(X) -> c_2() , 10: fst^#(pair(XS, YS)) -> c_3() , 11: snd^#(pair(XS, YS)) -> c_4() , 12: splitAt^#(0(), XS) -> c_6() , 13: activate^#(X) -> c_8() , 14: head^#(cons(N, XS)) -> c_10() } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } Weak DPs: { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(0(), XS) -> c_6() , activate^#(X) -> c_8() , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , head^#(cons(N, XS)) -> c_10() } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We estimate the number of application of {2,3} by applications of Pre({2,3}) = {1}. Here rules are labeled as follows: DPs: { 1: splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , 2: u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , 3: tail^#(cons(N, XS)) -> c_11(activate^#(XS)) , 4: sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , 5: afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , 6: take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) , 7: natsFrom^#(N) -> c_1() , 8: natsFrom^#(X) -> c_2() , 9: fst^#(pair(XS, YS)) -> c_3() , 10: snd^#(pair(XS, YS)) -> c_4() , 11: splitAt^#(0(), XS) -> c_6() , 12: activate^#(X) -> c_8() , 13: activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , 14: head^#(cons(N, XS)) -> c_10() } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } Weak DPs: { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(0(), XS) -> c_6() , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , activate^#(X) -> c_8() , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , head^#(cons(N, XS)) -> c_10() , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { natsFrom^#(N) -> c_1() , natsFrom^#(X) -> c_2() , fst^#(pair(XS, YS)) -> c_3() , snd^#(pair(XS, YS)) -> c_4() , splitAt^#(0(), XS) -> c_6() , u^#(pair(YS, ZS), N, X, XS) -> c_7(activate^#(X)) , activate^#(X) -> c_8() , activate^#(n__natsFrom(X)) -> c_9(natsFrom^#(X)) , head^#(cons(N, XS)) -> c_10() , tail^#(cons(N, XS)) -> c_11(activate^#(XS)) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) Due to missing edges in the dependency-graph, the right-hand sides of following rules could be simplified: { splitAt^#(s(N), cons(X, XS)) -> c_5(u^#(splitAt(N, activate(XS)), N, X, activate(XS)), splitAt^#(N, activate(XS)), activate^#(XS), activate^#(XS)) , sel^#(N, XS) -> c_12(head^#(afterNth(N, XS)), afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_13(snd^#(splitAt(N, XS)), splitAt^#(N, XS)) , take^#(N, XS) -> c_14(fst^#(splitAt(N, XS)), splitAt^#(N, XS)) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) , sel^#(N, XS) -> c_2(afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) , take^#(N, XS) -> c_4(splitAt^#(N, XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , fst(pair(XS, YS)) -> XS , snd(pair(XS, YS)) -> YS , splitAt(s(N), cons(X, XS)) -> u(splitAt(N, activate(XS)), N, X, activate(XS)) , splitAt(0(), XS) -> pair(nil(), XS) , u(pair(YS, ZS), N, X, XS) -> pair(cons(activate(X), YS), ZS) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) , head(cons(N, XS)) -> N , tail(cons(N, XS)) -> activate(XS) , sel(N, XS) -> head(afterNth(N, XS)) , afterNth(N, XS) -> snd(splitAt(N, XS)) , take(N, XS) -> fst(splitAt(N, XS)) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) We replace rewrite rules by usable rules: Weak Usable Rules: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) , sel^#(N, XS) -> c_2(afterNth^#(N, XS)) , afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) , take^#(N, XS) -> c_4(splitAt^#(N, XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) Consider the dependency graph 1: splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) -->_1 splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) :1 2: sel^#(N, XS) -> c_2(afterNth^#(N, XS)) -->_1 afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) :3 3: afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) -->_1 splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) :1 4: take^#(N, XS) -> c_4(splitAt^#(N, XS)) -->_1 splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) :1 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). { sel^#(N, XS) -> c_2(afterNth^#(N, XS)) , take^#(N, XS) -> c_4(splitAt^#(N, XS)) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) , afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) Consider the dependency graph 1: splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) -->_1 splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) :1 2: afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) -->_1 splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) :1 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). { afterNth^#(N, XS) -> c_3(splitAt^#(N, XS)) } We are left with following problem, upon which TcT provides the certificate YES(?,O(n^1)). Strict DPs: { splitAt^#(s(N), cons(X, XS)) -> c_1(splitAt^#(N, activate(XS))) } Weak Trs: { natsFrom(N) -> cons(N, n__natsFrom(s(N))) , natsFrom(X) -> n__natsFrom(X) , activate(X) -> X , activate(n__natsFrom(X)) -> natsFrom(X) } Obligation: innermost runtime complexity Answer: YES(?,O(n^1)) The input was oriented with the instance of 'Small Polynomial Path Order (PS)' as induced by the safe mapping safe(natsFrom) = {}, safe(cons) = {1, 2}, safe(n__natsFrom) = {1}, safe(s) = {1}, safe(activate) = {}, safe(splitAt^#) = {2}, safe(c_1) = {} and precedence natsFrom ~ activate, natsFrom ~ splitAt^#, activate ~ splitAt^# . Following symbols are considered recursive: {natsFrom, activate, splitAt^#} The recursion depth is 1. Further, following argument filtering is employed: pi(natsFrom) = [], pi(cons) = [], pi(n__natsFrom) = [1], pi(s) = [1], pi(activate) = [], pi(splitAt^#) = [1], pi(c_1) = [1] Usable defined function symbols are a subset of: {splitAt^#} For your convenience, here are the satisfied ordering constraints: pi(splitAt^#(s(N), cons(X, XS))) = splitAt^#(s(; N);) > c_1(splitAt^#(N;);) = pi(c_1(splitAt^#(N, activate(XS)))) Hurray, we answered YES(?,O(n^1))