YES(O(1),O(n^1)) 587.23/148.08 YES(O(1),O(n^1)) 587.23/148.08 587.23/148.08 We are left with following problem, upon which TcT provides the 587.23/148.08 certificate YES(O(1),O(n^1)). 587.23/148.08 587.23/148.08 Strict Trs: 587.23/148.08 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.08 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.08 , activate(X) -> X 587.23/148.08 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.08 , activate(n__s(X)) -> s(activate(X)) 587.23/148.08 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.08 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.08 , splitAt(s(N), cons(X, XS)) -> U61(tt(), N, X, activate(XS)) 587.23/148.08 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.08 , U22(tt(), X) -> activate(X) 587.23/148.08 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.08 , U32(tt(), N) -> activate(N) 587.23/148.08 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.08 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.08 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.08 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.08 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.08 , U52(tt(), Y) -> activate(Y) 587.23/148.08 , U61(tt(), N, X, XS) -> 587.23/148.08 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U62(tt(), N, X, XS) -> 587.23/148.08 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U63(tt(), N, X, XS) -> 587.23/148.08 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.08 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.08 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.08 , U72(tt(), XS) -> activate(XS) 587.23/148.08 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.08 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.08 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.08 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.08 , natsFrom(X) -> n__natsFrom(X) 587.23/148.08 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.08 , s(X) -> n__s(X) 587.23/148.08 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.08 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.08 Obligation: 587.23/148.08 innermost runtime complexity 587.23/148.08 Answer: 587.23/148.08 YES(O(1),O(n^1)) 587.23/148.08 587.23/148.08 Arguments of following rules are not normal-forms: 587.23/148.08 587.23/148.08 { splitAt(s(N), cons(X, XS)) -> U61(tt(), N, X, activate(XS)) } 587.23/148.08 587.23/148.08 All above mentioned rules can be savely removed. 587.23/148.08 587.23/148.08 We are left with following problem, upon which TcT provides the 587.23/148.08 certificate YES(O(1),O(n^1)). 587.23/148.08 587.23/148.08 Strict Trs: 587.23/148.08 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.08 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.08 , activate(X) -> X 587.23/148.08 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.08 , activate(n__s(X)) -> s(activate(X)) 587.23/148.08 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.08 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.08 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.08 , U22(tt(), X) -> activate(X) 587.23/148.08 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.08 , U32(tt(), N) -> activate(N) 587.23/148.08 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.08 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.08 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.08 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.08 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.08 , U52(tt(), Y) -> activate(Y) 587.23/148.08 , U61(tt(), N, X, XS) -> 587.23/148.08 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U62(tt(), N, X, XS) -> 587.23/148.08 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U63(tt(), N, X, XS) -> 587.23/148.08 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.08 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.08 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.08 , U72(tt(), XS) -> activate(XS) 587.23/148.08 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.08 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.08 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.08 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.08 , natsFrom(X) -> n__natsFrom(X) 587.23/148.08 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.08 , s(X) -> n__s(X) 587.23/148.08 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.08 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.08 Obligation: 587.23/148.08 innermost runtime complexity 587.23/148.08 Answer: 587.23/148.08 YES(O(1),O(n^1)) 587.23/148.08 587.23/148.08 We add the following dependency tuples: 587.23/148.08 587.23/148.08 Strict DPs: 587.23/148.08 { U11^#(tt(), N, XS) -> 587.23/148.08 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U12^#(tt(), N, XS) -> 587.23/148.08 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , activate^#(X) -> c_3() 587.23/148.08 , activate^#(n__natsFrom(X)) -> 587.23/148.08 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.08 , activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.08 , snd^#(pair(X, Y)) -> c_6(U51^#(tt(), Y)) 587.23/148.08 , splitAt^#(0(), XS) -> c_7() 587.23/148.08 , natsFrom^#(N) -> c_27() 587.23/148.08 , natsFrom^#(X) -> c_28() 587.23/148.08 , s^#(X) -> c_30() 587.23/148.08 , U51^#(tt(), Y) -> c_16(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.08 , U21^#(tt(), X) -> c_8(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.08 , U22^#(tt(), X) -> c_9(activate^#(X)) 587.23/148.08 , U31^#(tt(), N) -> c_10(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.08 , U32^#(tt(), N) -> c_11(activate^#(N)) 587.23/148.08 , U41^#(tt(), N, XS) -> 587.23/148.08 c_12(U42^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U42^#(tt(), N, XS) -> 587.23/148.08 c_13(head^#(afterNth(activate(N), activate(XS))), 587.23/148.08 afterNth^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , head^#(cons(N, XS)) -> c_14(U31^#(tt(), N)) 587.23/148.08 , afterNth^#(N, XS) -> c_15(U11^#(tt(), N, XS)) 587.23/148.08 , U52^#(tt(), Y) -> c_17(activate^#(Y)) 587.23/148.08 , U61^#(tt(), N, X, XS) -> 587.23/148.08 c_18(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U62^#(tt(), N, X, XS) -> 587.23/148.08 c_19(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U63^#(tt(), N, X, XS) -> 587.23/148.08 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS), 587.23/148.08 activate^#(X)) 587.23/148.08 , U64^#(pair(YS, ZS), X) -> c_21(activate^#(X)) 587.23/148.08 , U71^#(tt(), XS) -> 587.23/148.08 c_22(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , U72^#(tt(), XS) -> c_23(activate^#(XS)) 587.23/148.08 , U81^#(tt(), N, XS) -> 587.23/148.08 c_24(U82^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U82^#(tt(), N, XS) -> 587.23/148.08 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , fst^#(pair(X, Y)) -> c_26(U21^#(tt(), X)) 587.23/148.08 , sel^#(N, XS) -> c_29(U41^#(tt(), N, XS)) 587.23/148.08 , tail^#(cons(N, XS)) -> 587.23/148.08 c_31(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , take^#(N, XS) -> c_32(U81^#(tt(), N, XS)) } 587.23/148.08 587.23/148.08 and mark the set of starting terms. 587.23/148.08 587.23/148.08 We are left with following problem, upon which TcT provides the 587.23/148.08 certificate YES(O(1),O(n^1)). 587.23/148.08 587.23/148.08 Strict DPs: 587.23/148.08 { U11^#(tt(), N, XS) -> 587.23/148.08 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U12^#(tt(), N, XS) -> 587.23/148.08 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , activate^#(X) -> c_3() 587.23/148.08 , activate^#(n__natsFrom(X)) -> 587.23/148.08 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.08 , activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.08 , snd^#(pair(X, Y)) -> c_6(U51^#(tt(), Y)) 587.23/148.08 , splitAt^#(0(), XS) -> c_7() 587.23/148.08 , natsFrom^#(N) -> c_27() 587.23/148.08 , natsFrom^#(X) -> c_28() 587.23/148.08 , s^#(X) -> c_30() 587.23/148.08 , U51^#(tt(), Y) -> c_16(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.08 , U21^#(tt(), X) -> c_8(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.08 , U22^#(tt(), X) -> c_9(activate^#(X)) 587.23/148.08 , U31^#(tt(), N) -> c_10(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.08 , U32^#(tt(), N) -> c_11(activate^#(N)) 587.23/148.08 , U41^#(tt(), N, XS) -> 587.23/148.08 c_12(U42^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U42^#(tt(), N, XS) -> 587.23/148.08 c_13(head^#(afterNth(activate(N), activate(XS))), 587.23/148.08 afterNth^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , head^#(cons(N, XS)) -> c_14(U31^#(tt(), N)) 587.23/148.08 , afterNth^#(N, XS) -> c_15(U11^#(tt(), N, XS)) 587.23/148.08 , U52^#(tt(), Y) -> c_17(activate^#(Y)) 587.23/148.08 , U61^#(tt(), N, X, XS) -> 587.23/148.08 c_18(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U62^#(tt(), N, X, XS) -> 587.23/148.08 c_19(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U63^#(tt(), N, X, XS) -> 587.23/148.08 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS), 587.23/148.08 activate^#(X)) 587.23/148.08 , U64^#(pair(YS, ZS), X) -> c_21(activate^#(X)) 587.23/148.08 , U71^#(tt(), XS) -> 587.23/148.08 c_22(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , U72^#(tt(), XS) -> c_23(activate^#(XS)) 587.23/148.08 , U81^#(tt(), N, XS) -> 587.23/148.08 c_24(U82^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U82^#(tt(), N, XS) -> 587.23/148.08 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , fst^#(pair(X, Y)) -> c_26(U21^#(tt(), X)) 587.23/148.08 , sel^#(N, XS) -> c_29(U41^#(tt(), N, XS)) 587.23/148.08 , tail^#(cons(N, XS)) -> 587.23/148.08 c_31(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , take^#(N, XS) -> c_32(U81^#(tt(), N, XS)) } 587.23/148.08 Weak Trs: 587.23/148.08 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.08 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.08 , activate(X) -> X 587.23/148.08 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.08 , activate(n__s(X)) -> s(activate(X)) 587.23/148.08 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.08 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.08 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.08 , U22(tt(), X) -> activate(X) 587.23/148.08 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.08 , U32(tt(), N) -> activate(N) 587.23/148.08 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.08 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.08 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.08 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.08 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.08 , U52(tt(), Y) -> activate(Y) 587.23/148.08 , U61(tt(), N, X, XS) -> 587.23/148.08 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U62(tt(), N, X, XS) -> 587.23/148.08 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.08 , U63(tt(), N, X, XS) -> 587.23/148.08 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.08 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.08 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.08 , U72(tt(), XS) -> activate(XS) 587.23/148.08 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.08 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.08 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.08 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.08 , natsFrom(X) -> n__natsFrom(X) 587.23/148.08 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.08 , s(X) -> n__s(X) 587.23/148.08 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.08 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.08 Obligation: 587.23/148.08 innermost runtime complexity 587.23/148.08 Answer: 587.23/148.08 YES(O(1),O(n^1)) 587.23/148.08 587.23/148.08 We estimate the number of application of {3,7,8,9,10} by 587.23/148.08 applications of Pre({3,7,8,9,10}) = 587.23/148.08 {1,2,4,5,11,12,13,14,15,16,17,20,21,22,23,24,25,26,27,28,31}. Here 587.23/148.08 rules are labeled as follows: 587.23/148.08 587.23/148.08 DPs: 587.23/148.08 { 1: U11^#(tt(), N, XS) -> 587.23/148.08 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 2: U12^#(tt(), N, XS) -> 587.23/148.08 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 3: activate^#(X) -> c_3() 587.23/148.08 , 4: activate^#(n__natsFrom(X)) -> 587.23/148.08 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.08 , 5: activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.08 , 6: snd^#(pair(X, Y)) -> c_6(U51^#(tt(), Y)) 587.23/148.08 , 7: splitAt^#(0(), XS) -> c_7() 587.23/148.08 , 8: natsFrom^#(N) -> c_27() 587.23/148.08 , 9: natsFrom^#(X) -> c_28() 587.23/148.08 , 10: s^#(X) -> c_30() 587.23/148.08 , 11: U51^#(tt(), Y) -> 587.23/148.08 c_16(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.08 , 12: U21^#(tt(), X) -> 587.23/148.08 c_8(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.08 , 13: U22^#(tt(), X) -> c_9(activate^#(X)) 587.23/148.08 , 14: U31^#(tt(), N) -> 587.23/148.08 c_10(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.08 , 15: U32^#(tt(), N) -> c_11(activate^#(N)) 587.23/148.08 , 16: U41^#(tt(), N, XS) -> 587.23/148.08 c_12(U42^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 17: U42^#(tt(), N, XS) -> 587.23/148.08 c_13(head^#(afterNth(activate(N), activate(XS))), 587.23/148.08 afterNth^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 18: head^#(cons(N, XS)) -> c_14(U31^#(tt(), N)) 587.23/148.08 , 19: afterNth^#(N, XS) -> c_15(U11^#(tt(), N, XS)) 587.23/148.08 , 20: U52^#(tt(), Y) -> c_17(activate^#(Y)) 587.23/148.08 , 21: U61^#(tt(), N, X, XS) -> 587.23/148.08 c_18(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 22: U62^#(tt(), N, X, XS) -> 587.23/148.08 c_19(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 23: U63^#(tt(), N, X, XS) -> 587.23/148.08 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS), 587.23/148.08 activate^#(X)) 587.23/148.08 , 24: U64^#(pair(YS, ZS), X) -> c_21(activate^#(X)) 587.23/148.08 , 25: U71^#(tt(), XS) -> 587.23/148.08 c_22(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , 26: U72^#(tt(), XS) -> c_23(activate^#(XS)) 587.23/148.08 , 27: U81^#(tt(), N, XS) -> 587.23/148.08 c_24(U82^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 28: U82^#(tt(), N, XS) -> 587.23/148.08 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , 29: fst^#(pair(X, Y)) -> c_26(U21^#(tt(), X)) 587.23/148.08 , 30: sel^#(N, XS) -> c_29(U41^#(tt(), N, XS)) 587.23/148.08 , 31: tail^#(cons(N, XS)) -> 587.23/148.08 c_31(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , 32: take^#(N, XS) -> c_32(U81^#(tt(), N, XS)) } 587.23/148.08 587.23/148.08 We are left with following problem, upon which TcT provides the 587.23/148.08 certificate YES(O(1),O(n^1)). 587.23/148.08 587.23/148.08 Strict DPs: 587.23/148.08 { U11^#(tt(), N, XS) -> 587.23/148.08 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U12^#(tt(), N, XS) -> 587.23/148.08 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , activate^#(n__natsFrom(X)) -> 587.23/148.08 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.08 , activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.08 , snd^#(pair(X, Y)) -> c_6(U51^#(tt(), Y)) 587.23/148.08 , U51^#(tt(), Y) -> c_16(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.08 , U21^#(tt(), X) -> c_8(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.08 , U22^#(tt(), X) -> c_9(activate^#(X)) 587.23/148.08 , U31^#(tt(), N) -> c_10(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.08 , U32^#(tt(), N) -> c_11(activate^#(N)) 587.23/148.08 , U41^#(tt(), N, XS) -> 587.23/148.08 c_12(U42^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U42^#(tt(), N, XS) -> 587.23/148.08 c_13(head^#(afterNth(activate(N), activate(XS))), 587.23/148.08 afterNth^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , head^#(cons(N, XS)) -> c_14(U31^#(tt(), N)) 587.23/148.08 , afterNth^#(N, XS) -> c_15(U11^#(tt(), N, XS)) 587.23/148.08 , U52^#(tt(), Y) -> c_17(activate^#(Y)) 587.23/148.08 , U61^#(tt(), N, X, XS) -> 587.23/148.08 c_18(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U62^#(tt(), N, X, XS) -> 587.23/148.08 c_19(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(X), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U63^#(tt(), N, X, XS) -> 587.23/148.08 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS), 587.23/148.08 activate^#(X)) 587.23/148.08 , U64^#(pair(YS, ZS), X) -> c_21(activate^#(X)) 587.23/148.08 , U71^#(tt(), XS) -> 587.23/148.08 c_22(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.08 , U72^#(tt(), XS) -> c_23(activate^#(XS)) 587.23/148.08 , U81^#(tt(), N, XS) -> 587.23/148.08 c_24(U82^#(tt(), activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , U82^#(tt(), N, XS) -> 587.23/148.08 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.08 splitAt^#(activate(N), activate(XS)), 587.23/148.08 activate^#(N), 587.23/148.08 activate^#(XS)) 587.23/148.08 , fst^#(pair(X, Y)) -> c_26(U21^#(tt(), X)) 587.23/148.08 , sel^#(N, XS) -> c_29(U41^#(tt(), N, XS)) 587.23/148.09 , tail^#(cons(N, XS)) -> 587.23/148.09 c_31(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , take^#(N, XS) -> c_32(U81^#(tt(), N, XS)) } 587.23/148.09 Weak DPs: 587.23/148.09 { activate^#(X) -> c_3() 587.23/148.09 , splitAt^#(0(), XS) -> c_7() 587.23/148.09 , natsFrom^#(N) -> c_27() 587.23/148.09 , natsFrom^#(X) -> c_28() 587.23/148.09 , s^#(X) -> c_30() } 587.23/148.09 Weak Trs: 587.23/148.09 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.09 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.09 , activate(X) -> X 587.23/148.09 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.09 , activate(n__s(X)) -> s(activate(X)) 587.23/148.09 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.09 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.09 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.09 , U22(tt(), X) -> activate(X) 587.23/148.09 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.09 , U32(tt(), N) -> activate(N) 587.23/148.09 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.09 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.09 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.09 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.09 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.09 , U52(tt(), Y) -> activate(Y) 587.23/148.09 , U61(tt(), N, X, XS) -> 587.23/148.09 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U62(tt(), N, X, XS) -> 587.23/148.09 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U63(tt(), N, X, XS) -> 587.23/148.09 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.09 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.09 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.09 , U72(tt(), XS) -> activate(XS) 587.23/148.09 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.09 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.09 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.09 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.09 , natsFrom(X) -> n__natsFrom(X) 587.23/148.09 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.09 , s(X) -> n__s(X) 587.23/148.09 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.09 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.09 Obligation: 587.23/148.09 innermost runtime complexity 587.23/148.09 Answer: 587.23/148.09 YES(O(1),O(n^1)) 587.23/148.09 587.23/148.09 The following weak DPs constitute a sub-graph of the DG that is 587.23/148.09 closed under successors. The DPs are removed. 587.23/148.09 587.23/148.09 { activate^#(X) -> c_3() 587.23/148.09 , splitAt^#(0(), XS) -> c_7() 587.23/148.09 , natsFrom^#(N) -> c_27() 587.23/148.09 , natsFrom^#(X) -> c_28() 587.23/148.09 , s^#(X) -> c_30() } 587.23/148.09 587.23/148.09 We are left with following problem, upon which TcT provides the 587.23/148.09 certificate YES(O(1),O(n^1)). 587.23/148.09 587.23/148.09 Strict DPs: 587.23/148.09 { U11^#(tt(), N, XS) -> 587.23/148.09 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , activate^#(n__natsFrom(X)) -> 587.23/148.09 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.09 , activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.09 , snd^#(pair(X, Y)) -> c_6(U51^#(tt(), Y)) 587.23/148.09 , U51^#(tt(), Y) -> c_16(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.09 , U21^#(tt(), X) -> c_8(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.09 , U22^#(tt(), X) -> c_9(activate^#(X)) 587.23/148.09 , U31^#(tt(), N) -> c_10(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.09 , U32^#(tt(), N) -> c_11(activate^#(N)) 587.23/148.09 , U41^#(tt(), N, XS) -> 587.23/148.09 c_12(U42^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U42^#(tt(), N, XS) -> 587.23/148.09 c_13(head^#(afterNth(activate(N), activate(XS))), 587.23/148.09 afterNth^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , head^#(cons(N, XS)) -> c_14(U31^#(tt(), N)) 587.23/148.09 , afterNth^#(N, XS) -> c_15(U11^#(tt(), N, XS)) 587.23/148.09 , U52^#(tt(), Y) -> c_17(activate^#(Y)) 587.23/148.09 , U61^#(tt(), N, X, XS) -> 587.23/148.09 c_18(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U62^#(tt(), N, X, XS) -> 587.23/148.09 c_19(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U63^#(tt(), N, X, XS) -> 587.23/148.09 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS), 587.23/148.09 activate^#(X)) 587.23/148.09 , U64^#(pair(YS, ZS), X) -> c_21(activate^#(X)) 587.23/148.09 , U71^#(tt(), XS) -> 587.23/148.09 c_22(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , U72^#(tt(), XS) -> c_23(activate^#(XS)) 587.23/148.09 , U81^#(tt(), N, XS) -> 587.23/148.09 c_24(U82^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U82^#(tt(), N, XS) -> 587.23/148.09 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , fst^#(pair(X, Y)) -> c_26(U21^#(tt(), X)) 587.23/148.09 , sel^#(N, XS) -> c_29(U41^#(tt(), N, XS)) 587.23/148.09 , tail^#(cons(N, XS)) -> 587.23/148.09 c_31(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , take^#(N, XS) -> c_32(U81^#(tt(), N, XS)) } 587.23/148.09 Weak Trs: 587.23/148.09 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.09 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.09 , activate(X) -> X 587.23/148.09 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.09 , activate(n__s(X)) -> s(activate(X)) 587.23/148.09 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.09 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.09 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.09 , U22(tt(), X) -> activate(X) 587.23/148.09 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.09 , U32(tt(), N) -> activate(N) 587.23/148.09 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.09 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.09 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.09 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.09 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.09 , U52(tt(), Y) -> activate(Y) 587.23/148.09 , U61(tt(), N, X, XS) -> 587.23/148.09 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U62(tt(), N, X, XS) -> 587.23/148.09 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U63(tt(), N, X, XS) -> 587.23/148.09 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.09 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.09 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.09 , U72(tt(), XS) -> activate(XS) 587.23/148.09 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.09 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.09 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.09 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.09 , natsFrom(X) -> n__natsFrom(X) 587.23/148.09 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.09 , s(X) -> n__s(X) 587.23/148.09 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.09 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.09 Obligation: 587.23/148.09 innermost runtime complexity 587.23/148.09 Answer: 587.23/148.09 YES(O(1),O(n^1)) 587.23/148.09 587.23/148.09 Due to missing edges in the dependency-graph, the right-hand sides 587.23/148.09 of following rules could be simplified: 587.23/148.09 587.23/148.09 { U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , activate^#(n__natsFrom(X)) -> 587.23/148.09 c_4(natsFrom^#(activate(X)), activate^#(X)) 587.23/148.09 , activate^#(n__s(X)) -> c_5(s^#(activate(X)), activate^#(X)) 587.23/148.09 , U63^#(tt(), N, X, XS) -> 587.23/148.09 c_20(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS), 587.23/148.09 activate^#(X)) 587.23/148.09 , U82^#(tt(), N, XS) -> 587.23/148.09 c_25(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.09 splitAt^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) } 587.23/148.09 587.23/148.09 We are left with following problem, upon which TcT provides the 587.23/148.09 certificate YES(O(1),O(n^1)). 587.23/148.09 587.23/148.09 Strict DPs: 587.23/148.09 { U11^#(tt(), N, XS) -> 587.23/148.09 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.23/148.09 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.23/148.09 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.23/148.09 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.09 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.09 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.23/148.09 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.09 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.23/148.09 , U41^#(tt(), N, XS) -> 587.23/148.09 c_11(U42^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U42^#(tt(), N, XS) -> 587.23/148.09 c_12(head^#(afterNth(activate(N), activate(XS))), 587.23/148.09 afterNth^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.23/148.09 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.23/148.09 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.23/148.09 , U61^#(tt(), N, X, XS) -> 587.23/148.09 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U62^#(tt(), N, X, XS) -> 587.23/148.09 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U63^#(tt(), N, X, XS) -> 587.23/148.09 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS), 587.23/148.09 activate^#(X)) 587.23/148.09 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.23/148.09 , U71^#(tt(), XS) -> 587.23/148.09 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.23/148.09 , U81^#(tt(), N, XS) -> 587.23/148.09 c_22(U82^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U82^#(tt(), N, XS) -> 587.23/148.09 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.23/148.09 , sel^#(N, XS) -> c_25(U41^#(tt(), N, XS)) 587.23/148.09 , tail^#(cons(N, XS)) -> 587.23/148.09 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , take^#(N, XS) -> c_27(U81^#(tt(), N, XS)) } 587.23/148.09 Weak Trs: 587.23/148.09 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.09 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.09 , activate(X) -> X 587.23/148.09 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.09 , activate(n__s(X)) -> s(activate(X)) 587.23/148.09 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.09 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.09 , U21(tt(), X) -> U22(tt(), activate(X)) 587.23/148.09 , U22(tt(), X) -> activate(X) 587.23/148.09 , U31(tt(), N) -> U32(tt(), activate(N)) 587.23/148.09 , U32(tt(), N) -> activate(N) 587.23/148.09 , U41(tt(), N, XS) -> U42(tt(), activate(N), activate(XS)) 587.23/148.09 , U42(tt(), N, XS) -> head(afterNth(activate(N), activate(XS))) 587.23/148.09 , head(cons(N, XS)) -> U31(tt(), N) 587.23/148.09 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.09 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.09 , U52(tt(), Y) -> activate(Y) 587.23/148.09 , U61(tt(), N, X, XS) -> 587.23/148.09 U62(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U62(tt(), N, X, XS) -> 587.23/148.09 U63(tt(), activate(N), activate(X), activate(XS)) 587.23/148.09 , U63(tt(), N, X, XS) -> 587.23/148.09 U64(splitAt(activate(N), activate(XS)), activate(X)) 587.23/148.09 , U64(pair(YS, ZS), X) -> pair(cons(activate(X), YS), ZS) 587.23/148.09 , U71(tt(), XS) -> U72(tt(), activate(XS)) 587.23/148.09 , U72(tt(), XS) -> activate(XS) 587.23/148.09 , U81(tt(), N, XS) -> U82(tt(), activate(N), activate(XS)) 587.23/148.09 , U82(tt(), N, XS) -> fst(splitAt(activate(N), activate(XS))) 587.23/148.09 , fst(pair(X, Y)) -> U21(tt(), X) 587.23/148.09 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.09 , natsFrom(X) -> n__natsFrom(X) 587.23/148.09 , sel(N, XS) -> U41(tt(), N, XS) 587.23/148.09 , s(X) -> n__s(X) 587.23/148.09 , tail(cons(N, XS)) -> U71(tt(), activate(XS)) 587.23/148.09 , take(N, XS) -> U81(tt(), N, XS) } 587.23/148.09 Obligation: 587.23/148.09 innermost runtime complexity 587.23/148.09 Answer: 587.23/148.09 YES(O(1),O(n^1)) 587.23/148.09 587.23/148.09 We replace rewrite rules by usable rules: 587.23/148.09 587.23/148.09 Weak Usable Rules: 587.23/148.09 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.09 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.09 , activate(X) -> X 587.23/148.09 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.09 , activate(n__s(X)) -> s(activate(X)) 587.23/148.09 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.09 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.09 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.09 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.09 , U52(tt(), Y) -> activate(Y) 587.23/148.09 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.09 , natsFrom(X) -> n__natsFrom(X) 587.23/148.09 , s(X) -> n__s(X) } 587.23/148.09 587.23/148.09 We are left with following problem, upon which TcT provides the 587.23/148.09 certificate YES(O(1),O(n^1)). 587.23/148.09 587.23/148.09 Strict DPs: 587.23/148.09 { U11^#(tt(), N, XS) -> 587.23/148.09 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.23/148.09 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.23/148.09 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.23/148.09 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.09 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.09 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.23/148.09 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.09 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.23/148.09 , U41^#(tt(), N, XS) -> 587.23/148.09 c_11(U42^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U42^#(tt(), N, XS) -> 587.23/148.09 c_12(head^#(afterNth(activate(N), activate(XS))), 587.23/148.09 afterNth^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.23/148.09 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.23/148.09 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.23/148.09 , U61^#(tt(), N, X, XS) -> 587.23/148.09 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U62^#(tt(), N, X, XS) -> 587.23/148.09 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U63^#(tt(), N, X, XS) -> 587.23/148.09 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS), 587.23/148.09 activate^#(X)) 587.23/148.09 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.23/148.09 , U71^#(tt(), XS) -> 587.23/148.09 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.23/148.09 , U81^#(tt(), N, XS) -> 587.23/148.09 c_22(U82^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , U82^#(tt(), N, XS) -> 587.23/148.09 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.23/148.09 , sel^#(N, XS) -> c_25(U41^#(tt(), N, XS)) 587.23/148.09 , tail^#(cons(N, XS)) -> 587.23/148.09 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.09 , take^#(N, XS) -> c_27(U81^#(tt(), N, XS)) } 587.23/148.09 Weak Trs: 587.23/148.09 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.23/148.09 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.23/148.09 , activate(X) -> X 587.23/148.09 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.23/148.09 , activate(n__s(X)) -> s(activate(X)) 587.23/148.09 , snd(pair(X, Y)) -> U51(tt(), Y) 587.23/148.09 , splitAt(0(), XS) -> pair(nil(), XS) 587.23/148.09 , afterNth(N, XS) -> U11(tt(), N, XS) 587.23/148.09 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.23/148.09 , U52(tt(), Y) -> activate(Y) 587.23/148.09 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.23/148.09 , natsFrom(X) -> n__natsFrom(X) 587.23/148.09 , s(X) -> n__s(X) } 587.23/148.09 Obligation: 587.23/148.09 innermost runtime complexity 587.23/148.09 Answer: 587.23/148.09 YES(O(1),O(n^1)) 587.23/148.09 587.23/148.09 Consider the dependency graph 587.23/148.09 587.23/148.09 1: U11^#(tt(), N, XS) -> 587.23/148.09 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 -->_1 U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) :2 587.23/148.09 587.23/148.09 2: U12^#(tt(), N, XS) -> 587.23/148.09 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 -->_1 snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) :5 587.23/148.09 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 3: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.23/148.09 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 4: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.23/148.09 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 5: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.23/148.09 -->_1 U51^#(tt(), Y) -> 587.23/148.09 c_6(U52^#(tt(), activate(Y)), activate^#(Y)) :6 587.23/148.09 587.23/148.09 6: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.09 -->_1 U52^#(tt(), Y) -> c_15(activate^#(Y)) :15 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 7: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.09 -->_1 U22^#(tt(), X) -> c_8(activate^#(X)) :8 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 8: U22^#(tt(), X) -> c_8(activate^#(X)) 587.23/148.09 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 9: U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.09 -->_1 U32^#(tt(), N) -> c_10(activate^#(N)) :10 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 10: U32^#(tt(), N) -> c_10(activate^#(N)) 587.23/148.09 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 11: U41^#(tt(), N, XS) -> 587.23/148.09 c_11(U42^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 -->_1 U42^#(tt(), N, XS) -> 587.23/148.09 c_12(head^#(afterNth(activate(N), activate(XS))), 587.23/148.09 afterNth^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) :12 587.23/148.09 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 12: U42^#(tt(), N, XS) -> 587.23/148.09 c_12(head^#(afterNth(activate(N), activate(XS))), 587.23/148.09 afterNth^#(activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) 587.23/148.09 -->_2 afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) :14 587.23/148.09 -->_1 head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) :13 587.23/148.09 -->_4 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_4 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 13: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.23/148.09 -->_1 U31^#(tt(), N) -> 587.23/148.09 c_9(U32^#(tt(), activate(N)), activate^#(N)) :9 587.23/148.09 587.23/148.09 14: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.23/148.09 -->_1 U11^#(tt(), N, XS) -> 587.23/148.09 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(XS)) :1 587.23/148.09 587.23/148.09 15: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.23/148.09 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.09 587.23/148.09 16: U61^#(tt(), N, X, XS) -> 587.23/148.09 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) 587.23/148.09 -->_1 U62^#(tt(), N, X, XS) -> 587.23/148.09 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.09 activate^#(N), 587.23/148.09 activate^#(X), 587.23/148.09 activate^#(XS)) :17 587.23/148.09 -->_4 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.09 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_4 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 17: U62^#(tt(), N, X, XS) -> 587.23/148.10 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(X), 587.23/148.10 activate^#(XS)) 587.23/148.10 -->_1 U63^#(tt(), N, X, XS) -> 587.23/148.10 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS), 587.23/148.10 activate^#(X)) :18 587.23/148.10 -->_4 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_4 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 18: U63^#(tt(), N, X, XS) -> 587.23/148.10 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS), 587.23/148.10 activate^#(X)) 587.23/148.10 -->_1 U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) :19 587.23/148.10 -->_4 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_4 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 19: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.23/148.10 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 20: U71^#(tt(), XS) -> 587.23/148.10 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.10 -->_1 U72^#(tt(), XS) -> c_21(activate^#(XS)) :21 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 21: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.23/148.10 -->_1 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_1 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 22: U81^#(tt(), N, XS) -> 587.23/148.10 c_22(U82^#(tt(), activate(N), activate(XS)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) 587.23/148.10 -->_1 U82^#(tt(), N, XS) -> 587.23/148.10 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) :23 587.23/148.10 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 23: U82^#(tt(), N, XS) -> 587.23/148.10 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) 587.23/148.10 -->_1 fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) :24 587.23/148.10 -->_3 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_3 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.23/148.10 -->_1 U21^#(tt(), X) -> 587.23/148.10 c_7(U22^#(tt(), activate(X)), activate^#(X)) :7 587.23/148.10 587.23/148.10 25: sel^#(N, XS) -> c_25(U41^#(tt(), N, XS)) 587.23/148.10 -->_1 U41^#(tt(), N, XS) -> 587.23/148.10 c_11(U42^#(tt(), activate(N), activate(XS)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) :11 587.23/148.10 587.23/148.10 26: tail^#(cons(N, XS)) -> 587.23/148.10 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.23/148.10 -->_1 U71^#(tt(), XS) -> 587.23/148.10 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) :20 587.23/148.10 -->_2 activate^#(n__s(X)) -> c_4(activate^#(X)) :4 587.23/148.10 -->_2 activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) :3 587.23/148.10 587.23/148.10 27: take^#(N, XS) -> c_27(U81^#(tt(), N, XS)) 587.23/148.10 -->_1 U81^#(tt(), N, XS) -> 587.23/148.10 c_22(U82^#(tt(), activate(N), activate(XS)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) :22 587.23/148.10 587.23/148.10 587.23/148.10 Following roots of the dependency graph are removed, as the 587.23/148.10 considered set of starting terms is closed under reduction with 587.23/148.10 respect to these rules (modulo compound contexts). 587.23/148.10 587.23/148.10 { sel^#(N, XS) -> c_25(U41^#(tt(), N, XS)) 587.23/148.10 , take^#(N, XS) -> c_27(U81^#(tt(), N, XS)) } 587.23/148.10 587.23/148.10 587.23/148.10 We are left with following problem, upon which TcT provides the 587.23/148.10 certificate YES(O(1),O(n^1)). 587.23/148.10 587.23/148.10 Strict DPs: 587.23/148.10 { U11^#(tt(), N, XS) -> 587.23/148.10 c_1(U12^#(tt(), activate(N), activate(XS)), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) 587.23/148.10 , U12^#(tt(), N, XS) -> 587.23/148.10 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.23/148.10 activate^#(N), 587.23/148.10 activate^#(XS)) 587.23/148.10 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.23/148.10 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.23/148.10 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.23/148.10 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.23/148.10 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.23/148.10 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.23/148.10 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.23/148.10 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.10 , U41^#(tt(), N, XS) -> 587.55/148.10 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U42^#(tt(), N, XS) -> 587.55/148.10 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.10 afterNth^#(activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.10 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.10 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.10 , U61^#(tt(), N, X, XS) -> 587.55/148.10 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U62^#(tt(), N, X, XS) -> 587.55/148.10 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U63^#(tt(), N, X, XS) -> 587.55/148.10 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS), 587.55/148.10 activate^#(X)) 587.55/148.10 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.10 , U71^#(tt(), XS) -> 587.55/148.10 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.10 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.10 , U81^#(tt(), N, XS) -> 587.55/148.10 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U82^#(tt(), N, XS) -> 587.55/148.10 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.10 , tail^#(cons(N, XS)) -> 587.55/148.10 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.10 Weak Trs: 587.55/148.10 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.10 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.10 , activate(X) -> X 587.55/148.10 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.10 , activate(n__s(X)) -> s(activate(X)) 587.55/148.10 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.10 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.10 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.10 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.10 , U52(tt(), Y) -> activate(Y) 587.55/148.10 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.10 , natsFrom(X) -> n__natsFrom(X) 587.55/148.10 , s(X) -> n__s(X) } 587.55/148.10 Obligation: 587.55/148.10 innermost runtime complexity 587.55/148.10 Answer: 587.55/148.10 YES(O(1),O(n^1)) 587.55/148.10 587.55/148.10 We analyse the complexity of following sub-problems (R) and (S). 587.55/148.10 Problem (S) is obtained from the input problem by shifting strict 587.55/148.10 rules from (R) into the weak component: 587.55/148.10 587.55/148.10 Problem (R): 587.55/148.10 ------------ 587.55/148.10 Strict DPs: 587.55/148.10 { U11^#(tt(), N, XS) -> 587.55/148.10 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.10 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.10 , U41^#(tt(), N, XS) -> 587.55/148.10 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U42^#(tt(), N, XS) -> 587.55/148.10 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.10 afterNth^#(activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.10 Weak DPs: 587.55/148.10 { U12^#(tt(), N, XS) -> 587.55/148.10 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.10 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.10 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.10 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.10 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.10 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.10 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.10 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.10 , U61^#(tt(), N, X, XS) -> 587.55/148.10 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U62^#(tt(), N, X, XS) -> 587.55/148.10 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U63^#(tt(), N, X, XS) -> 587.55/148.10 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS), 587.55/148.10 activate^#(X)) 587.55/148.10 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.10 , U71^#(tt(), XS) -> 587.55/148.10 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.10 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.10 , U81^#(tt(), N, XS) -> 587.55/148.10 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U82^#(tt(), N, XS) -> 587.55/148.10 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.10 , tail^#(cons(N, XS)) -> 587.55/148.10 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.10 Weak Trs: 587.55/148.10 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.10 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.10 , activate(X) -> X 587.55/148.10 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.10 , activate(n__s(X)) -> s(activate(X)) 587.55/148.10 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.10 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.10 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.10 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.10 , U52(tt(), Y) -> activate(Y) 587.55/148.10 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.10 , natsFrom(X) -> n__natsFrom(X) 587.55/148.10 , s(X) -> n__s(X) } 587.55/148.10 StartTerms: basic terms 587.55/148.10 Strategy: innermost 587.55/148.10 587.55/148.10 Problem (S): 587.55/148.10 ------------ 587.55/148.10 Strict DPs: 587.55/148.10 { U12^#(tt(), N, XS) -> 587.55/148.10 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.10 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.10 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.10 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.10 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.10 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.10 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.10 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.10 , U61^#(tt(), N, X, XS) -> 587.55/148.10 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U62^#(tt(), N, X, XS) -> 587.55/148.10 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(X), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U63^#(tt(), N, X, XS) -> 587.55/148.10 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS), 587.55/148.10 activate^#(X)) 587.55/148.10 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.10 , U71^#(tt(), XS) -> 587.55/148.10 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.10 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.10 , U81^#(tt(), N, XS) -> 587.55/148.10 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U82^#(tt(), N, XS) -> 587.55/148.10 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.10 , tail^#(cons(N, XS)) -> 587.55/148.10 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.10 Weak DPs: 587.55/148.10 { U11^#(tt(), N, XS) -> 587.55/148.10 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.10 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.10 , U41^#(tt(), N, XS) -> 587.55/148.10 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , U42^#(tt(), N, XS) -> 587.55/148.10 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.10 afterNth^#(activate(N), activate(XS)), 587.55/148.10 activate^#(N), 587.55/148.10 activate^#(XS)) 587.55/148.10 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.10 Weak Trs: 587.55/148.10 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.10 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.10 , activate(X) -> X 587.55/148.10 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.10 , activate(n__s(X)) -> s(activate(X)) 587.55/148.10 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.10 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.10 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.10 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.10 , U52(tt(), Y) -> activate(Y) 587.55/148.10 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 StartTerms: basic terms 587.55/148.11 Strategy: innermost 587.55/148.11 587.55/148.11 Overall, the transformation results in the following sub-problem(s): 587.55/148.11 587.55/148.11 Generated new problems: 587.55/148.11 ----------------------- 587.55/148.11 R) Strict DPs: 587.55/148.11 { U11^#(tt(), N, XS) -> 587.55/148.11 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.11 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.11 , U41^#(tt(), N, XS) -> 587.55/148.11 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U42^#(tt(), N, XS) -> 587.55/148.11 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.11 afterNth^#(activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.11 Weak DPs: 587.55/148.11 { U12^#(tt(), N, XS) -> 587.55/148.11 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.11 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.11 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.11 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.11 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.11 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.11 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.11 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.11 , U61^#(tt(), N, X, XS) -> 587.55/148.11 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U62^#(tt(), N, X, XS) -> 587.55/148.11 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U63^#(tt(), N, X, XS) -> 587.55/148.11 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS), 587.55/148.11 activate^#(X)) 587.55/148.11 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.11 , U71^#(tt(), XS) -> 587.55/148.11 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.11 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.11 , U81^#(tt(), N, XS) -> 587.55/148.11 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U82^#(tt(), N, XS) -> 587.55/148.11 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.11 , tail^#(cons(N, XS)) -> 587.55/148.11 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.11 Weak Trs: 587.55/148.11 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.11 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.11 , activate(X) -> X 587.55/148.11 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.11 , activate(n__s(X)) -> s(activate(X)) 587.55/148.11 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.11 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.11 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.11 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.11 , U52(tt(), Y) -> activate(Y) 587.55/148.11 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 StartTerms: basic terms 587.55/148.11 Strategy: innermost 587.55/148.11 587.55/148.11 This problem was proven YES(O(1),O(n^1)). 587.55/148.11 587.55/148.11 S) Strict DPs: 587.55/148.11 { U12^#(tt(), N, XS) -> 587.55/148.11 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.11 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.11 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.11 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.11 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.11 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.11 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.11 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.11 , U61^#(tt(), N, X, XS) -> 587.55/148.11 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U62^#(tt(), N, X, XS) -> 587.55/148.11 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U63^#(tt(), N, X, XS) -> 587.55/148.11 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS), 587.55/148.11 activate^#(X)) 587.55/148.11 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.11 , U71^#(tt(), XS) -> 587.55/148.11 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.11 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.11 , U81^#(tt(), N, XS) -> 587.55/148.11 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U82^#(tt(), N, XS) -> 587.55/148.11 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.11 , tail^#(cons(N, XS)) -> 587.55/148.11 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.11 Weak DPs: 587.55/148.11 { U11^#(tt(), N, XS) -> 587.55/148.11 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.11 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.11 , U41^#(tt(), N, XS) -> 587.55/148.11 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U42^#(tt(), N, XS) -> 587.55/148.11 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.11 afterNth^#(activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.11 Weak Trs: 587.55/148.11 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.11 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.11 , activate(X) -> X 587.55/148.11 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.11 , activate(n__s(X)) -> s(activate(X)) 587.55/148.11 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.11 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.11 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.11 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.11 , U52(tt(), Y) -> activate(Y) 587.55/148.11 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 StartTerms: basic terms 587.55/148.11 Strategy: innermost 587.55/148.11 587.55/148.11 This problem was proven YES(O(1),O(1)). 587.55/148.11 587.55/148.11 587.55/148.11 Proofs for generated problems: 587.55/148.11 ------------------------------ 587.55/148.11 R) We are left with following problem, upon which TcT provides the 587.55/148.11 certificate YES(O(1),O(n^1)). 587.55/148.11 587.55/148.11 Strict DPs: 587.55/148.11 { U11^#(tt(), N, XS) -> 587.55/148.11 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.11 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.11 , U41^#(tt(), N, XS) -> 587.55/148.11 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U42^#(tt(), N, XS) -> 587.55/148.11 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.11 afterNth^#(activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.11 Weak DPs: 587.55/148.11 { U12^#(tt(), N, XS) -> 587.55/148.11 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.11 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.11 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.11 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.11 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.11 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.11 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.11 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.11 , U61^#(tt(), N, X, XS) -> 587.55/148.11 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U62^#(tt(), N, X, XS) -> 587.55/148.11 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U63^#(tt(), N, X, XS) -> 587.55/148.11 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS), 587.55/148.11 activate^#(X)) 587.55/148.11 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.11 , U71^#(tt(), XS) -> 587.55/148.11 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.11 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.11 , U81^#(tt(), N, XS) -> 587.55/148.11 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U82^#(tt(), N, XS) -> 587.55/148.11 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.11 , tail^#(cons(N, XS)) -> 587.55/148.11 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.11 Weak Trs: 587.55/148.11 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.11 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.11 , activate(X) -> X 587.55/148.11 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.11 , activate(n__s(X)) -> s(activate(X)) 587.55/148.11 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.11 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.11 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.11 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.11 , U52(tt(), Y) -> activate(Y) 587.55/148.11 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 Obligation: 587.55/148.11 innermost runtime complexity 587.55/148.11 Answer: 587.55/148.11 YES(O(1),O(n^1)) 587.55/148.11 587.55/148.11 We analyse the complexity of following sub-problems (R) and (S). 587.55/148.11 Problem (S) is obtained from the input problem by shifting strict 587.55/148.11 rules from (R) into the weak component: 587.55/148.11 587.55/148.11 Problem (R): 587.55/148.11 ------------ 587.55/148.11 Strict DPs: 587.55/148.11 { activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.11 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.11 , U41^#(tt(), N, XS) -> 587.55/148.11 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U42^#(tt(), N, XS) -> 587.55/148.11 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.11 afterNth^#(activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) } 587.55/148.11 Weak DPs: 587.55/148.11 { U11^#(tt(), N, XS) -> 587.55/148.11 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U12^#(tt(), N, XS) -> 587.55/148.11 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.11 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.11 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.11 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.11 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.11 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.11 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.11 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.11 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.11 , U61^#(tt(), N, X, XS) -> 587.55/148.11 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U62^#(tt(), N, X, XS) -> 587.55/148.11 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U63^#(tt(), N, X, XS) -> 587.55/148.11 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS), 587.55/148.11 activate^#(X)) 587.55/148.11 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.11 , U71^#(tt(), XS) -> 587.55/148.11 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.11 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.11 , U81^#(tt(), N, XS) -> 587.55/148.11 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U82^#(tt(), N, XS) -> 587.55/148.11 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.11 , tail^#(cons(N, XS)) -> 587.55/148.11 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.11 Weak Trs: 587.55/148.11 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.11 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.11 , activate(X) -> X 587.55/148.11 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.11 , activate(n__s(X)) -> s(activate(X)) 587.55/148.11 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.11 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.11 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.11 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.11 , U52(tt(), Y) -> activate(Y) 587.55/148.11 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 StartTerms: basic terms 587.55/148.11 Strategy: innermost 587.55/148.11 587.55/148.11 Problem (S): 587.55/148.11 ------------ 587.55/148.11 Strict DPs: 587.55/148.11 { U11^#(tt(), N, XS) -> 587.55/148.11 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.11 Weak DPs: 587.55/148.11 { U12^#(tt(), N, XS) -> 587.55/148.11 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.11 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.11 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.11 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.11 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.11 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.11 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.11 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.11 , U41^#(tt(), N, XS) -> 587.55/148.11 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U42^#(tt(), N, XS) -> 587.55/148.11 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.11 afterNth^#(activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.11 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.11 , U61^#(tt(), N, X, XS) -> 587.55/148.11 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U62^#(tt(), N, X, XS) -> 587.55/148.11 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(X), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U63^#(tt(), N, X, XS) -> 587.55/148.11 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS), 587.55/148.11 activate^#(X)) 587.55/148.11 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.11 , U71^#(tt(), XS) -> 587.55/148.11 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.11 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.11 , U81^#(tt(), N, XS) -> 587.55/148.11 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , U82^#(tt(), N, XS) -> 587.55/148.11 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.11 activate^#(N), 587.55/148.11 activate^#(XS)) 587.55/148.11 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.11 , tail^#(cons(N, XS)) -> 587.55/148.11 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.11 Weak Trs: 587.55/148.11 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.11 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.11 , activate(X) -> X 587.55/148.11 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.11 , activate(n__s(X)) -> s(activate(X)) 587.55/148.11 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.11 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.11 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.11 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.11 , U52(tt(), Y) -> activate(Y) 587.55/148.11 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.11 , natsFrom(X) -> n__natsFrom(X) 587.55/148.11 , s(X) -> n__s(X) } 587.55/148.11 StartTerms: basic terms 587.55/148.11 Strategy: innermost 587.55/148.11 587.55/148.11 Overall, the transformation results in the following sub-problem(s): 587.55/148.11 587.55/148.11 Generated new problems: 587.55/148.11 ----------------------- 587.55/148.12 R) Strict DPs: 587.55/148.12 { activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.12 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.12 , U41^#(tt(), N, XS) -> 587.55/148.12 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U42^#(tt(), N, XS) -> 587.55/148.12 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.12 afterNth^#(activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) } 587.55/148.12 Weak DPs: 587.55/148.12 { U11^#(tt(), N, XS) -> 587.55/148.12 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U12^#(tt(), N, XS) -> 587.55/148.12 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.12 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.12 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.12 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.12 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.12 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.12 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.12 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.12 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.12 , U61^#(tt(), N, X, XS) -> 587.55/148.12 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U62^#(tt(), N, X, XS) -> 587.55/148.12 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U63^#(tt(), N, X, XS) -> 587.55/148.12 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS), 587.55/148.12 activate^#(X)) 587.55/148.12 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.12 , U71^#(tt(), XS) -> 587.55/148.12 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.12 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.12 , U81^#(tt(), N, XS) -> 587.55/148.12 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U82^#(tt(), N, XS) -> 587.55/148.12 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.12 , tail^#(cons(N, XS)) -> 587.55/148.12 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.12 Weak Trs: 587.55/148.12 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.12 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.12 , activate(X) -> X 587.55/148.12 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.12 , activate(n__s(X)) -> s(activate(X)) 587.55/148.12 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.12 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.12 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.12 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.12 , U52(tt(), Y) -> activate(Y) 587.55/148.12 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.12 , natsFrom(X) -> n__natsFrom(X) 587.55/148.12 , s(X) -> n__s(X) } 587.55/148.12 StartTerms: basic terms 587.55/148.12 Strategy: innermost 587.55/148.12 587.55/148.12 This problem was proven YES(O(1),O(n^1)). 587.55/148.12 587.55/148.12 S) Strict DPs: 587.55/148.12 { U11^#(tt(), N, XS) -> 587.55/148.12 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.12 Weak DPs: 587.55/148.12 { U12^#(tt(), N, XS) -> 587.55/148.12 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.12 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.12 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.12 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.12 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.12 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.12 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.12 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.12 , U41^#(tt(), N, XS) -> 587.55/148.12 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U42^#(tt(), N, XS) -> 587.55/148.12 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.12 afterNth^#(activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.12 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.12 , U61^#(tt(), N, X, XS) -> 587.55/148.12 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U62^#(tt(), N, X, XS) -> 587.55/148.12 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U63^#(tt(), N, X, XS) -> 587.55/148.12 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS), 587.55/148.12 activate^#(X)) 587.55/148.12 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.12 , U71^#(tt(), XS) -> 587.55/148.12 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.12 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.12 , U81^#(tt(), N, XS) -> 587.55/148.12 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U82^#(tt(), N, XS) -> 587.55/148.12 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.12 , tail^#(cons(N, XS)) -> 587.55/148.12 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.12 Weak Trs: 587.55/148.12 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.12 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.12 , activate(X) -> X 587.55/148.12 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.12 , activate(n__s(X)) -> s(activate(X)) 587.55/148.12 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.12 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.12 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.12 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.12 , U52(tt(), Y) -> activate(Y) 587.55/148.12 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.12 , natsFrom(X) -> n__natsFrom(X) 587.55/148.12 , s(X) -> n__s(X) } 587.55/148.12 StartTerms: basic terms 587.55/148.12 Strategy: innermost 587.55/148.12 587.55/148.12 This problem was proven YES(O(1),O(1)). 587.55/148.12 587.55/148.12 587.55/148.12 Proofs for generated problems: 587.55/148.12 ------------------------------ 587.55/148.12 R) We are left with following problem, upon which TcT provides the 587.55/148.12 certificate YES(O(1),O(n^1)). 587.55/148.12 587.55/148.12 Strict DPs: 587.55/148.12 { activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.12 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.12 , U41^#(tt(), N, XS) -> 587.55/148.12 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U42^#(tt(), N, XS) -> 587.55/148.12 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.12 afterNth^#(activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) } 587.55/148.12 Weak DPs: 587.55/148.12 { U11^#(tt(), N, XS) -> 587.55/148.12 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U12^#(tt(), N, XS) -> 587.55/148.12 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.12 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.12 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.12 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.12 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.12 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.12 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.12 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.12 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.12 , U61^#(tt(), N, X, XS) -> 587.55/148.12 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U62^#(tt(), N, X, XS) -> 587.55/148.12 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U63^#(tt(), N, X, XS) -> 587.55/148.12 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS), 587.55/148.12 activate^#(X)) 587.55/148.12 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.12 , U71^#(tt(), XS) -> 587.55/148.12 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.12 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.12 , U81^#(tt(), N, XS) -> 587.55/148.12 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , U82^#(tt(), N, XS) -> 587.55/148.12 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.12 , tail^#(cons(N, XS)) -> 587.55/148.12 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.12 Weak Trs: 587.55/148.12 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.12 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.12 , activate(X) -> X 587.55/148.12 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.12 , activate(n__s(X)) -> s(activate(X)) 587.55/148.12 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.12 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.12 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.12 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.12 , U52(tt(), Y) -> activate(Y) 587.55/148.12 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.12 , natsFrom(X) -> n__natsFrom(X) 587.55/148.12 , s(X) -> n__s(X) } 587.55/148.12 Obligation: 587.55/148.12 innermost runtime complexity 587.55/148.12 Answer: 587.55/148.12 YES(O(1),O(n^1)) 587.55/148.12 587.55/148.12 We use the processor 'matrix interpretation of dimension 2' to 587.55/148.12 orient following rules strictly. 587.55/148.12 587.55/148.12 DPs: 587.55/148.12 { 1: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.12 , 3: U41^#(tt(), N, XS) -> 587.55/148.12 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) 587.55/148.12 , 16: U61^#(tt(), N, X, XS) -> 587.55/148.12 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS)) 587.55/148.12 , 21: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.12 , 23: U82^#(tt(), N, XS) -> 587.55/148.12 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS)) } 587.55/148.12 Trs: 587.55/148.12 { splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.12 , afterNth(N, XS) -> U11(tt(), N, XS) } 587.55/148.12 587.55/148.12 Sub-proof: 587.55/148.12 ---------- 587.55/148.12 The following argument positions are usable: 587.55/148.12 Uargs(c_1) = {1, 2, 3}, Uargs(c_2) = {1, 2, 3}, Uargs(c_3) = {1}, 587.55/148.12 Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1, 2}, 587.55/148.12 Uargs(c_7) = {1, 2}, Uargs(c_8) = {1}, Uargs(c_9) = {1, 2}, 587.55/148.12 Uargs(c_10) = {1}, Uargs(c_11) = {1, 2, 3}, 587.55/148.12 Uargs(c_12) = {1, 2, 3, 4}, Uargs(c_13) = {1}, Uargs(c_14) = {1}, 587.55/148.12 Uargs(c_15) = {1}, Uargs(c_16) = {1, 2, 3, 4}, 587.55/148.12 Uargs(c_17) = {1, 2, 3, 4}, Uargs(c_18) = {1, 2, 3, 4}, 587.55/148.12 Uargs(c_19) = {1}, Uargs(c_20) = {1, 2}, Uargs(c_21) = {1}, 587.55/148.12 Uargs(c_22) = {1, 2, 3}, Uargs(c_23) = {1, 2, 3}, 587.55/148.12 Uargs(c_24) = {1}, Uargs(c_26) = {1, 2} 587.55/148.12 587.55/148.12 TcT has computed the following constructor-based matrix 587.55/148.12 interpretation satisfying not(EDA) and not(IDA(1)). 587.55/148.12 587.55/148.12 [U11](x1, x2, x3) = [7 0] x1 + [4 0] x2 + [1 0] x3 + [0] 587.55/148.12 [5 0] [0 2] [0 2] [4] 587.55/148.12 587.55/148.12 [tt] = [0] 587.55/148.12 [4] 587.55/148.12 587.55/148.12 [U12](x1, x2, x3) = [7 0] x1 + [0 0] x2 + [1 0] x3 + [0] 587.55/148.12 [7 0] [0 2] [0 2] [0] 587.55/148.12 587.55/148.12 [activate](x1) = [1 0] x1 + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 587.55/148.12 [snd](x1) = [0 1] x1 + [0] 587.55/148.12 [1 0] [0] 587.55/148.12 587.55/148.12 [splitAt](x1, x2) = [0 2] x1 + [0 2] x2 + [0] 587.55/148.12 [0 0] [1 0] [0] 587.55/148.12 587.55/148.12 [afterNth](x1, x2) = [4 0] x1 + [1 0] x2 + [4] 587.55/148.12 [0 2] [0 2] [4] 587.55/148.12 587.55/148.12 [U51](x1, x2) = [7 0] x1 + [1 0] x2 + [0] 587.55/148.12 [7 0] [0 1] [0] 587.55/148.12 587.55/148.12 [U52](x1, x2) = [7 0] x1 + [1 0] x2 + [0] 587.55/148.12 [7 0] [0 1] [0] 587.55/148.12 587.55/148.12 [pair](x1, x2) = [0 1] x1 + [0 1] x2 + [0] 587.55/148.12 [1 0] [1 0] [0] 587.55/148.12 587.55/148.12 [cons](x1, x2) = [0 0] x1 + [1 0] x2 + [0] 587.55/148.12 [1 0] [0 0] [0] 587.55/148.12 587.55/148.12 [natsFrom](x1) = [1 0] x1 + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 587.55/148.12 [n__natsFrom](x1) = [1 0] x1 + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 587.55/148.12 [n__s](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [0] = [0] 587.55/148.12 [4] 587.55/148.12 587.55/148.12 [nil] = [0] 587.55/148.12 [0] 587.55/148.12 587.55/148.12 [s](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [U11^#](x1, x2, x3) = [2 0] x2 + [5 0] x3 + [0] 587.55/148.12 [4 0] [4 0] [0] 587.55/148.12 587.55/148.12 [U12^#](x1, x2, x3) = [0 0] x1 + [1 0] x2 + [4 0] x3 + [0] 587.55/148.12 [0 2] [4 4] [4 4] [0] 587.55/148.12 587.55/148.12 [activate^#](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [snd^#](x1) = [0 3] x1 + [0] 587.55/148.12 [0 4] [4] 587.55/148.12 587.55/148.12 [U51^#](x1, x2) = [3 0] x2 + [0] 587.55/148.12 [0 4] [4] 587.55/148.12 587.55/148.12 [U21^#](x1, x2) = [0 0] x1 + [2 0] x2 + [0] 587.55/148.12 [0 2] [4 4] [0] 587.55/148.12 587.55/148.12 [U22^#](x1, x2) = [1 0] x2 + [0] 587.55/148.12 [0 0] [4] 587.55/148.12 587.55/148.12 [U31^#](x1, x2) = [2 0] x2 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [U32^#](x1, x2) = [1 0] x2 + [0] 587.55/148.12 [0 4] [0] 587.55/148.12 587.55/148.12 [U41^#](x1, x2, x3) = [5 2] x1 + [7 7] x2 + [7 7] x3 + [7] 587.55/148.12 [7 0] [7 7] [7 7] [7] 587.55/148.12 587.55/148.12 [U42^#](x1, x2, x3) = [0 2] x1 + [3 4] x2 + [6 4] x3 + [0] 587.55/148.12 [0 2] [0 0] [0 0] [0] 587.55/148.12 587.55/148.12 [head^#](x1) = [0 2] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [afterNth^#](x1, x2) = [2 0] x1 + [5 0] x2 + [0] 587.55/148.12 [4 4] [0 0] [0] 587.55/148.12 587.55/148.12 [U52^#](x1, x2) = [1 0] x2 + [0] 587.55/148.12 [4 0] [0] 587.55/148.12 587.55/148.12 [U61^#](x1, x2, x3, x4) = [7 0] x1 + [7 7] x2 + [7 7] x3 + [7 587.55/148.12 7] x4 + [7] 587.55/148.12 [5 0] [7 7] [7 7] [7 587.55/148.12 7] [7] 587.55/148.12 587.55/148.12 [U62^#](x1, x2, x3, x4) = [6 0] x2 + [6 0] x3 + [2 4] x4 + [0] 587.55/148.12 [0 0] [0 0] [1 0] [0] 587.55/148.12 587.55/148.12 [U63^#](x1, x2, x3, x4) = [4 0] x2 + [5 0] x3 + [1 4] x4 + [0] 587.55/148.12 [0 4] [4 4] [4 0] [4] 587.55/148.12 587.55/148.12 [U64^#](x1, x2) = [1 0] x2 + [0] 587.55/148.12 [1 0] [0] 587.55/148.12 587.55/148.12 [U71^#](x1, x2) = [0 1] x1 + [2 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [4] 587.55/148.12 587.55/148.12 [U72^#](x1, x2) = [0 1] x1 + [1 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [4] 587.55/148.12 587.55/148.12 [U81^#](x1, x2, x3) = [7 0] x1 + [7 7] x2 + [7 7] x3 + [7] 587.55/148.12 [5 0] [7 7] [7 7] [7] 587.55/148.12 587.55/148.12 [U82^#](x1, x2, x3) = [0 0] x1 + [4 4] x2 + [5 0] x3 + [4] 587.55/148.12 [0 2] [0 4] [0 4] [0] 587.55/148.12 587.55/148.12 [fst^#](x1) = [0 2] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [tail^#](x1) = [3 0] x1 + [7] 587.55/148.12 [0 0] [7] 587.55/148.12 587.55/148.12 [c_1](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [0] 587.55/148.12 [0 0] [0 0] [0 0] [0] 587.55/148.12 587.55/148.12 [c_2](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [0] 587.55/148.12 [0 0] [0 0] [0 0] [7] 587.55/148.12 587.55/148.12 [c_3](x1) = [1 0] x1 + [1] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_4](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_5](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [3] 587.55/148.12 587.55/148.12 [c_6](x1, x2) = [2 0] x1 + [1 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 [c_7](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [7] 587.55/148.12 587.55/148.12 [c_8](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [3] 587.55/148.12 587.55/148.12 [c_9](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [0] 587.55/148.12 587.55/148.12 [c_10](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_11](x1, x2, x3) = [1 0] x1 + [4 0] x2 + [1 0] x3 + [3] 587.55/148.12 [0 0] [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 [c_12](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [1 587.55/148.12 0] x4 + [0] 587.55/148.12 [0 0] [0 0] [0 0] [0 587.55/148.12 0] [3] 587.55/148.12 587.55/148.12 [c_13](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_14](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_15](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_16](x1, x2, x3, x4) = [1 2] x1 + [1 0] x2 + [1 0] x3 + [2 587.55/148.12 0] x4 + [3] 587.55/148.12 [0 0] [0 0] [0 0] [0 587.55/148.12 0] [3] 587.55/148.12 587.55/148.12 [c_17](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [1 587.55/148.12 0] x4 + [0] 587.55/148.12 [0 0] [0 0] [0 0] [0 587.55/148.12 0] [0] 587.55/148.12 587.55/148.12 [c_18](x1, x2, x3, x4) = [1 2] x1 + [1 0] x2 + [1 0] x3 + [2 587.55/148.12 0] x4 + [0] 587.55/148.12 [0 0] [0 0] [0 0] [0 587.55/148.12 0] [3] 587.55/148.12 587.55/148.12 [c_19](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_20](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.12 [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 [c_21](x1) = [1 0] x1 + [3] 587.55/148.12 [0 0] [3] 587.55/148.12 587.55/148.12 [c_22](x1, x2, x3) = [1 0] x1 + [2 0] x2 + [1 0] x3 + [3] 587.55/148.12 [0 0] [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 [c_23](x1, x2, x3) = [2 0] x1 + [4 0] x2 + [1 0] x3 + [3] 587.55/148.12 [0 0] [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 [c_24](x1) = [1 0] x1 + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 587.55/148.12 [c_26](x1, x2) = [1 0] x1 + [1 0] x2 + [3] 587.55/148.12 [0 0] [0 0] [3] 587.55/148.12 587.55/148.12 The order satisfies the following ordering constraints: 587.55/148.12 587.55/148.12 [U11(tt(), N, XS)] = [4 0] N + [1 0] XS + [0] 587.55/148.12 [0 2] [0 2] [4] 587.55/148.12 >= [0 0] N + [1 0] XS + [0] 587.55/148.12 [0 2] [0 2] [0] 587.55/148.12 = [U12(tt(), activate(N), activate(XS))] 587.55/148.12 587.55/148.12 [U12(tt(), N, XS)] = [0 0] N + [1 0] XS + [0] 587.55/148.12 [0 2] [0 2] [0] 587.55/148.12 >= [0 0] N + [1 0] XS + [0] 587.55/148.12 [0 2] [0 2] [0] 587.55/148.12 = [snd(splitAt(activate(N), activate(XS)))] 587.55/148.12 587.55/148.12 [activate(X)] = [1 0] X + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 >= [1 0] X + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 = [X] 587.55/148.12 587.55/148.12 [activate(n__natsFrom(X))] = [1 0] X + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 >= [1 0] X + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 = [natsFrom(activate(X))] 587.55/148.12 587.55/148.12 [activate(n__s(X))] = [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 >= [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [s(activate(X))] 587.55/148.12 587.55/148.12 [snd(pair(X, Y))] = [1 0] X + [1 0] Y + [0] 587.55/148.12 [0 1] [0 1] [0] 587.55/148.12 >= [1 0] Y + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 = [U51(tt(), Y)] 587.55/148.12 587.55/148.12 [splitAt(0(), XS)] = [0 2] XS + [8] 587.55/148.12 [1 0] [0] 587.55/148.12 > [0 1] XS + [0] 587.55/148.12 [1 0] [0] 587.55/148.12 = [pair(nil(), XS)] 587.55/148.12 587.55/148.12 [afterNth(N, XS)] = [4 0] N + [1 0] XS + [4] 587.55/148.12 [0 2] [0 2] [4] 587.55/148.12 > [4 0] N + [1 0] XS + [0] 587.55/148.12 [0 2] [0 2] [4] 587.55/148.12 = [U11(tt(), N, XS)] 587.55/148.12 587.55/148.12 [U51(tt(), Y)] = [1 0] Y + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 >= [1 0] Y + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 = [U52(tt(), activate(Y))] 587.55/148.12 587.55/148.12 [U52(tt(), Y)] = [1 0] Y + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 >= [1 0] Y + [0] 587.55/148.12 [0 1] [0] 587.55/148.12 = [activate(Y)] 587.55/148.12 587.55/148.12 [natsFrom(N)] = [1 0] N + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 >= [1 0] N + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 = [cons(N, n__natsFrom(n__s(N)))] 587.55/148.12 587.55/148.12 [natsFrom(X)] = [1 0] X + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 >= [1 0] X + [4] 587.55/148.12 [1 0] [0] 587.55/148.12 = [n__natsFrom(X)] 587.55/148.12 587.55/148.12 [s(X)] = [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 >= [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [n__s(X)] 587.55/148.12 587.55/148.12 [U11^#(tt(), N, XS)] = [2 0] N + [5 0] XS + [0] 587.55/148.12 [4 0] [4 0] [0] 587.55/148.12 >= [2 0] N + [5 0] XS + [0] 587.55/148.12 [0 0] [0 0] [0] 587.55/148.12 = [c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS))] 587.55/148.12 587.55/148.12 [U12^#(tt(), N, XS)] = [1 0] N + [4 0] XS + [0] 587.55/148.12 [4 4] [4 4] [8] 587.55/148.12 >= [1 0] N + [4 0] XS + [0] 587.55/148.12 [0 0] [0 0] [7] 587.55/148.12 = [c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS))] 587.55/148.12 587.55/148.12 [activate^#(n__natsFrom(X))] = [1 0] X + [4] 587.55/148.12 [0 0] [0] 587.55/148.12 > [1 0] X + [1] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_3(activate^#(X))] 587.55/148.12 587.55/148.12 [activate^#(n__s(X))] = [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 >= [1 0] X + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_4(activate^#(X))] 587.55/148.12 587.55/148.12 [snd^#(pair(X, Y))] = [3 0] X + [3 0] Y + [0] 587.55/148.12 [4 0] [4 0] [4] 587.55/148.12 >= [3 0] Y + [0] 587.55/148.12 [0 0] [3] 587.55/148.12 = [c_5(U51^#(tt(), Y))] 587.55/148.12 587.55/148.12 [U51^#(tt(), Y)] = [3 0] Y + [0] 587.55/148.12 [0 4] [4] 587.55/148.12 >= [3 0] Y + [0] 587.55/148.12 [0 0] [3] 587.55/148.12 = [c_6(U52^#(tt(), activate(Y)), activate^#(Y))] 587.55/148.12 587.55/148.12 [U21^#(tt(), X)] = [2 0] X + [0] 587.55/148.12 [4 4] [8] 587.55/148.12 >= [2 0] X + [0] 587.55/148.12 [0 0] [7] 587.55/148.12 = [c_7(U22^#(tt(), activate(X)), activate^#(X))] 587.55/148.12 587.55/148.12 [U22^#(tt(), X)] = [1 0] X + [0] 587.55/148.12 [0 0] [4] 587.55/148.12 >= [1 0] X + [0] 587.55/148.12 [0 0] [3] 587.55/148.12 = [c_8(activate^#(X))] 587.55/148.12 587.55/148.12 [U31^#(tt(), N)] = [2 0] N + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 >= [2 0] N + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_9(U32^#(tt(), activate(N)), activate^#(N))] 587.55/148.12 587.55/148.12 [U32^#(tt(), N)] = [1 0] N + [0] 587.55/148.12 [0 4] [0] 587.55/148.12 >= [1 0] N + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_10(activate^#(N))] 587.55/148.12 587.55/148.12 [U41^#(tt(), N, XS)] = [7 7] N + [7 7] XS + [15] 587.55/148.12 [7 7] [7 7] [7] 587.55/148.12 > [7 4] N + [7 4] XS + [11] 587.55/148.12 [0 0] [0 0] [3] 587.55/148.12 = [c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS))] 587.55/148.12 587.55/148.12 [U42^#(tt(), N, XS)] = [3 4] N + [6 4] XS + [8] 587.55/148.12 [0 0] [0 0] [8] 587.55/148.12 >= [3 4] N + [6 4] XS + [8] 587.55/148.12 [0 0] [0 0] [3] 587.55/148.12 = [c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.12 afterNth^#(activate(N), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(XS))] 587.55/148.12 587.55/148.12 [head^#(cons(N, XS))] = [2 0] N + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 >= [2 0] N + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_13(U31^#(tt(), N))] 587.55/148.12 587.55/148.12 [afterNth^#(N, XS)] = [2 0] N + [5 0] XS + [0] 587.55/148.12 [4 4] [0 0] [0] 587.55/148.12 >= [2 0] N + [5 0] XS + [0] 587.55/148.12 [0 0] [0 0] [0] 587.55/148.12 = [c_14(U11^#(tt(), N, XS))] 587.55/148.12 587.55/148.12 [U52^#(tt(), Y)] = [1 0] Y + [0] 587.55/148.12 [4 0] [0] 587.55/148.12 >= [1 0] Y + [0] 587.55/148.12 [0 0] [0] 587.55/148.12 = [c_15(activate^#(Y))] 587.55/148.12 587.55/148.12 [U61^#(tt(), N, X, XS)] = [7 7] N + [7 7] XS + [7 7] X + [7] 587.55/148.12 [7 7] [7 7] [7 7] [7] 587.55/148.12 > [7 0] N + [6 4] XS + [7 0] X + [3] 587.55/148.12 [0 0] [0 0] [0 0] [3] 587.55/148.12 = [c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.12 activate^#(N), 587.55/148.12 activate^#(X), 587.55/148.12 activate^#(XS))] 587.55/148.12 587.55/148.12 [U62^#(tt(), N, X, XS)] = [6 0] N + [2 4] XS + [6 0] X + [0] 587.55/148.12 [0 0] [1 0] [0 0] [0] 587.55/148.12 >= [5 0] N + [2 4] XS + [6 0] X + [0] 587.55/148.12 [0 0] [0 0] [0 0] [0] 587.55/148.13 = [c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS))] 587.55/148.13 587.55/148.13 [U63^#(tt(), N, X, XS)] = [4 0] N + [1 4] XS + [5 0] X + [0] 587.55/148.13 [0 4] [4 0] [4 4] [4] 587.55/148.13 >= [1 0] N + [1 0] XS + [5 0] X + [0] 587.55/148.13 [0 0] [0 0] [0 0] [3] 587.55/148.13 = [c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS), 587.55/148.13 activate^#(X))] 587.55/148.13 587.55/148.13 [U64^#(pair(YS, ZS), X)] = [1 0] X + [0] 587.55/148.13 [1 0] [0] 587.55/148.13 >= [1 0] X + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 = [c_19(activate^#(X))] 587.55/148.13 587.55/148.13 [U71^#(tt(), XS)] = [2 0] XS + [4] 587.55/148.13 [0 0] [4] 587.55/148.13 >= [2 0] XS + [4] 587.55/148.13 [0 0] [3] 587.55/148.13 = [c_20(U72^#(tt(), activate(XS)), activate^#(XS))] 587.55/148.13 587.55/148.13 [U72^#(tt(), XS)] = [1 0] XS + [4] 587.55/148.13 [0 0] [4] 587.55/148.13 > [1 0] XS + [3] 587.55/148.13 [0 0] [3] 587.55/148.13 = [c_21(activate^#(XS))] 587.55/148.13 587.55/148.13 [U81^#(tt(), N, XS)] = [7 7] N + [7 7] XS + [7] 587.55/148.13 [7 7] [7 7] [7] 587.55/148.13 >= [6 4] N + [6 0] XS + [7] 587.55/148.13 [0 0] [0 0] [3] 587.55/148.13 = [c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS))] 587.55/148.13 587.55/148.13 [U82^#(tt(), N, XS)] = [4 4] N + [5 0] XS + [4] 587.55/148.13 [0 4] [0 4] [8] 587.55/148.13 > [4 0] N + [5 0] XS + [3] 587.55/148.13 [0 0] [0 0] [3] 587.55/148.13 = [c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS))] 587.55/148.13 587.55/148.13 [fst^#(pair(X, Y))] = [2 0] X + [2 0] Y + [0] 587.55/148.13 [0 0] [0 0] [0] 587.55/148.13 >= [2 0] X + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 = [c_24(U21^#(tt(), X))] 587.55/148.13 587.55/148.13 [tail^#(cons(N, XS))] = [3 0] XS + [7] 587.55/148.13 [0 0] [7] 587.55/148.13 >= [3 0] XS + [7] 587.55/148.13 [0 0] [3] 587.55/148.13 = [c_26(U71^#(tt(), activate(XS)), activate^#(XS))] 587.55/148.13 587.55/148.13 587.55/148.13 We return to the main proof. Consider the set of all dependency 587.55/148.13 pairs 587.55/148.13 587.55/148.13 : 587.55/148.13 { 1: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.13 , 2: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.13 , 3: U41^#(tt(), N, XS) -> 587.55/148.13 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 4: U42^#(tt(), N, XS) -> 587.55/148.13 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.13 afterNth^#(activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 5: U11^#(tt(), N, XS) -> 587.55/148.13 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 6: U12^#(tt(), N, XS) -> 587.55/148.13 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 7: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.13 , 8: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.13 , 9: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.13 , 10: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.13 , 11: U31^#(tt(), N) -> 587.55/148.13 c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.13 , 12: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.13 , 13: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.13 , 14: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.13 , 15: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.13 , 16: U61^#(tt(), N, X, XS) -> 587.55/148.13 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 17: U62^#(tt(), N, X, XS) -> 587.55/148.13 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 18: U63^#(tt(), N, X, XS) -> 587.55/148.13 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS), 587.55/148.13 activate^#(X)) 587.55/148.13 , 19: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.13 , 20: U71^#(tt(), XS) -> 587.55/148.13 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.13 , 21: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.13 , 22: U81^#(tt(), N, XS) -> 587.55/148.13 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 23: U82^#(tt(), N, XS) -> 587.55/148.13 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.13 , 25: tail^#(cons(N, XS)) -> 587.55/148.13 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.13 587.55/148.13 Processor 'matrix interpretation of dimension 2' induces the 587.55/148.13 complexity certificate YES(?,O(n^1)) on application of dependency 587.55/148.13 pairs {1,3,16,21,23}. These cover all (indirect) predecessors of 587.55/148.13 dependency pairs 587.55/148.13 {1,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}, 587.55/148.13 their number of application is equally bounded. The dependency 587.55/148.13 pairs are shifted into the weak component. 587.55/148.13 587.55/148.13 We are left with following problem, upon which TcT provides the 587.55/148.13 certificate YES(O(1),O(n^1)). 587.55/148.13 587.55/148.13 Strict DPs: { activate^#(n__s(X)) -> c_4(activate^#(X)) } 587.55/148.13 Weak DPs: 587.55/148.13 { U11^#(tt(), N, XS) -> 587.55/148.13 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , U12^#(tt(), N, XS) -> 587.55/148.13 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.13 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.13 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.13 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.13 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.13 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.13 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.13 , U41^#(tt(), N, XS) -> 587.55/148.13 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , U42^#(tt(), N, XS) -> 587.55/148.13 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.13 afterNth^#(activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.13 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.13 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.13 , U61^#(tt(), N, X, XS) -> 587.55/148.13 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS)) 587.55/148.13 , U62^#(tt(), N, X, XS) -> 587.55/148.13 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS)) 587.55/148.13 , U63^#(tt(), N, X, XS) -> 587.55/148.13 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS), 587.55/148.13 activate^#(X)) 587.55/148.13 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.13 , U71^#(tt(), XS) -> 587.55/148.13 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.13 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.13 , U81^#(tt(), N, XS) -> 587.55/148.13 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , U82^#(tt(), N, XS) -> 587.55/148.13 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.13 , tail^#(cons(N, XS)) -> 587.55/148.13 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.13 Weak Trs: 587.55/148.13 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.13 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.13 , activate(X) -> X 587.55/148.13 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.13 , activate(n__s(X)) -> s(activate(X)) 587.55/148.13 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.13 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.13 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.13 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.13 , U52(tt(), Y) -> activate(Y) 587.55/148.13 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.13 , natsFrom(X) -> n__natsFrom(X) 587.55/148.13 , s(X) -> n__s(X) } 587.55/148.13 Obligation: 587.55/148.13 innermost runtime complexity 587.55/148.13 Answer: 587.55/148.13 YES(O(1),O(n^1)) 587.55/148.13 587.55/148.13 We use the processor 'matrix interpretation of dimension 2' to 587.55/148.13 orient following rules strictly. 587.55/148.13 587.55/148.13 DPs: 587.55/148.13 { 1: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.13 , 11: U41^#(tt(), N, XS) -> 587.55/148.13 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 16: U61^#(tt(), N, X, XS) -> 587.55/148.13 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(X), 587.55/148.13 activate^#(XS)) 587.55/148.13 , 20: U71^#(tt(), XS) -> 587.55/148.13 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.13 , 22: U81^#(tt(), N, XS) -> 587.55/148.13 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.13 activate^#(N), 587.55/148.13 activate^#(XS)) } 587.55/148.13 587.55/148.13 Sub-proof: 587.55/148.13 ---------- 587.55/148.13 The following argument positions are usable: 587.55/148.13 Uargs(c_1) = {1, 2, 3}, Uargs(c_2) = {1, 2, 3}, Uargs(c_3) = {1}, 587.55/148.13 Uargs(c_4) = {1}, Uargs(c_5) = {1}, Uargs(c_6) = {1, 2}, 587.55/148.13 Uargs(c_7) = {1, 2}, Uargs(c_8) = {1}, Uargs(c_9) = {1, 2}, 587.55/148.13 Uargs(c_10) = {1}, Uargs(c_11) = {1, 2, 3}, 587.55/148.13 Uargs(c_12) = {1, 2, 3, 4}, Uargs(c_13) = {1}, Uargs(c_14) = {1}, 587.55/148.13 Uargs(c_15) = {1}, Uargs(c_16) = {1, 2, 3, 4}, 587.55/148.13 Uargs(c_17) = {1, 2, 3, 4}, Uargs(c_18) = {1, 2, 3, 4}, 587.55/148.13 Uargs(c_19) = {1}, Uargs(c_20) = {1, 2}, Uargs(c_21) = {1}, 587.55/148.13 Uargs(c_22) = {1, 2, 3}, Uargs(c_23) = {1, 2, 3}, 587.55/148.13 Uargs(c_24) = {1}, Uargs(c_26) = {1, 2} 587.55/148.13 587.55/148.13 TcT has computed the following constructor-based matrix 587.55/148.13 interpretation satisfying not(EDA) and not(IDA(1)). 587.55/148.13 587.55/148.13 [U11](x1, x2, x3) = [7 4] x1 + [0 0] x2 + [4 1] x3 + [0] 587.55/148.13 [5 5] [4 0] [2 1] [0] 587.55/148.13 587.55/148.13 [tt] = [0] 587.55/148.13 [0] 587.55/148.13 587.55/148.13 [U12](x1, x2, x3) = [5 4] x1 + [4 1] x3 + [0] 587.55/148.13 [5 5] [2 1] [0] 587.55/148.13 587.55/148.13 [activate](x1) = [1 0] x1 + [0] 587.55/148.13 [0 1] [0] 587.55/148.13 587.55/148.13 [snd](x1) = [1 0] x1 + [0] 587.55/148.13 [1 0] [0] 587.55/148.13 587.55/148.13 [splitAt](x1, x2) = [1 1] x2 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [afterNth](x1, x2) = [0 0] x1 + [4 1] x2 + [0] 587.55/148.13 [4 0] [2 1] [0] 587.55/148.13 587.55/148.13 [U51](x1, x2) = [7 4] x1 + [1 0] x2 + [0] 587.55/148.13 [5 5] [0 1] [0] 587.55/148.13 587.55/148.13 [U52](x1, x2) = [7 4] x1 + [1 0] x2 + [0] 587.55/148.13 [7 5] [0 1] [0] 587.55/148.13 587.55/148.13 [pair](x1, x2) = [0 3] x1 + [1 1] x2 + [0] 587.55/148.13 [0 1] [0 0] [0] 587.55/148.13 587.55/148.13 [cons](x1, x2) = [0 2] x1 + [0 1] x2 + [0] 587.55/148.13 [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [natsFrom](x1) = [0 4] x1 + [1] 587.55/148.13 [0 1] [0] 587.55/148.13 587.55/148.13 [n__natsFrom](x1) = [0 4] x1 + [1] 587.55/148.13 [0 1] [0] 587.55/148.13 587.55/148.13 [n__s](x1) = [0 0] x1 + [0] 587.55/148.13 [0 1] [1] 587.55/148.13 587.55/148.13 [0] = [0] 587.55/148.13 [0] 587.55/148.13 587.55/148.13 [nil] = [7] 587.55/148.13 [0] 587.55/148.13 587.55/148.13 [s](x1) = [0 0] x1 + [0] 587.55/148.13 [0 1] [1] 587.55/148.13 587.55/148.13 [U11^#](x1, x2, x3) = [0 4] x2 + [2 4] x3 + [0] 587.55/148.13 [4 0] [4 0] [0] 587.55/148.13 587.55/148.13 [U12^#](x1, x2, x3) = [0 2] x2 + [2 3] x3 + [0] 587.55/148.13 [4 0] [4 0] [4] 587.55/148.13 587.55/148.13 [activate^#](x1) = [0 1] x1 + [0] 587.55/148.13 [0 0] [4] 587.55/148.13 587.55/148.13 [snd^#](x1) = [2 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [U51^#](x1, x2) = [0 2] x2 + [0] 587.55/148.13 [0 4] [4] 587.55/148.13 587.55/148.13 [U21^#](x1, x2) = [0 6] x2 + [0] 587.55/148.13 [0 2] [0] 587.55/148.13 587.55/148.13 [U22^#](x1, x2) = [0 4] x2 + [0] 587.55/148.13 [0 4] [0] 587.55/148.13 587.55/148.13 [U31^#](x1, x2) = [0 2] x2 + [0] 587.55/148.13 [4 0] [0] 587.55/148.13 587.55/148.13 [U32^#](x1, x2) = [0 1] x2 + [0] 587.55/148.13 [4 4] [4] 587.55/148.13 587.55/148.13 [U41^#](x1, x2, x3) = [5 4] x1 + [7 7] x2 + [7 7] x3 + [7] 587.55/148.13 [7 7] [7 7] [7 7] [7] 587.55/148.13 587.55/148.13 [U42^#](x1, x2, x3) = [4 6] x2 + [6 6] x3 + [0] 587.55/148.13 [4 4] [4 0] [0] 587.55/148.13 587.55/148.13 [head^#](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [afterNth^#](x1, x2) = [0 4] x1 + [2 4] x2 + [0] 587.55/148.13 [4 0] [0 0] [0] 587.55/148.13 587.55/148.13 [U52^#](x1, x2) = [0 1] x2 + [0] 587.55/148.13 [4 4] [0] 587.55/148.13 587.55/148.13 [U61^#](x1, x2, x3, x4) = [7 4] x1 + [7 7] x2 + [7 7] x3 + [7 587.55/148.13 7] x4 + [7] 587.55/148.13 [7 5] [7 7] [7 7] [7 587.55/148.13 7] [7] 587.55/148.13 587.55/148.13 [U62^#](x1, x2, x3, x4) = [4 3] x2 + [0 5] x3 + [0 3] x4 + [0] 587.55/148.13 [4 4] [4 4] [0 4] [0] 587.55/148.13 587.55/148.13 [U63^#](x1, x2, x3, x4) = [0 1] x2 + [0 2] x3 + [0 1] x4 + [0] 587.55/148.13 [4 0] [0 0] [0 4] [4] 587.55/148.13 587.55/148.13 [U64^#](x1, x2) = [0 1] x2 + [0] 587.55/148.13 [4 0] [0] 587.55/148.13 587.55/148.13 [U71^#](x1, x2) = [0 4] x2 + [4] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [U72^#](x1, x2) = [0 1] x2 + [0] 587.55/148.13 [0 4] [4] 587.55/148.13 587.55/148.13 [U81^#](x1, x2, x3) = [5 4] x1 + [7 7] x2 + [7 7] x3 + [7] 587.55/148.13 [5 7] [7 7] [7 7] [7] 587.55/148.13 587.55/148.13 [U82^#](x1, x2, x3) = [0 1] x2 + [2 3] x3 + [0] 587.55/148.13 [0 0] [4 0] [0] 587.55/148.13 587.55/148.13 [fst^#](x1) = [2 6] x1 + [0] 587.55/148.13 [0 0] [4] 587.55/148.13 587.55/148.13 [tail^#](x1) = [5 0] x1 + [7] 587.55/148.13 [0 0] [7] 587.55/148.13 587.55/148.13 [c_1](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [c_2](x1, x2, x3) = [1 0] x1 + [2 0] x2 + [1 0] x3 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [3] 587.55/148.13 587.55/148.13 [c_3](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [3] 587.55/148.13 587.55/148.13 [c_4](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [3] 587.55/148.13 587.55/148.13 [c_5](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_6](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.13 [0 0] [0 0] [3] 587.55/148.13 587.55/148.13 [c_7](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.13 [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [c_8](x1) = [4 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_9](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 587.55/148.13 [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [c_10](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [3] 587.55/148.13 587.55/148.13 [c_11](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [3] 587.55/148.13 [0 0] [0 0] [0 0] [3] 587.55/148.13 587.55/148.13 [c_12](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [2 0] x3 + [1 587.55/148.13 0] x4 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [0 587.55/148.13 0] [0] 587.55/148.13 587.55/148.13 [c_13](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_14](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_15](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_16](x1, x2, x3, x4) = [1 0] x1 + [4 0] x2 + [1 0] x3 + [4 587.55/148.13 0] x4 + [3] 587.55/148.13 [0 0] [0 0] [0 0] [0 587.55/148.13 0] [3] 587.55/148.13 587.55/148.13 [c_17](x1, x2, x3, x4) = [2 0] x1 + [1 0] x2 + [1 0] x3 + [1 587.55/148.13 0] x4 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [0 587.55/148.13 0] [0] 587.55/148.13 587.55/148.13 [c_18](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [1 587.55/148.13 0] x4 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [0 587.55/148.13 0] [3] 587.55/148.13 587.55/148.13 [c_19](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [0] 587.55/148.13 587.55/148.13 [c_20](x1, x2) = [1 0] x1 + [1 0] x2 + [3] 587.55/148.13 [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [c_21](x1) = [1 0] x1 + [0] 587.55/148.13 [0 0] [3] 587.55/148.13 587.55/148.13 [c_22](x1, x2, x3) = [2 0] x1 + [4 0] x2 + [1 0] x3 + [3] 587.55/148.13 [0 0] [0 0] [0 0] [3] 587.55/148.13 587.55/148.13 [c_23](x1, x2, x3) = [1 0] x1 + [1 0] x2 + [1 0] x3 + [0] 587.55/148.13 [0 0] [0 0] [0 0] [0] 587.55/148.13 587.55/148.13 [c_24](x1) = [1 1] x1 + [0] 587.55/148.13 [0 0] [3] 587.55/148.13 587.55/148.13 [c_26](x1, x2) = [1 0] x1 + [1 0] x2 + [3] 587.55/148.13 [0 0] [0 0] [3] 587.55/148.13 587.55/148.13 The order satisfies the following ordering constraints: 587.55/148.13 587.55/148.13 [U11(tt(), N, XS)] = [0 0] N + [4 1] XS + [0] 587.55/148.13 [4 0] [2 1] [0] 587.55/148.13 >= [4 1] XS + [0] 587.55/148.13 [2 1] [0] 587.55/148.13 = [U12(tt(), activate(N), activate(XS))] 587.55/148.13 587.55/148.13 [U12(tt(), N, XS)] = [4 1] XS + [0] 587.55/148.14 [2 1] [0] 587.55/148.14 >= [1 1] XS + [0] 587.55/148.14 [1 1] [0] 587.55/148.14 = [snd(splitAt(activate(N), activate(XS)))] 587.55/148.14 587.55/148.14 [activate(X)] = [1 0] X + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [1 0] X + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 = [X] 587.55/148.14 587.55/148.14 [activate(n__natsFrom(X))] = [0 4] X + [1] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [0 4] X + [1] 587.55/148.14 [0 1] [0] 587.55/148.14 = [natsFrom(activate(X))] 587.55/148.14 587.55/148.14 [activate(n__s(X))] = [0 0] X + [0] 587.55/148.14 [0 1] [1] 587.55/148.14 >= [0 0] X + [0] 587.55/148.14 [0 1] [1] 587.55/148.14 = [s(activate(X))] 587.55/148.14 587.55/148.14 [snd(pair(X, Y))] = [0 3] X + [1 1] Y + [0] 587.55/148.14 [0 3] [1 1] [0] 587.55/148.14 >= [1 0] Y + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 = [U51(tt(), Y)] 587.55/148.14 587.55/148.14 [splitAt(0(), XS)] = [1 1] XS + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 >= [1 1] XS + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [pair(nil(), XS)] 587.55/148.14 587.55/148.14 [afterNth(N, XS)] = [0 0] N + [4 1] XS + [0] 587.55/148.14 [4 0] [2 1] [0] 587.55/148.14 >= [0 0] N + [4 1] XS + [0] 587.55/148.14 [4 0] [2 1] [0] 587.55/148.14 = [U11(tt(), N, XS)] 587.55/148.14 587.55/148.14 [U51(tt(), Y)] = [1 0] Y + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [1 0] Y + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 = [U52(tt(), activate(Y))] 587.55/148.14 587.55/148.14 [U52(tt(), Y)] = [1 0] Y + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [1 0] Y + [0] 587.55/148.14 [0 1] [0] 587.55/148.14 = [activate(Y)] 587.55/148.14 587.55/148.14 [natsFrom(N)] = [0 4] N + [1] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [0 3] N + [1] 587.55/148.14 [0 0] [0] 587.55/148.14 = [cons(N, n__natsFrom(n__s(N)))] 587.55/148.14 587.55/148.14 [natsFrom(X)] = [0 4] X + [1] 587.55/148.14 [0 1] [0] 587.55/148.14 >= [0 4] X + [1] 587.55/148.14 [0 1] [0] 587.55/148.14 = [n__natsFrom(X)] 587.55/148.14 587.55/148.14 [s(X)] = [0 0] X + [0] 587.55/148.14 [0 1] [1] 587.55/148.14 >= [0 0] X + [0] 587.55/148.14 [0 1] [1] 587.55/148.14 = [n__s(X)] 587.55/148.14 587.55/148.14 [U11^#(tt(), N, XS)] = [0 4] N + [2 4] XS + [0] 587.55/148.14 [4 0] [4 0] [0] 587.55/148.14 >= [0 3] N + [2 4] XS + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 = [c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [U12^#(tt(), N, XS)] = [0 2] N + [2 3] XS + [0] 587.55/148.14 [4 0] [4 0] [4] 587.55/148.14 >= [0 2] N + [2 3] XS + [0] 587.55/148.14 [0 0] [0 0] [3] 587.55/148.14 = [c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [activate^#(n__natsFrom(X))] = [0 1] X + [0] 587.55/148.14 [0 0] [4] 587.55/148.14 >= [0 1] X + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_3(activate^#(X))] 587.55/148.14 587.55/148.14 [activate^#(n__s(X))] = [0 1] X + [1] 587.55/148.14 [0 0] [4] 587.55/148.14 > [0 1] X + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_4(activate^#(X))] 587.55/148.14 587.55/148.14 [snd^#(pair(X, Y))] = [0 6] X + [2 2] Y + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 >= [0 2] Y + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_5(U51^#(tt(), Y))] 587.55/148.14 587.55/148.14 [U51^#(tt(), Y)] = [0 2] Y + [0] 587.55/148.14 [0 4] [4] 587.55/148.14 >= [0 2] Y + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_6(U52^#(tt(), activate(Y)), activate^#(Y))] 587.55/148.14 587.55/148.14 [U21^#(tt(), X)] = [0 6] X + [0] 587.55/148.14 [0 2] [0] 587.55/148.14 >= [0 5] X + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_7(U22^#(tt(), activate(X)), activate^#(X))] 587.55/148.14 587.55/148.14 [U22^#(tt(), X)] = [0 4] X + [0] 587.55/148.14 [0 4] [0] 587.55/148.14 >= [0 4] X + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_8(activate^#(X))] 587.55/148.14 587.55/148.14 [U31^#(tt(), N)] = [0 2] N + [0] 587.55/148.14 [4 0] [0] 587.55/148.14 >= [0 2] N + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_9(U32^#(tt(), activate(N)), activate^#(N))] 587.55/148.14 587.55/148.14 [U32^#(tt(), N)] = [0 1] N + [0] 587.55/148.14 [4 4] [4] 587.55/148.14 >= [0 1] N + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_10(activate^#(N))] 587.55/148.14 587.55/148.14 [U41^#(tt(), N, XS)] = [7 7] N + [7 7] XS + [7] 587.55/148.14 [7 7] [7 7] [7] 587.55/148.14 > [4 7] N + [6 7] XS + [3] 587.55/148.14 [0 0] [0 0] [3] 587.55/148.14 = [c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [U42^#(tt(), N, XS)] = [4 6] N + [6 6] XS + [0] 587.55/148.14 [4 4] [4 0] [0] 587.55/148.14 >= [0 6] N + [6 6] XS + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 = [c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.14 afterNth^#(activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [head^#(cons(N, XS))] = [0 2] N + [0 1] XS + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 >= [0 2] N + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_13(U31^#(tt(), N))] 587.55/148.14 587.55/148.14 [afterNth^#(N, XS)] = [0 4] N + [2 4] XS + [0] 587.55/148.14 [4 0] [0 0] [0] 587.55/148.14 >= [0 4] N + [2 4] XS + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 = [c_14(U11^#(tt(), N, XS))] 587.55/148.14 587.55/148.14 [U52^#(tt(), Y)] = [0 1] Y + [0] 587.55/148.14 [4 4] [0] 587.55/148.14 >= [0 1] Y + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_15(activate^#(Y))] 587.55/148.14 587.55/148.14 [U61^#(tt(), N, X, XS)] = [7 7] N + [7 7] XS + [7 7] X + [7] 587.55/148.14 [7 7] [7 7] [7 7] [7] 587.55/148.14 > [4 7] N + [0 7] XS + [0 6] X + [3] 587.55/148.14 [0 0] [0 0] [0 0] [3] 587.55/148.14 = [c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [U62^#(tt(), N, X, XS)] = [4 3] N + [0 3] XS + [0 5] X + [0] 587.55/148.14 [4 4] [0 4] [4 4] [0] 587.55/148.14 >= [0 3] N + [0 3] XS + [0 5] X + [0] 587.55/148.14 [0 0] [0 0] [0 0] [0] 587.55/148.14 = [c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [U63^#(tt(), N, X, XS)] = [0 1] N + [0 1] XS + [0 2] X + [0] 587.55/148.14 [4 0] [0 4] [0 0] [4] 587.55/148.14 >= [0 1] N + [0 1] XS + [0 2] X + [0] 587.55/148.14 [0 0] [0 0] [0 0] [3] 587.55/148.14 = [c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS), 587.55/148.14 activate^#(X))] 587.55/148.14 587.55/148.14 [U64^#(pair(YS, ZS), X)] = [0 1] X + [0] 587.55/148.14 [4 0] [0] 587.55/148.14 >= [0 1] X + [0] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_19(activate^#(X))] 587.55/148.14 587.55/148.14 [U71^#(tt(), XS)] = [0 4] XS + [4] 587.55/148.14 [0 0] [0] 587.55/148.14 > [0 2] XS + [3] 587.55/148.14 [0 0] [0] 587.55/148.14 = [c_20(U72^#(tt(), activate(XS)), activate^#(XS))] 587.55/148.14 587.55/148.14 [U72^#(tt(), XS)] = [0 1] XS + [0] 587.55/148.14 [0 4] [4] 587.55/148.14 >= [0 1] XS + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_21(activate^#(XS))] 587.55/148.14 587.55/148.14 [U81^#(tt(), N, XS)] = [7 7] N + [7 7] XS + [7] 587.55/148.14 [7 7] [7 7] [7] 587.55/148.14 > [0 6] N + [4 7] XS + [3] 587.55/148.14 [0 0] [0 0] [3] 587.55/148.14 = [c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [U82^#(tt(), N, XS)] = [0 1] N + [2 3] XS + [0] 587.55/148.14 [0 0] [4 0] [0] 587.55/148.14 >= [0 1] N + [2 3] XS + [0] 587.55/148.14 [0 0] [0 0] [0] 587.55/148.14 = [c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS))] 587.55/148.14 587.55/148.14 [fst^#(pair(X, Y))] = [0 12] X + [2 2] Y + [0] 587.55/148.14 [0 0] [0 0] [4] 587.55/148.14 >= [0 8] X + [0] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_24(U21^#(tt(), X))] 587.55/148.14 587.55/148.14 [tail^#(cons(N, XS))] = [0 10] N + [0 5] XS + [7] 587.55/148.14 [0 0] [0 0] [7] 587.55/148.14 >= [0 5] XS + [7] 587.55/148.14 [0 0] [3] 587.55/148.14 = [c_26(U71^#(tt(), activate(XS)), activate^#(XS))] 587.55/148.14 587.55/148.14 587.55/148.14 We return to the main proof. Consider the set of all dependency 587.55/148.14 pairs 587.55/148.14 587.55/148.14 : 587.55/148.14 { 1: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.14 , 2: U11^#(tt(), N, XS) -> 587.55/148.14 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 3: U12^#(tt(), N, XS) -> 587.55/148.14 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 4: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.14 , 5: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.14 , 6: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.14 , 7: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.14 , 8: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.14 , 9: U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.14 , 10: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.14 , 11: U41^#(tt(), N, XS) -> 587.55/148.14 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 12: U42^#(tt(), N, XS) -> 587.55/148.14 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.14 afterNth^#(activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 13: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.14 , 14: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.14 , 15: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.14 , 16: U61^#(tt(), N, X, XS) -> 587.55/148.14 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 17: U62^#(tt(), N, X, XS) -> 587.55/148.14 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 18: U63^#(tt(), N, X, XS) -> 587.55/148.14 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS), 587.55/148.14 activate^#(X)) 587.55/148.14 , 19: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.14 , 20: U71^#(tt(), XS) -> 587.55/148.14 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.14 , 21: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.14 , 22: U81^#(tt(), N, XS) -> 587.55/148.14 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 23: U82^#(tt(), N, XS) -> 587.55/148.14 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.14 , 25: tail^#(cons(N, XS)) -> 587.55/148.14 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.14 587.55/148.14 Processor 'matrix interpretation of dimension 2' induces the 587.55/148.14 complexity certificate YES(?,O(n^1)) on application of dependency 587.55/148.14 pairs {1,11,16,20,22}. These cover all (indirect) predecessors of 587.55/148.14 dependency pairs 587.55/148.14 {1,2,3,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25}, 587.55/148.14 their number of application is equally bounded. The dependency 587.55/148.14 pairs are shifted into the weak component. 587.55/148.14 587.55/148.14 We are left with following problem, upon which TcT provides the 587.55/148.14 certificate YES(O(1),O(1)). 587.55/148.14 587.55/148.14 Weak DPs: 587.55/148.14 { U11^#(tt(), N, XS) -> 587.55/148.14 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U12^#(tt(), N, XS) -> 587.55/148.14 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.14 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.14 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.14 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.14 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.14 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.14 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.14 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.14 , U41^#(tt(), N, XS) -> 587.55/148.14 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U42^#(tt(), N, XS) -> 587.55/148.14 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.14 afterNth^#(activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.14 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.14 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.14 , U61^#(tt(), N, X, XS) -> 587.55/148.14 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U62^#(tt(), N, X, XS) -> 587.55/148.14 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(X), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U63^#(tt(), N, X, XS) -> 587.55/148.14 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS), 587.55/148.14 activate^#(X)) 587.55/148.14 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.14 , U71^#(tt(), XS) -> 587.55/148.14 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.14 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.14 , U81^#(tt(), N, XS) -> 587.55/148.14 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U82^#(tt(), N, XS) -> 587.55/148.14 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.14 , tail^#(cons(N, XS)) -> 587.55/148.14 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.14 Weak Trs: 587.55/148.14 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.14 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.14 , activate(X) -> X 587.55/148.14 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.14 , activate(n__s(X)) -> s(activate(X)) 587.55/148.14 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.14 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.14 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.14 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.14 , U52(tt(), Y) -> activate(Y) 587.55/148.14 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.14 , natsFrom(X) -> n__natsFrom(X) 587.55/148.14 , s(X) -> n__s(X) } 587.55/148.14 Obligation: 587.55/148.14 innermost runtime complexity 587.55/148.14 Answer: 587.55/148.14 YES(O(1),O(1)) 587.55/148.14 587.55/148.14 The following weak DPs constitute a sub-graph of the DG that is 587.55/148.14 closed under successors. The DPs are removed. 587.55/148.14 587.55/148.14 { U11^#(tt(), N, XS) -> 587.55/148.14 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , U12^#(tt(), N, XS) -> 587.55/148.14 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.14 activate^#(N), 587.55/148.14 activate^#(XS)) 587.55/148.14 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.15 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.15 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.15 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.15 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.15 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.15 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.15 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.15 , U41^#(tt(), N, XS) -> 587.55/148.15 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U42^#(tt(), N, XS) -> 587.55/148.15 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.15 afterNth^#(activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.15 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.15 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.15 , U61^#(tt(), N, X, XS) -> 587.55/148.15 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U62^#(tt(), N, X, XS) -> 587.55/148.15 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U63^#(tt(), N, X, XS) -> 587.55/148.15 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS), 587.55/148.15 activate^#(X)) 587.55/148.15 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.15 , U71^#(tt(), XS) -> 587.55/148.15 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.15 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.15 , U81^#(tt(), N, XS) -> 587.55/148.15 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U82^#(tt(), N, XS) -> 587.55/148.15 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.15 , tail^#(cons(N, XS)) -> 587.55/148.15 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.15 587.55/148.15 We are left with following problem, upon which TcT provides the 587.55/148.15 certificate YES(O(1),O(1)). 587.55/148.15 587.55/148.15 Weak Trs: 587.55/148.15 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.15 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.15 , activate(X) -> X 587.55/148.15 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.15 , activate(n__s(X)) -> s(activate(X)) 587.55/148.15 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.15 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.15 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.15 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.15 , U52(tt(), Y) -> activate(Y) 587.55/148.15 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.15 , natsFrom(X) -> n__natsFrom(X) 587.55/148.15 , s(X) -> n__s(X) } 587.55/148.15 Obligation: 587.55/148.15 innermost runtime complexity 587.55/148.15 Answer: 587.55/148.15 YES(O(1),O(1)) 587.55/148.15 587.55/148.15 No rule is usable, rules are removed from the input problem. 587.55/148.15 587.55/148.15 We are left with following problem, upon which TcT provides the 587.55/148.15 certificate YES(O(1),O(1)). 587.55/148.15 587.55/148.15 Rules: Empty 587.55/148.15 Obligation: 587.55/148.15 innermost runtime complexity 587.55/148.15 Answer: 587.55/148.15 YES(O(1),O(1)) 587.55/148.15 587.55/148.15 Empty rules are trivially bounded 587.55/148.15 587.55/148.15 S) We are left with following problem, upon which TcT provides the 587.55/148.15 certificate YES(O(1),O(1)). 587.55/148.15 587.55/148.15 Strict DPs: 587.55/148.15 { U11^#(tt(), N, XS) -> 587.55/148.15 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.15 Weak DPs: 587.55/148.15 { U12^#(tt(), N, XS) -> 587.55/148.15 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.15 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.15 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.15 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.15 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.15 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.15 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.15 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.15 , U41^#(tt(), N, XS) -> 587.55/148.15 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U42^#(tt(), N, XS) -> 587.55/148.15 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.15 afterNth^#(activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.15 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.15 , U61^#(tt(), N, X, XS) -> 587.55/148.15 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U62^#(tt(), N, X, XS) -> 587.55/148.15 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U63^#(tt(), N, X, XS) -> 587.55/148.15 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS), 587.55/148.15 activate^#(X)) 587.55/148.15 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.15 , U71^#(tt(), XS) -> 587.55/148.15 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.15 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.15 , U81^#(tt(), N, XS) -> 587.55/148.15 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U82^#(tt(), N, XS) -> 587.55/148.15 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.15 , tail^#(cons(N, XS)) -> 587.55/148.15 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.15 Weak Trs: 587.55/148.15 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.15 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.15 , activate(X) -> X 587.55/148.15 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.15 , activate(n__s(X)) -> s(activate(X)) 587.55/148.15 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.15 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.15 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.15 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.15 , U52(tt(), Y) -> activate(Y) 587.55/148.15 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.15 , natsFrom(X) -> n__natsFrom(X) 587.55/148.15 , s(X) -> n__s(X) } 587.55/148.15 Obligation: 587.55/148.15 innermost runtime complexity 587.55/148.15 Answer: 587.55/148.15 YES(O(1),O(1)) 587.55/148.15 587.55/148.15 We estimate the number of application of {1} by applications of 587.55/148.15 Pre({1}) = {2}. Here rules are labeled as follows: 587.55/148.15 587.55/148.15 DPs: 587.55/148.15 { 1: U11^#(tt(), N, XS) -> 587.55/148.15 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 2: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.15 , 3: U12^#(tt(), N, XS) -> 587.55/148.15 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 4: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.15 , 5: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.15 , 6: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.15 , 7: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.15 , 8: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.15 , 9: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.15 , 10: U31^#(tt(), N) -> 587.55/148.15 c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.15 , 11: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.15 , 12: U41^#(tt(), N, XS) -> 587.55/148.15 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 13: U42^#(tt(), N, XS) -> 587.55/148.15 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.15 afterNth^#(activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 14: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.15 , 15: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.15 , 16: U61^#(tt(), N, X, XS) -> 587.55/148.15 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 17: U62^#(tt(), N, X, XS) -> 587.55/148.15 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 18: U63^#(tt(), N, X, XS) -> 587.55/148.15 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS), 587.55/148.15 activate^#(X)) 587.55/148.15 , 19: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.15 , 20: U71^#(tt(), XS) -> 587.55/148.15 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.15 , 21: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.15 , 22: U81^#(tt(), N, XS) -> 587.55/148.15 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 23: U82^#(tt(), N, XS) -> 587.55/148.15 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.15 , 25: tail^#(cons(N, XS)) -> 587.55/148.15 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.15 587.55/148.15 We are left with following problem, upon which TcT provides the 587.55/148.15 certificate YES(O(1),O(1)). 587.55/148.15 587.55/148.15 Strict DPs: { afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.15 Weak DPs: 587.55/148.15 { U11^#(tt(), N, XS) -> 587.55/148.15 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U12^#(tt(), N, XS) -> 587.55/148.15 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.15 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.15 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.15 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.15 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.15 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.15 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.15 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.15 , U41^#(tt(), N, XS) -> 587.55/148.15 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U42^#(tt(), N, XS) -> 587.55/148.15 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.15 afterNth^#(activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.15 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.15 , U61^#(tt(), N, X, XS) -> 587.55/148.15 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U62^#(tt(), N, X, XS) -> 587.55/148.15 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U63^#(tt(), N, X, XS) -> 587.55/148.15 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS), 587.55/148.15 activate^#(X)) 587.55/148.15 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.15 , U71^#(tt(), XS) -> 587.55/148.15 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.15 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.15 , U81^#(tt(), N, XS) -> 587.55/148.15 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U82^#(tt(), N, XS) -> 587.55/148.15 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.15 , tail^#(cons(N, XS)) -> 587.55/148.15 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.15 Weak Trs: 587.55/148.15 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.15 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.15 , activate(X) -> X 587.55/148.15 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.15 , activate(n__s(X)) -> s(activate(X)) 587.55/148.15 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.15 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.15 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.15 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.15 , U52(tt(), Y) -> activate(Y) 587.55/148.15 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.15 , natsFrom(X) -> n__natsFrom(X) 587.55/148.15 , s(X) -> n__s(X) } 587.55/148.15 Obligation: 587.55/148.15 innermost runtime complexity 587.55/148.15 Answer: 587.55/148.15 YES(O(1),O(1)) 587.55/148.15 587.55/148.15 The following weak DPs constitute a sub-graph of the DG that is 587.55/148.15 closed under successors. The DPs are removed. 587.55/148.15 587.55/148.15 { U11^#(tt(), N, XS) -> 587.55/148.15 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U12^#(tt(), N, XS) -> 587.55/148.15 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.15 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.15 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.15 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.15 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.15 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.15 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.15 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.15 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.15 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.15 , U61^#(tt(), N, X, XS) -> 587.55/148.15 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U62^#(tt(), N, X, XS) -> 587.55/148.15 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(X), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U63^#(tt(), N, X, XS) -> 587.55/148.15 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS), 587.55/148.15 activate^#(X)) 587.55/148.15 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.15 , U71^#(tt(), XS) -> 587.55/148.15 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.15 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.15 , U81^#(tt(), N, XS) -> 587.55/148.15 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U82^#(tt(), N, XS) -> 587.55/148.15 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.15 , tail^#(cons(N, XS)) -> 587.55/148.15 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.15 587.55/148.15 We are left with following problem, upon which TcT provides the 587.55/148.15 certificate YES(O(1),O(1)). 587.55/148.15 587.55/148.15 Strict DPs: { afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.15 Weak DPs: 587.55/148.15 { U41^#(tt(), N, XS) -> 587.55/148.15 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) 587.55/148.15 , U42^#(tt(), N, XS) -> 587.55/148.15 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.15 afterNth^#(activate(N), activate(XS)), 587.55/148.15 activate^#(N), 587.55/148.15 activate^#(XS)) } 587.55/148.15 Weak Trs: 587.55/148.15 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.15 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.15 , activate(X) -> X 587.55/148.15 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.15 , activate(n__s(X)) -> s(activate(X)) 587.55/148.15 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.15 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.15 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.15 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.15 , U52(tt(), Y) -> activate(Y) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 Due to missing edges in the dependency-graph, the right-hand sides 587.55/148.16 of following rules could be simplified: 587.55/148.16 587.55/148.16 { U41^#(tt(), N, XS) -> 587.55/148.16 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U42^#(tt(), N, XS) -> 587.55/148.16 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.16 afterNth^#(activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Strict DPs: { afterNth^#(N, XS) -> c_1() } 587.55/148.16 Weak DPs: 587.55/148.16 { U41^#(tt(), N, XS) -> c_2(U42^#(tt(), activate(N), activate(XS))) 587.55/148.16 , U42^#(tt(), N, XS) -> 587.55/148.16 c_3(afterNth^#(activate(N), activate(XS))) } 587.55/148.16 Weak Trs: 587.55/148.16 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.16 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.16 , activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.16 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.16 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.16 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.16 , U52(tt(), Y) -> activate(Y) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 We replace rewrite rules by usable rules: 587.55/148.16 587.55/148.16 Weak Usable Rules: 587.55/148.16 { activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Strict DPs: { afterNth^#(N, XS) -> c_1() } 587.55/148.16 Weak DPs: 587.55/148.16 { U41^#(tt(), N, XS) -> c_2(U42^#(tt(), activate(N), activate(XS))) 587.55/148.16 , U42^#(tt(), N, XS) -> 587.55/148.16 c_3(afterNth^#(activate(N), activate(XS))) } 587.55/148.16 Weak Trs: 587.55/148.16 { activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 The dependency graph contains no loops, we remove all dependency 587.55/148.16 pairs. 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Weak Trs: 587.55/148.16 { activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 No rule is usable, rules are removed from the input problem. 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Rules: Empty 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 Empty rules are trivially bounded 587.55/148.16 587.55/148.16 587.55/148.16 S) We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Strict DPs: 587.55/148.16 { U12^#(tt(), N, XS) -> 587.55/148.16 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.16 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.16 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.16 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.16 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.16 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.16 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.16 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.16 , U61^#(tt(), N, X, XS) -> 587.55/148.16 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U62^#(tt(), N, X, XS) -> 587.55/148.16 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U63^#(tt(), N, X, XS) -> 587.55/148.16 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS), 587.55/148.16 activate^#(X)) 587.55/148.16 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.16 , U71^#(tt(), XS) -> 587.55/148.16 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.16 , U81^#(tt(), N, XS) -> 587.55/148.16 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U82^#(tt(), N, XS) -> 587.55/148.16 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.16 , tail^#(cons(N, XS)) -> 587.55/148.16 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.16 Weak DPs: 587.55/148.16 { U11^#(tt(), N, XS) -> 587.55/148.16 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.16 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.16 , U41^#(tt(), N, XS) -> 587.55/148.16 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U42^#(tt(), N, XS) -> 587.55/148.16 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.16 afterNth^#(activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.16 Weak Trs: 587.55/148.16 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.16 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.16 , activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.16 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.16 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.16 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.16 , U52(tt(), Y) -> activate(Y) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 We estimate the number of application of {5,7,9,13,15} by 587.55/148.16 applications of Pre({5,7,9,13,15}) = {3,4,6,12,14}. Here rules are 587.55/148.16 labeled as follows: 587.55/148.16 587.55/148.16 DPs: 587.55/148.16 { 1: U12^#(tt(), N, XS) -> 587.55/148.16 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 2: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.16 , 3: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.16 , 4: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.16 , 5: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.16 , 6: U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.16 , 7: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.16 , 8: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.16 , 9: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.16 , 10: U61^#(tt(), N, X, XS) -> 587.55/148.16 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 11: U62^#(tt(), N, X, XS) -> 587.55/148.16 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 12: U63^#(tt(), N, X, XS) -> 587.55/148.16 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS), 587.55/148.16 activate^#(X)) 587.55/148.16 , 13: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.16 , 14: U71^#(tt(), XS) -> 587.55/148.16 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , 15: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.16 , 16: U81^#(tt(), N, XS) -> 587.55/148.16 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 17: U82^#(tt(), N, XS) -> 587.55/148.16 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 18: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.16 , 19: tail^#(cons(N, XS)) -> 587.55/148.16 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , 20: U11^#(tt(), N, XS) -> 587.55/148.16 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 21: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.16 , 22: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.16 , 23: U41^#(tt(), N, XS) -> 587.55/148.16 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 24: U42^#(tt(), N, XS) -> 587.55/148.16 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.16 afterNth^#(activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 25: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Strict DPs: 587.55/148.16 { U12^#(tt(), N, XS) -> 587.55/148.16 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.16 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.16 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.16 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.16 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.16 , U61^#(tt(), N, X, XS) -> 587.55/148.16 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U62^#(tt(), N, X, XS) -> 587.55/148.16 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U63^#(tt(), N, X, XS) -> 587.55/148.16 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS), 587.55/148.16 activate^#(X)) 587.55/148.16 , U71^#(tt(), XS) -> 587.55/148.16 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , U81^#(tt(), N, XS) -> 587.55/148.16 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U82^#(tt(), N, XS) -> 587.55/148.16 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.16 , tail^#(cons(N, XS)) -> 587.55/148.16 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.16 Weak DPs: 587.55/148.16 { U11^#(tt(), N, XS) -> 587.55/148.16 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.16 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.16 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.16 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.16 , U41^#(tt(), N, XS) -> 587.55/148.16 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , U42^#(tt(), N, XS) -> 587.55/148.16 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.16 afterNth^#(activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.16 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.16 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.16 , U72^#(tt(), XS) -> c_21(activate^#(XS)) } 587.55/148.16 Weak Trs: 587.55/148.16 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.16 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.16 , activate(X) -> X 587.55/148.16 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.16 , activate(n__s(X)) -> s(activate(X)) 587.55/148.16 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.16 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.16 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.16 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.16 , U52(tt(), Y) -> activate(Y) 587.55/148.16 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.16 , natsFrom(X) -> n__natsFrom(X) 587.55/148.16 , s(X) -> n__s(X) } 587.55/148.16 Obligation: 587.55/148.16 innermost runtime complexity 587.55/148.16 Answer: 587.55/148.16 YES(O(1),O(1)) 587.55/148.16 587.55/148.16 We estimate the number of application of {3,4,5,9,10} by 587.55/148.16 applications of Pre({3,4,5,9,10}) = {2,6,8,13,14}. Here rules are 587.55/148.16 labeled as follows: 587.55/148.16 587.55/148.16 DPs: 587.55/148.16 { 1: U12^#(tt(), N, XS) -> 587.55/148.16 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 2: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.16 , 3: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.16 , 4: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.16 , 5: U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.16 , 6: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.16 , 7: U61^#(tt(), N, X, XS) -> 587.55/148.16 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 8: U62^#(tt(), N, X, XS) -> 587.55/148.16 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(X), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 9: U63^#(tt(), N, X, XS) -> 587.55/148.16 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS), 587.55/148.16 activate^#(X)) 587.55/148.16 , 10: U71^#(tt(), XS) -> 587.55/148.16 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , 11: U81^#(tt(), N, XS) -> 587.55/148.16 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 12: U82^#(tt(), N, XS) -> 587.55/148.16 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 13: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.16 , 14: tail^#(cons(N, XS)) -> 587.55/148.16 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.16 , 15: U11^#(tt(), N, XS) -> 587.55/148.16 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 16: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.16 , 17: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.16 , 18: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.16 , 19: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.16 , 20: U41^#(tt(), N, XS) -> 587.55/148.16 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 21: U42^#(tt(), N, XS) -> 587.55/148.16 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.16 afterNth^#(activate(N), activate(XS)), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , 22: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.16 , 23: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.16 , 24: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.16 , 25: U72^#(tt(), XS) -> c_21(activate^#(XS)) } 587.55/148.16 587.55/148.16 We are left with following problem, upon which TcT provides the 587.55/148.16 certificate YES(O(1),O(1)). 587.55/148.16 587.55/148.16 Strict DPs: 587.55/148.16 { U12^#(tt(), N, XS) -> 587.55/148.16 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.16 activate^#(N), 587.55/148.16 activate^#(XS)) 587.55/148.16 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.16 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.16 , U61^#(tt(), N, X, XS) -> 587.55/148.16 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U62^#(tt(), N, X, XS) -> 587.55/148.17 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U82^#(tt(), N, XS) -> 587.55/148.17 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.17 , tail^#(cons(N, XS)) -> 587.55/148.17 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.17 Weak DPs: 587.55/148.17 { U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.17 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.17 , U63^#(tt(), N, X, XS) -> 587.55/148.17 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS), 587.55/148.17 activate^#(X)) 587.55/148.17 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.17 , U71^#(tt(), XS) -> 587.55/148.17 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , U72^#(tt(), XS) -> c_21(activate^#(XS)) } 587.55/148.17 Weak Trs: 587.55/148.17 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.17 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.17 , activate(X) -> X 587.55/148.17 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.17 , activate(n__s(X)) -> s(activate(X)) 587.55/148.17 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.17 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.17 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.17 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.17 , U52(tt(), Y) -> activate(Y) 587.55/148.17 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.17 , natsFrom(X) -> n__natsFrom(X) 587.55/148.17 , s(X) -> n__s(X) } 587.55/148.17 Obligation: 587.55/148.17 innermost runtime complexity 587.55/148.17 Answer: 587.55/148.17 YES(O(1),O(1)) 587.55/148.17 587.55/148.17 We estimate the number of application of {2,5,8,9} by applications 587.55/148.17 of Pre({2,5,8,9}) = {1,4,7}. Here rules are labeled as follows: 587.55/148.17 587.55/148.17 DPs: 587.55/148.17 { 1: U12^#(tt(), N, XS) -> 587.55/148.17 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 2: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.17 , 3: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.17 , 4: U61^#(tt(), N, X, XS) -> 587.55/148.17 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 5: U62^#(tt(), N, X, XS) -> 587.55/148.17 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 6: U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 7: U82^#(tt(), N, XS) -> 587.55/148.17 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 8: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.17 , 9: tail^#(cons(N, XS)) -> 587.55/148.17 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , 10: U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 11: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , 12: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , 13: U51^#(tt(), Y) -> 587.55/148.17 c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , 14: U21^#(tt(), X) -> 587.55/148.17 c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , 15: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , 16: U31^#(tt(), N) -> 587.55/148.17 c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , 17: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , 18: U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 19: U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 20: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.17 , 21: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.17 , 22: U63^#(tt(), N, X, XS) -> 587.55/148.17 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS), 587.55/148.17 activate^#(X)) 587.55/148.17 , 23: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.17 , 24: U71^#(tt(), XS) -> 587.55/148.17 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , 25: U72^#(tt(), XS) -> c_21(activate^#(XS)) } 587.55/148.17 587.55/148.17 We are left with following problem, upon which TcT provides the 587.55/148.17 certificate YES(O(1),O(1)). 587.55/148.17 587.55/148.17 Strict DPs: 587.55/148.17 { U12^#(tt(), N, XS) -> 587.55/148.17 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.17 , U61^#(tt(), N, X, XS) -> 587.55/148.17 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U82^#(tt(), N, XS) -> 587.55/148.17 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) } 587.55/148.17 Weak DPs: 587.55/148.17 { U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.17 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.17 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.17 , U62^#(tt(), N, X, XS) -> 587.55/148.17 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U63^#(tt(), N, X, XS) -> 587.55/148.17 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS), 587.55/148.17 activate^#(X)) 587.55/148.17 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.17 , U71^#(tt(), XS) -> 587.55/148.17 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.17 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.17 , tail^#(cons(N, XS)) -> 587.55/148.17 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.17 Weak Trs: 587.55/148.17 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.17 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.17 , activate(X) -> X 587.55/148.17 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.17 , activate(n__s(X)) -> s(activate(X)) 587.55/148.17 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.17 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.17 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.17 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.17 , U52(tt(), Y) -> activate(Y) 587.55/148.17 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.17 , natsFrom(X) -> n__natsFrom(X) 587.55/148.17 , s(X) -> n__s(X) } 587.55/148.17 Obligation: 587.55/148.17 innermost runtime complexity 587.55/148.17 Answer: 587.55/148.17 YES(O(1),O(1)) 587.55/148.17 587.55/148.17 We estimate the number of application of {3,5} by applications of 587.55/148.17 Pre({3,5}) = {4}. Here rules are labeled as follows: 587.55/148.17 587.55/148.17 DPs: 587.55/148.17 { 1: U12^#(tt(), N, XS) -> 587.55/148.17 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 2: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.17 , 3: U61^#(tt(), N, X, XS) -> 587.55/148.17 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 4: U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 5: U82^#(tt(), N, XS) -> 587.55/148.17 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 6: U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 7: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , 8: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , 9: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.17 , 10: U51^#(tt(), Y) -> 587.55/148.17 c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , 11: U21^#(tt(), X) -> 587.55/148.17 c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , 12: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , 13: U31^#(tt(), N) -> 587.55/148.17 c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , 14: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , 15: U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 16: U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 17: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.17 , 18: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.17 , 19: U62^#(tt(), N, X, XS) -> 587.55/148.17 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 20: U63^#(tt(), N, X, XS) -> 587.55/148.17 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS), 587.55/148.17 activate^#(X)) 587.55/148.17 , 21: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.17 , 22: U71^#(tt(), XS) -> 587.55/148.17 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , 23: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.17 , 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.17 , 25: tail^#(cons(N, XS)) -> 587.55/148.17 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.17 587.55/148.17 We are left with following problem, upon which TcT provides the 587.55/148.17 certificate YES(O(1),O(1)). 587.55/148.17 587.55/148.17 Strict DPs: 587.55/148.17 { U12^#(tt(), N, XS) -> 587.55/148.17 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.17 , U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) } 587.55/148.17 Weak DPs: 587.55/148.17 { U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.17 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.17 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.17 , U61^#(tt(), N, X, XS) -> 587.55/148.17 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U62^#(tt(), N, X, XS) -> 587.55/148.17 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(X), 587.55/148.17 activate^#(XS)) 587.55/148.17 , U63^#(tt(), N, X, XS) -> 587.55/148.17 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS), 587.55/148.17 activate^#(X)) 587.55/148.17 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.17 , U71^#(tt(), XS) -> 587.55/148.17 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.17 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.17 , U82^#(tt(), N, XS) -> 587.55/148.17 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.17 , tail^#(cons(N, XS)) -> 587.55/148.17 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.17 Weak Trs: 587.55/148.17 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.17 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.17 , activate(X) -> X 587.55/148.17 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.17 , activate(n__s(X)) -> s(activate(X)) 587.55/148.17 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.17 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.17 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.17 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.17 , U52(tt(), Y) -> activate(Y) 587.55/148.17 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.17 , natsFrom(X) -> n__natsFrom(X) 587.55/148.17 , s(X) -> n__s(X) } 587.55/148.17 Obligation: 587.55/148.17 innermost runtime complexity 587.55/148.17 Answer: 587.55/148.17 YES(O(1),O(1)) 587.55/148.17 587.55/148.17 We estimate the number of application of {3} by applications of 587.55/148.17 Pre({3}) = {}. Here rules are labeled as follows: 587.55/148.17 587.55/148.17 DPs: 587.55/148.17 { 1: U12^#(tt(), N, XS) -> 587.55/148.17 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 2: head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) 587.55/148.17 , 3: U81^#(tt(), N, XS) -> 587.55/148.17 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 4: U11^#(tt(), N, XS) -> 587.55/148.17 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 5: activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.17 , 6: activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.17 , 7: snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.17 , 8: U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.17 , 9: U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.17 , 10: U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.17 , 11: U31^#(tt(), N) -> 587.55/148.17 c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.17 , 12: U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.17 , 13: U41^#(tt(), N, XS) -> 587.55/148.17 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.17 , 14: U42^#(tt(), N, XS) -> 587.55/148.17 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.17 afterNth^#(activate(N), activate(XS)), 587.55/148.17 activate^#(N), 587.55/148.17 activate^#(XS)) 587.55/148.18 , 15: afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.18 , 16: U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.18 , 17: U61^#(tt(), N, X, XS) -> 587.55/148.18 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , 18: U62^#(tt(), N, X, XS) -> 587.55/148.18 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , 19: U63^#(tt(), N, X, XS) -> 587.55/148.18 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS), 587.55/148.18 activate^#(X)) 587.55/148.18 , 20: U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.18 , 21: U71^#(tt(), XS) -> 587.55/148.18 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.18 , 22: U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.18 , 23: U82^#(tt(), N, XS) -> 587.55/148.18 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , 24: fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.18 , 25: tail^#(cons(N, XS)) -> 587.55/148.18 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.18 587.55/148.18 We are left with following problem, upon which TcT provides the 587.55/148.18 certificate YES(O(1),O(1)). 587.55/148.18 587.55/148.18 Strict DPs: 587.55/148.18 { U12^#(tt(), N, XS) -> 587.55/148.18 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> 587.55/148.18 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.18 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.18 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.18 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.18 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.18 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.18 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.18 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.18 , U41^#(tt(), N, XS) -> 587.55/148.18 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) 587.55/148.18 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.18 , U61^#(tt(), N, X, XS) -> 587.55/148.18 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U62^#(tt(), N, X, XS) -> 587.55/148.18 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U63^#(tt(), N, X, XS) -> 587.55/148.18 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS), 587.55/148.18 activate^#(X)) 587.55/148.18 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.18 , U71^#(tt(), XS) -> 587.55/148.18 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.18 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.18 , U81^#(tt(), N, XS) -> 587.55/148.18 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U82^#(tt(), N, XS) -> 587.55/148.18 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.18 , tail^#(cons(N, XS)) -> 587.55/148.18 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 Obligation: 587.55/148.18 innermost runtime complexity 587.55/148.18 Answer: 587.55/148.18 YES(O(1),O(1)) 587.55/148.18 587.55/148.18 The following weak DPs constitute a sub-graph of the DG that is 587.55/148.18 closed under successors. The DPs are removed. 587.55/148.18 587.55/148.18 { activate^#(n__natsFrom(X)) -> c_3(activate^#(X)) 587.55/148.18 , activate^#(n__s(X)) -> c_4(activate^#(X)) 587.55/148.18 , snd^#(pair(X, Y)) -> c_5(U51^#(tt(), Y)) 587.55/148.18 , U51^#(tt(), Y) -> c_6(U52^#(tt(), activate(Y)), activate^#(Y)) 587.55/148.18 , U21^#(tt(), X) -> c_7(U22^#(tt(), activate(X)), activate^#(X)) 587.55/148.18 , U22^#(tt(), X) -> c_8(activate^#(X)) 587.55/148.18 , U31^#(tt(), N) -> c_9(U32^#(tt(), activate(N)), activate^#(N)) 587.55/148.18 , U32^#(tt(), N) -> c_10(activate^#(N)) 587.55/148.18 , U52^#(tt(), Y) -> c_15(activate^#(Y)) 587.55/148.18 , U61^#(tt(), N, X, XS) -> 587.55/148.18 c_16(U62^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U62^#(tt(), N, X, XS) -> 587.55/148.18 c_17(U63^#(tt(), activate(N), activate(X), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(X), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U63^#(tt(), N, X, XS) -> 587.55/148.18 c_18(U64^#(splitAt(activate(N), activate(XS)), activate(X)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS), 587.55/148.18 activate^#(X)) 587.55/148.18 , U64^#(pair(YS, ZS), X) -> c_19(activate^#(X)) 587.55/148.18 , U71^#(tt(), XS) -> 587.55/148.18 c_20(U72^#(tt(), activate(XS)), activate^#(XS)) 587.55/148.18 , U72^#(tt(), XS) -> c_21(activate^#(XS)) 587.55/148.18 , U81^#(tt(), N, XS) -> 587.55/148.18 c_22(U82^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U82^#(tt(), N, XS) -> 587.55/148.18 c_23(fst^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , fst^#(pair(X, Y)) -> c_24(U21^#(tt(), X)) 587.55/148.18 , tail^#(cons(N, XS)) -> 587.55/148.18 c_26(U71^#(tt(), activate(XS)), activate^#(XS)) } 587.55/148.18 587.55/148.18 We are left with following problem, upon which TcT provides the 587.55/148.18 certificate YES(O(1),O(1)). 587.55/148.18 587.55/148.18 Strict DPs: 587.55/148.18 { U12^#(tt(), N, XS) -> 587.55/148.18 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> 587.55/148.18 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U41^#(tt(), N, XS) -> 587.55/148.18 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , afterNth^#(N, XS) -> c_14(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 Obligation: 587.55/148.18 innermost runtime complexity 587.55/148.18 Answer: 587.55/148.18 YES(O(1),O(1)) 587.55/148.18 587.55/148.18 Due to missing edges in the dependency-graph, the right-hand sides 587.55/148.18 of following rules could be simplified: 587.55/148.18 587.55/148.18 { U11^#(tt(), N, XS) -> 587.55/148.18 c_1(U12^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U12^#(tt(), N, XS) -> 587.55/148.18 c_2(snd^#(splitAt(activate(N), activate(XS))), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U41^#(tt(), N, XS) -> 587.55/148.18 c_11(U42^#(tt(), activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_12(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS)), 587.55/148.18 activate^#(N), 587.55/148.18 activate^#(XS)) 587.55/148.18 , head^#(cons(N, XS)) -> c_13(U31^#(tt(), N)) } 587.55/148.18 587.55/148.18 We are left with following problem, upon which TcT provides the 587.55/148.18 certificate YES(O(1),O(1)). 587.55/148.18 587.55/148.18 Strict DPs: 587.55/148.18 { U12^#(tt(), N, XS) -> c_1() 587.55/148.18 , head^#(cons(N, XS)) -> c_2() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 Obligation: 587.55/148.18 innermost runtime complexity 587.55/148.18 Answer: 587.55/148.18 YES(O(1),O(1)) 587.55/148.18 587.55/148.18 We analyse the complexity of following sub-problems (R) and (S). 587.55/148.18 Problem (S) is obtained from the input problem by shifting strict 587.55/148.18 rules from (R) into the weak component: 587.55/148.18 587.55/148.18 Problem (R): 587.55/148.18 ------------ 587.55/148.18 Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , head^#(cons(N, XS)) -> c_2() 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 StartTerms: basic terms 587.55/148.18 Strategy: innermost 587.55/148.18 587.55/148.18 Problem (S): 587.55/148.18 ------------ 587.55/148.18 Strict DPs: { head^#(cons(N, XS)) -> c_2() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U12^#(tt(), N, XS) -> c_1() 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 StartTerms: basic terms 587.55/148.18 Strategy: innermost 587.55/148.18 587.55/148.18 Overall, the transformation results in the following sub-problem(s): 587.55/148.18 587.55/148.18 Generated new problems: 587.55/148.18 ----------------------- 587.55/148.18 R) Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , head^#(cons(N, XS)) -> c_2() 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 StartTerms: basic terms 587.55/148.18 Strategy: innermost 587.55/148.18 587.55/148.18 This problem was proven YES(O(1),O(1)). 587.55/148.18 587.55/148.18 S) Strict DPs: { head^#(cons(N, XS)) -> c_2() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U12^#(tt(), N, XS) -> c_1() 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 StartTerms: basic terms 587.55/148.18 Strategy: innermost 587.55/148.18 587.55/148.18 This problem was proven YES(O(1),O(1)). 587.55/148.18 587.55/148.18 587.55/148.18 Proofs for generated problems: 587.55/148.18 ------------------------------ 587.55/148.18 R) We are left with following problem, upon which TcT provides the 587.55/148.18 certificate YES(O(1),O(1)). 587.55/148.18 587.55/148.18 Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.18 Weak DPs: 587.55/148.18 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.18 , U42^#(tt(), N, XS) -> 587.55/148.18 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.18 afterNth^#(activate(N), activate(XS))) 587.55/148.18 , head^#(cons(N, XS)) -> c_2() 587.55/148.18 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.18 Weak Trs: 587.55/148.18 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.18 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.18 , activate(X) -> X 587.55/148.18 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.18 , activate(n__s(X)) -> s(activate(X)) 587.55/148.18 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.18 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.18 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.18 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.18 , U52(tt(), Y) -> activate(Y) 587.55/148.18 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.18 , natsFrom(X) -> n__natsFrom(X) 587.55/148.18 , s(X) -> n__s(X) } 587.55/148.18 Obligation: 587.55/148.18 innermost runtime complexity 587.55/148.18 Answer: 587.55/148.18 YES(O(1),O(1)) 587.55/148.18 587.55/148.18 The following weak DPs constitute a sub-graph of the DG that is 587.55/148.18 closed under successors. The DPs are removed. 587.55/148.18 587.55/148.18 { head^#(cons(N, XS)) -> c_2() } 587.55/148.18 587.55/148.18 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.19 Weak DPs: 587.55/148.19 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> 587.55/148.19 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.19 afterNth^#(activate(N), activate(XS))) 587.55/148.19 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 Due to missing edges in the dependency-graph, the right-hand sides 587.55/148.19 of following rules could be simplified: 587.55/148.19 587.55/148.19 { U42^#(tt(), N, XS) -> 587.55/148.19 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.19 afterNth^#(activate(N), activate(XS))) } 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.19 Weak DPs: 587.55/148.19 { U11^#(tt(), N, XS) -> c_2(U12^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U41^#(tt(), N, XS) -> c_3(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> c_4(afterNth^#(activate(N), activate(XS))) 587.55/148.19 , afterNth^#(N, XS) -> c_5(U11^#(tt(), N, XS)) } 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 We replace rewrite rules by usable rules: 587.55/148.19 587.55/148.19 Weak Usable Rules: 587.55/148.19 { activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { U12^#(tt(), N, XS) -> c_1() } 587.55/148.19 Weak DPs: 587.55/148.19 { U11^#(tt(), N, XS) -> c_2(U12^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U41^#(tt(), N, XS) -> c_3(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> c_4(afterNth^#(activate(N), activate(XS))) 587.55/148.19 , afterNth^#(N, XS) -> c_5(U11^#(tt(), N, XS)) } 587.55/148.19 Weak Trs: 587.55/148.19 { activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 The dependency graph contains no loops, we remove all dependency 587.55/148.19 pairs. 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Weak Trs: 587.55/148.19 { activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 No rule is usable, rules are removed from the input problem. 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Rules: Empty 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 Empty rules are trivially bounded 587.55/148.19 587.55/148.19 S) We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { head^#(cons(N, XS)) -> c_2() } 587.55/148.19 Weak DPs: 587.55/148.19 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U12^#(tt(), N, XS) -> c_1() 587.55/148.19 , U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> 587.55/148.19 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.19 afterNth^#(activate(N), activate(XS))) 587.55/148.19 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 The following weak DPs constitute a sub-graph of the DG that is 587.55/148.19 closed under successors. The DPs are removed. 587.55/148.19 587.55/148.19 { U11^#(tt(), N, XS) -> c_3(U12^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U12^#(tt(), N, XS) -> c_1() 587.55/148.19 , afterNth^#(N, XS) -> c_6(U11^#(tt(), N, XS)) } 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { head^#(cons(N, XS)) -> c_2() } 587.55/148.19 Weak DPs: 587.55/148.19 { U41^#(tt(), N, XS) -> c_4(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> 587.55/148.19 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.19 afterNth^#(activate(N), activate(XS))) } 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 Due to missing edges in the dependency-graph, the right-hand sides 587.55/148.19 of following rules could be simplified: 587.55/148.19 587.55/148.19 { U42^#(tt(), N, XS) -> 587.55/148.19 c_5(head^#(afterNth(activate(N), activate(XS))), 587.55/148.19 afterNth^#(activate(N), activate(XS))) } 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Strict DPs: { head^#(cons(N, XS)) -> c_1() } 587.55/148.19 Weak DPs: 587.55/148.19 { U41^#(tt(), N, XS) -> c_2(U42^#(tt(), activate(N), activate(XS))) 587.55/148.19 , U42^#(tt(), N, XS) -> 587.55/148.19 c_3(head^#(afterNth(activate(N), activate(XS)))) } 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 The dependency graph contains no loops, we remove all dependency 587.55/148.19 pairs. 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Weak Trs: 587.55/148.19 { U11(tt(), N, XS) -> U12(tt(), activate(N), activate(XS)) 587.55/148.19 , U12(tt(), N, XS) -> snd(splitAt(activate(N), activate(XS))) 587.55/148.19 , activate(X) -> X 587.55/148.19 , activate(n__natsFrom(X)) -> natsFrom(activate(X)) 587.55/148.19 , activate(n__s(X)) -> s(activate(X)) 587.55/148.19 , snd(pair(X, Y)) -> U51(tt(), Y) 587.55/148.19 , splitAt(0(), XS) -> pair(nil(), XS) 587.55/148.19 , afterNth(N, XS) -> U11(tt(), N, XS) 587.55/148.19 , U51(tt(), Y) -> U52(tt(), activate(Y)) 587.55/148.19 , U52(tt(), Y) -> activate(Y) 587.55/148.19 , natsFrom(N) -> cons(N, n__natsFrom(n__s(N))) 587.55/148.19 , natsFrom(X) -> n__natsFrom(X) 587.55/148.19 , s(X) -> n__s(X) } 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 No rule is usable, rules are removed from the input problem. 587.55/148.19 587.55/148.19 We are left with following problem, upon which TcT provides the 587.55/148.19 certificate YES(O(1),O(1)). 587.55/148.19 587.55/148.19 Rules: Empty 587.55/148.19 Obligation: 587.55/148.19 innermost runtime complexity 587.55/148.19 Answer: 587.55/148.19 YES(O(1),O(1)) 587.55/148.19 587.55/148.19 Empty rules are trivially bounded 587.55/148.19 587.55/148.19 587.55/148.19 587.55/148.19 Hurray, we answered YES(O(1),O(n^1)) 588.00/148.42 EOF