YES(O(1),O(n^2)) 624.16/163.64 YES(O(1),O(n^2)) 624.16/163.64 624.16/163.64 We are left with following problem, upon which TcT provides the 624.16/163.64 certificate YES(O(1),O(n^2)). 624.16/163.64 624.16/163.64 Strict Trs: 624.16/163.64 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.64 , U12(tt()) -> tt() 624.16/163.64 , isNat(n__0()) -> tt() 624.16/163.64 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.64 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.64 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.64 , activate(X) -> X 624.16/163.64 , activate(n__0()) -> 0() 624.16/163.64 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.64 , activate(n__s(X)) -> s(activate(X)) 624.16/163.64 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.64 , U21(tt()) -> tt() 624.16/163.64 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.64 , U32(tt()) -> tt() 624.16/163.64 , U41(tt(), N) -> activate(N) 624.16/163.64 , U51(tt(), M, N) -> 624.16/163.64 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.64 , s(X) -> n__s(X) 624.16/163.64 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.64 , plus(N, s(M)) -> U51(isNat(M), M, N) 624.16/163.64 , plus(N, 0()) -> U41(isNat(N), N) 624.16/163.64 , U61(tt()) -> 0() 624.16/163.64 , 0() -> n__0() 624.16/163.64 , U71(tt(), M, N) -> 624.16/163.64 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.64 , x(X1, X2) -> n__x(X1, X2) 624.16/163.64 , x(N, s(M)) -> U71(isNat(M), M, N) 624.16/163.64 , x(N, 0()) -> U61(isNat(N)) } 624.16/163.64 Obligation: 624.16/163.64 innermost runtime complexity 624.16/163.64 Answer: 624.16/163.64 YES(O(1),O(n^2)) 624.16/163.64 624.16/163.64 Arguments of following rules are not normal-forms: 624.16/163.64 624.16/163.64 { plus(N, s(M)) -> U51(isNat(M), M, N) 624.16/163.64 , plus(N, 0()) -> U41(isNat(N), N) 624.16/163.64 , x(N, s(M)) -> U71(isNat(M), M, N) 624.16/163.64 , x(N, 0()) -> U61(isNat(N)) } 624.16/163.64 624.16/163.64 All above mentioned rules can be savely removed. 624.16/163.64 624.16/163.64 We are left with following problem, upon which TcT provides the 624.16/163.64 certificate YES(O(1),O(n^2)). 624.16/163.64 624.16/163.64 Strict Trs: 624.16/163.64 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.64 , U12(tt()) -> tt() 624.16/163.64 , isNat(n__0()) -> tt() 624.16/163.64 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.64 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.64 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.64 , activate(X) -> X 624.16/163.64 , activate(n__0()) -> 0() 624.16/163.64 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.64 , activate(n__s(X)) -> s(activate(X)) 624.16/163.64 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.64 , U21(tt()) -> tt() 624.16/163.64 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.64 , U32(tt()) -> tt() 624.16/163.64 , U41(tt(), N) -> activate(N) 624.16/163.64 , U51(tt(), M, N) -> 624.16/163.64 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.64 , s(X) -> n__s(X) 624.16/163.64 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.64 , U61(tt()) -> 0() 624.16/163.64 , 0() -> n__0() 624.16/163.64 , U71(tt(), M, N) -> 624.16/163.64 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.64 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.64 Obligation: 624.16/163.64 innermost runtime complexity 624.16/163.64 Answer: 624.16/163.64 YES(O(1),O(n^2)) 624.16/163.64 624.16/163.64 We add the following dependency tuples: 624.16/163.64 624.16/163.64 Strict DPs: 624.16/163.64 { U11^#(tt(), V2) -> 624.16/163.64 c_1(U12^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , U12^#(tt()) -> c_2() 624.16/163.64 , isNat^#(n__0()) -> c_3() 624.16/163.64 , isNat^#(n__plus(V1, V2)) -> 624.16/163.64 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , isNat^#(n__s(V1)) -> 624.16/163.64 c_5(U21^#(isNat(activate(V1))), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1)) 624.16/163.64 , isNat^#(n__x(V1, V2)) -> 624.16/163.64 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , activate^#(X) -> c_7() 624.16/163.64 , activate^#(n__0()) -> c_8(0^#()) 624.16/163.64 , activate^#(n__plus(X1, X2)) -> 624.16/163.64 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.64 , activate^#(n__x(X1, X2)) -> 624.16/163.64 c_11(x^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , U21^#(tt()) -> c_12() 624.16/163.64 , U31^#(tt(), V2) -> 624.16/163.64 c_13(U32^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 0^#() -> c_21() 624.16/163.64 , plus^#(X1, X2) -> c_19() 624.16/163.64 , s^#(X) -> c_18() 624.16/163.64 , x^#(X1, X2) -> c_24() 624.16/163.64 , U32^#(tt()) -> c_14() 624.16/163.64 , U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.64 , U51^#(tt(), M, N) -> 624.16/163.64 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U52^#(tt(), M, N) -> 624.16/163.64 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.64 plus^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M)) 624.16/163.64 , U61^#(tt()) -> c_20(0^#()) 624.16/163.64 , U71^#(tt(), M, N) -> 624.16/163.64 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U72^#(tt(), M, N) -> 624.16/163.64 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.64 x^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) } 624.16/163.64 624.16/163.64 and mark the set of starting terms. 624.16/163.64 624.16/163.64 We are left with following problem, upon which TcT provides the 624.16/163.64 certificate YES(O(1),O(n^2)). 624.16/163.64 624.16/163.64 Strict DPs: 624.16/163.64 { U11^#(tt(), V2) -> 624.16/163.64 c_1(U12^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , U12^#(tt()) -> c_2() 624.16/163.64 , isNat^#(n__0()) -> c_3() 624.16/163.64 , isNat^#(n__plus(V1, V2)) -> 624.16/163.64 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , isNat^#(n__s(V1)) -> 624.16/163.64 c_5(U21^#(isNat(activate(V1))), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1)) 624.16/163.64 , isNat^#(n__x(V1, V2)) -> 624.16/163.64 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , activate^#(X) -> c_7() 624.16/163.64 , activate^#(n__0()) -> c_8(0^#()) 624.16/163.64 , activate^#(n__plus(X1, X2)) -> 624.16/163.64 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.64 , activate^#(n__x(X1, X2)) -> 624.16/163.64 c_11(x^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , U21^#(tt()) -> c_12() 624.16/163.64 , U31^#(tt(), V2) -> 624.16/163.64 c_13(U32^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 0^#() -> c_21() 624.16/163.64 , plus^#(X1, X2) -> c_19() 624.16/163.64 , s^#(X) -> c_18() 624.16/163.64 , x^#(X1, X2) -> c_24() 624.16/163.64 , U32^#(tt()) -> c_14() 624.16/163.64 , U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.64 , U51^#(tt(), M, N) -> 624.16/163.64 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U52^#(tt(), M, N) -> 624.16/163.64 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.64 plus^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M)) 624.16/163.64 , U61^#(tt()) -> c_20(0^#()) 624.16/163.64 , U71^#(tt(), M, N) -> 624.16/163.64 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U72^#(tt(), M, N) -> 624.16/163.64 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.64 x^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) } 624.16/163.64 Weak Trs: 624.16/163.64 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.64 , U12(tt()) -> tt() 624.16/163.64 , isNat(n__0()) -> tt() 624.16/163.64 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.64 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.64 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.64 , activate(X) -> X 624.16/163.64 , activate(n__0()) -> 0() 624.16/163.64 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.64 , activate(n__s(X)) -> s(activate(X)) 624.16/163.64 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.64 , U21(tt()) -> tt() 624.16/163.64 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.64 , U32(tt()) -> tt() 624.16/163.64 , U41(tt(), N) -> activate(N) 624.16/163.64 , U51(tt(), M, N) -> 624.16/163.64 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.64 , s(X) -> n__s(X) 624.16/163.64 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.64 , U61(tt()) -> 0() 624.16/163.64 , 0() -> n__0() 624.16/163.64 , U71(tt(), M, N) -> 624.16/163.64 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.64 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.64 Obligation: 624.16/163.64 innermost runtime complexity 624.16/163.64 Answer: 624.16/163.64 YES(O(1),O(n^2)) 624.16/163.64 624.16/163.64 We estimate the number of application of {2,3,7,12,14,15,16,17,18} 624.16/163.64 by applications of Pre({2,3,7,12,14,15,16,17,18}) = 624.16/163.64 {1,4,5,6,8,9,10,11,13,19,20,21,22,23,24}. Here rules are labeled as 624.16/163.64 follows: 624.16/163.64 624.16/163.64 DPs: 624.16/163.64 { 1: U11^#(tt(), V2) -> 624.16/163.64 c_1(U12^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 2: U12^#(tt()) -> c_2() 624.16/163.64 , 3: isNat^#(n__0()) -> c_3() 624.16/163.64 , 4: isNat^#(n__plus(V1, V2)) -> 624.16/163.64 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 5: isNat^#(n__s(V1)) -> 624.16/163.64 c_5(U21^#(isNat(activate(V1))), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1)) 624.16/163.64 , 6: isNat^#(n__x(V1, V2)) -> 624.16/163.64 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 7: activate^#(X) -> c_7() 624.16/163.64 , 8: activate^#(n__0()) -> c_8(0^#()) 624.16/163.64 , 9: activate^#(n__plus(X1, X2)) -> 624.16/163.64 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , 10: activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.64 , 11: activate^#(n__x(X1, X2)) -> 624.16/163.64 c_11(x^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , 12: U21^#(tt()) -> c_12() 624.16/163.64 , 13: U31^#(tt(), V2) -> 624.16/163.64 c_13(U32^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 14: 0^#() -> c_21() 624.16/163.64 , 15: plus^#(X1, X2) -> c_19() 624.16/163.64 , 16: s^#(X) -> c_18() 624.16/163.64 , 17: x^#(X1, X2) -> c_24() 624.16/163.64 , 18: U32^#(tt()) -> c_14() 624.16/163.64 , 19: U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.64 , 20: U51^#(tt(), M, N) -> 624.16/163.64 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , 21: U52^#(tt(), M, N) -> 624.16/163.64 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.64 plus^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M)) 624.16/163.64 , 22: U61^#(tt()) -> c_20(0^#()) 624.16/163.64 , 23: U71^#(tt(), M, N) -> 624.16/163.64 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , 24: U72^#(tt(), M, N) -> 624.16/163.64 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.64 x^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) } 624.16/163.64 624.16/163.64 We are left with following problem, upon which TcT provides the 624.16/163.64 certificate YES(O(1),O(n^2)). 624.16/163.64 624.16/163.64 Strict DPs: 624.16/163.64 { U11^#(tt(), V2) -> 624.16/163.64 c_1(U12^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , isNat^#(n__plus(V1, V2)) -> 624.16/163.64 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , isNat^#(n__s(V1)) -> 624.16/163.64 c_5(U21^#(isNat(activate(V1))), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1)) 624.16/163.64 , isNat^#(n__x(V1, V2)) -> 624.16/163.64 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , activate^#(n__0()) -> c_8(0^#()) 624.16/163.64 , activate^#(n__plus(X1, X2)) -> 624.16/163.64 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.64 , activate^#(n__x(X1, X2)) -> 624.16/163.64 c_11(x^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , U31^#(tt(), V2) -> 624.16/163.64 c_13(U32^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.64 , U51^#(tt(), M, N) -> 624.16/163.64 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U52^#(tt(), M, N) -> 624.16/163.64 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.64 plus^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M)) 624.16/163.64 , U61^#(tt()) -> c_20(0^#()) 624.16/163.64 , U71^#(tt(), M, N) -> 624.16/163.64 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , U72^#(tt(), M, N) -> 624.16/163.64 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.64 x^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) } 624.16/163.64 Weak DPs: 624.16/163.64 { U12^#(tt()) -> c_2() 624.16/163.64 , isNat^#(n__0()) -> c_3() 624.16/163.64 , activate^#(X) -> c_7() 624.16/163.64 , U21^#(tt()) -> c_12() 624.16/163.64 , 0^#() -> c_21() 624.16/163.64 , plus^#(X1, X2) -> c_19() 624.16/163.64 , s^#(X) -> c_18() 624.16/163.64 , x^#(X1, X2) -> c_24() 624.16/163.64 , U32^#(tt()) -> c_14() } 624.16/163.64 Weak Trs: 624.16/163.64 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.64 , U12(tt()) -> tt() 624.16/163.64 , isNat(n__0()) -> tt() 624.16/163.64 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.64 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.64 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.64 , activate(X) -> X 624.16/163.64 , activate(n__0()) -> 0() 624.16/163.64 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.64 , activate(n__s(X)) -> s(activate(X)) 624.16/163.64 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.64 , U21(tt()) -> tt() 624.16/163.64 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.64 , U32(tt()) -> tt() 624.16/163.64 , U41(tt(), N) -> activate(N) 624.16/163.64 , U51(tt(), M, N) -> 624.16/163.64 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.64 , s(X) -> n__s(X) 624.16/163.64 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.64 , U61(tt()) -> 0() 624.16/163.64 , 0() -> n__0() 624.16/163.64 , U71(tt(), M, N) -> 624.16/163.64 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.64 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.64 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.64 Obligation: 624.16/163.64 innermost runtime complexity 624.16/163.64 Answer: 624.16/163.64 YES(O(1),O(n^2)) 624.16/163.64 624.16/163.64 We estimate the number of application of {5,13} by applications of 624.16/163.64 Pre({5,13}) = {1,2,3,4,6,7,8,9,10,11,12,14,15}. Here rules are 624.16/163.64 labeled as follows: 624.16/163.64 624.16/163.64 DPs: 624.16/163.64 { 1: U11^#(tt(), V2) -> 624.16/163.64 c_1(U12^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 2: isNat^#(n__plus(V1, V2)) -> 624.16/163.64 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 3: isNat^#(n__s(V1)) -> 624.16/163.64 c_5(U21^#(isNat(activate(V1))), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1)) 624.16/163.64 , 4: isNat^#(n__x(V1, V2)) -> 624.16/163.64 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.64 isNat^#(activate(V1)), 624.16/163.64 activate^#(V1), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 5: activate^#(n__0()) -> c_8(0^#()) 624.16/163.64 , 6: activate^#(n__plus(X1, X2)) -> 624.16/163.64 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , 7: activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.64 , 8: activate^#(n__x(X1, X2)) -> 624.16/163.64 c_11(x^#(activate(X1), activate(X2)), 624.16/163.64 activate^#(X1), 624.16/163.64 activate^#(X2)) 624.16/163.64 , 9: U31^#(tt(), V2) -> 624.16/163.64 c_13(U32^#(isNat(activate(V2))), 624.16/163.64 isNat^#(activate(V2)), 624.16/163.64 activate^#(V2)) 624.16/163.64 , 10: U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.64 , 11: U51^#(tt(), M, N) -> 624.16/163.64 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.64 , 12: U52^#(tt(), M, N) -> 624.16/163.64 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.64 plus^#(activate(N), activate(M)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M)) 624.16/163.64 , 13: U61^#(tt()) -> c_20(0^#()) 624.16/163.64 , 14: U71^#(tt(), M, N) -> 624.16/163.64 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.64 isNat^#(activate(N)), 624.16/163.64 activate^#(N), 624.16/163.64 activate^#(M), 624.16/163.64 activate^#(N)) 624.16/163.65 , 15: U72^#(tt(), M, N) -> 624.16/163.65 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.65 x^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , 16: U12^#(tt()) -> c_2() 624.16/163.65 , 17: isNat^#(n__0()) -> c_3() 624.16/163.65 , 18: activate^#(X) -> c_7() 624.16/163.65 , 19: U21^#(tt()) -> c_12() 624.16/163.65 , 20: 0^#() -> c_21() 624.16/163.65 , 21: plus^#(X1, X2) -> c_19() 624.16/163.65 , 22: s^#(X) -> c_18() 624.16/163.65 , 23: x^#(X1, X2) -> c_24() 624.16/163.65 , 24: U32^#(tt()) -> c_14() } 624.16/163.65 624.16/163.65 We are left with following problem, upon which TcT provides the 624.16/163.65 certificate YES(O(1),O(n^2)). 624.16/163.65 624.16/163.65 Strict DPs: 624.16/163.65 { U11^#(tt(), V2) -> 624.16/163.65 c_1(U12^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__s(V1)) -> 624.16/163.65 c_5(U21^#(isNat(activate(V1))), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1)) 624.16/163.65 , isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.65 , activate^#(n__x(X1, X2)) -> 624.16/163.65 c_11(x^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , U31^#(tt(), V2) -> 624.16/163.65 c_13(U32^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.65 , U51^#(tt(), M, N) -> 624.16/163.65 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U52^#(tt(), M, N) -> 624.16/163.65 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.65 plus^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M)) 624.16/163.65 , U71^#(tt(), M, N) -> 624.16/163.65 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U72^#(tt(), M, N) -> 624.16/163.65 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.65 x^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) } 624.16/163.65 Weak DPs: 624.16/163.65 { U12^#(tt()) -> c_2() 624.16/163.65 , isNat^#(n__0()) -> c_3() 624.16/163.65 , activate^#(X) -> c_7() 624.16/163.65 , activate^#(n__0()) -> c_8(0^#()) 624.16/163.65 , U21^#(tt()) -> c_12() 624.16/163.65 , 0^#() -> c_21() 624.16/163.65 , plus^#(X1, X2) -> c_19() 624.16/163.65 , s^#(X) -> c_18() 624.16/163.65 , x^#(X1, X2) -> c_24() 624.16/163.65 , U32^#(tt()) -> c_14() 624.16/163.65 , U61^#(tt()) -> c_20(0^#()) } 624.16/163.65 Weak Trs: 624.16/163.65 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.65 , U12(tt()) -> tt() 624.16/163.65 , isNat(n__0()) -> tt() 624.16/163.65 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.65 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.65 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.65 , activate(X) -> X 624.16/163.65 , activate(n__0()) -> 0() 624.16/163.65 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.65 , activate(n__s(X)) -> s(activate(X)) 624.16/163.65 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.65 , U21(tt()) -> tt() 624.16/163.65 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.65 , U32(tt()) -> tt() 624.16/163.65 , U41(tt(), N) -> activate(N) 624.16/163.65 , U51(tt(), M, N) -> 624.16/163.65 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.65 , s(X) -> n__s(X) 624.16/163.65 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.65 , U61(tt()) -> 0() 624.16/163.65 , 0() -> n__0() 624.16/163.65 , U71(tt(), M, N) -> 624.16/163.65 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.65 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.65 Obligation: 624.16/163.65 innermost runtime complexity 624.16/163.65 Answer: 624.16/163.65 YES(O(1),O(n^2)) 624.16/163.65 624.16/163.65 The following weak DPs constitute a sub-graph of the DG that is 624.16/163.65 closed under successors. The DPs are removed. 624.16/163.65 624.16/163.65 { U12^#(tt()) -> c_2() 624.16/163.65 , isNat^#(n__0()) -> c_3() 624.16/163.65 , activate^#(X) -> c_7() 624.16/163.65 , activate^#(n__0()) -> c_8(0^#()) 624.16/163.65 , U21^#(tt()) -> c_12() 624.16/163.65 , 0^#() -> c_21() 624.16/163.65 , plus^#(X1, X2) -> c_19() 624.16/163.65 , s^#(X) -> c_18() 624.16/163.65 , x^#(X1, X2) -> c_24() 624.16/163.65 , U32^#(tt()) -> c_14() 624.16/163.65 , U61^#(tt()) -> c_20(0^#()) } 624.16/163.65 624.16/163.65 We are left with following problem, upon which TcT provides the 624.16/163.65 certificate YES(O(1),O(n^2)). 624.16/163.65 624.16/163.65 Strict DPs: 624.16/163.65 { U11^#(tt(), V2) -> 624.16/163.65 c_1(U12^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_4(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__s(V1)) -> 624.16/163.65 c_5(U21^#(isNat(activate(V1))), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1)) 624.16/163.65 , isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_6(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.65 , activate^#(n__x(X1, X2)) -> 624.16/163.65 c_11(x^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , U31^#(tt(), V2) -> 624.16/163.65 c_13(U32^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , U41^#(tt(), N) -> c_15(activate^#(N)) 624.16/163.65 , U51^#(tt(), M, N) -> 624.16/163.65 c_16(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U52^#(tt(), M, N) -> 624.16/163.65 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.65 plus^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M)) 624.16/163.65 , U71^#(tt(), M, N) -> 624.16/163.65 c_22(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U72^#(tt(), M, N) -> 624.16/163.65 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.65 x^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) } 624.16/163.65 Weak Trs: 624.16/163.65 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.65 , U12(tt()) -> tt() 624.16/163.65 , isNat(n__0()) -> tt() 624.16/163.65 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.65 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.65 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.65 , activate(X) -> X 624.16/163.65 , activate(n__0()) -> 0() 624.16/163.65 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.65 , activate(n__s(X)) -> s(activate(X)) 624.16/163.65 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.65 , U21(tt()) -> tt() 624.16/163.65 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.65 , U32(tt()) -> tt() 624.16/163.65 , U41(tt(), N) -> activate(N) 624.16/163.65 , U51(tt(), M, N) -> 624.16/163.65 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.65 , s(X) -> n__s(X) 624.16/163.65 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.65 , U61(tt()) -> 0() 624.16/163.65 , 0() -> n__0() 624.16/163.65 , U71(tt(), M, N) -> 624.16/163.65 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.65 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.65 Obligation: 624.16/163.65 innermost runtime complexity 624.16/163.65 Answer: 624.16/163.65 YES(O(1),O(n^2)) 624.16/163.65 624.16/163.65 Due to missing edges in the dependency-graph, the right-hand sides 624.16/163.65 of following rules could be simplified: 624.16/163.65 624.16/163.65 { U11^#(tt(), V2) -> 624.16/163.65 c_1(U12^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__s(V1)) -> 624.16/163.65 c_5(U21^#(isNat(activate(V1))), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1)) 624.16/163.65 , activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_9(plus^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , activate^#(n__s(X)) -> c_10(s^#(activate(X)), activate^#(X)) 624.16/163.65 , activate^#(n__x(X1, X2)) -> 624.16/163.65 c_11(x^#(activate(X1), activate(X2)), 624.16/163.65 activate^#(X1), 624.16/163.65 activate^#(X2)) 624.16/163.65 , U31^#(tt(), V2) -> 624.16/163.65 c_13(U32^#(isNat(activate(V2))), 624.16/163.65 isNat^#(activate(V2)), 624.16/163.65 activate^#(V2)) 624.16/163.65 , U52^#(tt(), M, N) -> 624.16/163.65 c_17(s^#(plus(activate(N), activate(M))), 624.16/163.65 plus^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M)) 624.16/163.65 , U72^#(tt(), M, N) -> 624.16/163.65 c_23(plus^#(x(activate(N), activate(M)), activate(N)), 624.16/163.65 x^#(activate(N), activate(M)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) } 624.16/163.65 624.16/163.65 We are left with following problem, upon which TcT provides the 624.16/163.65 certificate YES(O(1),O(n^2)). 624.16/163.65 624.16/163.65 Strict DPs: 624.16/163.65 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.65 , isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.65 , isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) 624.16/163.65 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.65 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.65 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.65 , U41^#(tt(), N) -> c_9(activate^#(N)) 624.16/163.65 , U51^#(tt(), M, N) -> 624.16/163.65 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.65 , U71^#(tt(), M, N) -> 624.16/163.65 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U72^#(tt(), M, N) -> 624.16/163.65 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.65 Weak Trs: 624.16/163.65 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.65 , U12(tt()) -> tt() 624.16/163.65 , isNat(n__0()) -> tt() 624.16/163.65 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.65 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.65 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.65 , activate(X) -> X 624.16/163.65 , activate(n__0()) -> 0() 624.16/163.65 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.65 , activate(n__s(X)) -> s(activate(X)) 624.16/163.65 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.65 , U21(tt()) -> tt() 624.16/163.65 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.65 , U32(tt()) -> tt() 624.16/163.65 , U41(tt(), N) -> activate(N) 624.16/163.65 , U51(tt(), M, N) -> 624.16/163.65 U52(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U52(tt(), M, N) -> s(plus(activate(N), activate(M))) 624.16/163.65 , s(X) -> n__s(X) 624.16/163.65 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.65 , U61(tt()) -> 0() 624.16/163.65 , 0() -> n__0() 624.16/163.65 , U71(tt(), M, N) -> 624.16/163.65 U72(isNat(activate(N)), activate(M), activate(N)) 624.16/163.65 , U72(tt(), M, N) -> plus(x(activate(N), activate(M)), activate(N)) 624.16/163.65 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.65 Obligation: 624.16/163.65 innermost runtime complexity 624.16/163.65 Answer: 624.16/163.65 YES(O(1),O(n^2)) 624.16/163.65 624.16/163.65 We replace rewrite rules by usable rules: 624.16/163.65 624.16/163.65 Weak Usable Rules: 624.16/163.65 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.65 , U12(tt()) -> tt() 624.16/163.65 , isNat(n__0()) -> tt() 624.16/163.65 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.65 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.65 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.65 , activate(X) -> X 624.16/163.65 , activate(n__0()) -> 0() 624.16/163.65 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.65 , activate(n__s(X)) -> s(activate(X)) 624.16/163.65 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.65 , U21(tt()) -> tt() 624.16/163.65 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.65 , U32(tt()) -> tt() 624.16/163.65 , s(X) -> n__s(X) 624.16/163.65 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.65 , 0() -> n__0() 624.16/163.65 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.65 624.16/163.65 We are left with following problem, upon which TcT provides the 624.16/163.65 certificate YES(O(1),O(n^2)). 624.16/163.65 624.16/163.65 Strict DPs: 624.16/163.65 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.65 , isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.65 , isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 , activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) 624.16/163.65 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.65 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.65 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.65 , U41^#(tt(), N) -> c_9(activate^#(N)) 624.16/163.65 , U51^#(tt(), M, N) -> 624.16/163.65 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.65 , U71^#(tt(), M, N) -> 624.16/163.65 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.65 isNat^#(activate(N)), 624.16/163.65 activate^#(N), 624.16/163.65 activate^#(M), 624.16/163.65 activate^#(N)) 624.16/163.65 , U72^#(tt(), M, N) -> 624.16/163.65 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.65 Weak Trs: 624.16/163.65 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.65 , U12(tt()) -> tt() 624.16/163.65 , isNat(n__0()) -> tt() 624.16/163.65 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.65 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.65 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.65 , activate(X) -> X 624.16/163.65 , activate(n__0()) -> 0() 624.16/163.65 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.65 , activate(n__s(X)) -> s(activate(X)) 624.16/163.65 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.65 , U21(tt()) -> tt() 624.16/163.65 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.65 , U32(tt()) -> tt() 624.16/163.65 , s(X) -> n__s(X) 624.16/163.65 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.65 , 0() -> n__0() 624.16/163.65 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.65 Obligation: 624.16/163.65 innermost runtime complexity 624.16/163.65 Answer: 624.16/163.65 YES(O(1),O(n^2)) 624.16/163.65 624.16/163.65 Consider the dependency graph 624.16/163.65 624.16/163.65 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.65 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.65 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.65 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.65 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.65 -->_1 isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) :4 624.16/163.65 -->_1 isNat^#(n__s(V1)) -> 624.16/163.65 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.65 -->_1 isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) :2 624.16/163.65 624.16/163.65 2: isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) 624.16/163.65 -->_4 activate^#(n__x(X1, X2)) -> 624.16/163.65 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.65 -->_3 activate^#(n__x(X1, X2)) -> 624.16/163.65 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.65 -->_4 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.65 -->_3 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.65 -->_4 activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.65 -->_3 activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.65 -->_2 isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) :4 624.16/163.65 -->_2 isNat^#(n__s(V1)) -> 624.16/163.65 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.65 -->_2 isNat^#(n__plus(V1, V2)) -> 624.16/163.65 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.65 activate^#(V1), 624.16/163.65 activate^#(V2)) :2 624.16/163.65 -->_1 U11^#(tt(), V2) -> 624.16/163.65 c_1(isNat^#(activate(V2)), activate^#(V2)) :1 624.16/163.65 624.16/163.65 3: isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.65 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.65 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.65 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.65 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.65 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.65 -->_1 isNat^#(n__x(V1, V2)) -> 624.16/163.65 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.65 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :4 624.16/163.66 -->_1 isNat^#(n__s(V1)) -> 624.16/163.66 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.66 -->_1 isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :2 624.16/163.66 624.16/163.66 4: isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 -->_1 U31^#(tt(), V2) -> 624.16/163.66 c_8(isNat^#(activate(V2)), activate^#(V2)) :8 624.16/163.66 -->_4 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_3 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_4 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_3 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_4 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_3 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_2 isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :4 624.16/163.66 -->_2 isNat^#(n__s(V1)) -> 624.16/163.66 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.66 -->_2 isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :2 624.16/163.66 624.16/163.66 5: activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 6: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 7: activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 8: U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_1 isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :4 624.16/163.66 -->_1 isNat^#(n__s(V1)) -> 624.16/163.66 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.66 -->_1 isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :2 624.16/163.66 624.16/163.66 9: U41^#(tt(), N) -> c_9(activate^#(N)) 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 10: U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 -->_1 U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) :11 624.16/163.66 -->_5 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_4 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_3 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_5 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_4 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_3 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_5 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_4 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_3 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_2 isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :4 624.16/163.66 -->_2 isNat^#(n__s(V1)) -> 624.16/163.66 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.66 -->_2 isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :2 624.16/163.66 624.16/163.66 11: U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.66 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 12: U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 -->_1 U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) :13 624.16/163.66 -->_5 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_4 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_3 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_5 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_4 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_3 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_5 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_4 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_3 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_2 isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :4 624.16/163.66 -->_2 isNat^#(n__s(V1)) -> 624.16/163.66 c_3(isNat^#(activate(V1)), activate^#(V1)) :3 624.16/163.66 -->_2 isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) :2 624.16/163.66 624.16/163.66 13: U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) 624.16/163.66 -->_3 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_2 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_1 activate^#(n__x(X1, X2)) -> 624.16/163.66 c_7(activate^#(X1), activate^#(X2)) :7 624.16/163.66 -->_3 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_2 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_1 activate^#(n__s(X)) -> c_6(activate^#(X)) :6 624.16/163.66 -->_3 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_2 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 -->_1 activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) :5 624.16/163.66 624.16/163.66 624.16/163.66 Following roots of the dependency graph are removed, as the 624.16/163.66 considered set of starting terms is closed under reduction with 624.16/163.66 respect to these rules (modulo compound contexts). 624.16/163.66 624.16/163.66 { U41^#(tt(), N) -> c_9(activate^#(N)) } 624.16/163.66 624.16/163.66 624.16/163.66 We are left with following problem, upon which TcT provides the 624.16/163.66 certificate YES(O(1),O(n^2)). 624.16/163.66 624.16/163.66 Strict DPs: 624.16/163.66 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.66 , isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.66 , U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.66 Weak Trs: 624.16/163.66 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.66 , U12(tt()) -> tt() 624.16/163.66 , isNat(n__0()) -> tt() 624.16/163.66 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.66 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.66 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.66 , activate(X) -> X 624.16/163.66 , activate(n__0()) -> 0() 624.16/163.66 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.66 , activate(n__s(X)) -> s(activate(X)) 624.16/163.66 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.66 , U21(tt()) -> tt() 624.16/163.66 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.66 , U32(tt()) -> tt() 624.16/163.66 , s(X) -> n__s(X) 624.16/163.66 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.66 , 0() -> n__0() 624.16/163.66 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.66 Obligation: 624.16/163.66 innermost runtime complexity 624.16/163.66 Answer: 624.16/163.66 YES(O(1),O(n^2)) 624.16/163.66 624.16/163.66 We analyse the complexity of following sub-problems (R) and (S). 624.16/163.66 Problem (S) is obtained from the input problem by shifting strict 624.16/163.66 rules from (R) into the weak component: 624.16/163.66 624.16/163.66 Problem (R): 624.16/163.66 ------------ 624.16/163.66 Strict DPs: 624.16/163.66 { activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.66 Weak DPs: 624.16/163.66 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.66 , isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.66 Weak Trs: 624.16/163.66 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.66 , U12(tt()) -> tt() 624.16/163.66 , isNat(n__0()) -> tt() 624.16/163.66 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.66 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.66 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.66 , activate(X) -> X 624.16/163.66 , activate(n__0()) -> 0() 624.16/163.66 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.66 , activate(n__s(X)) -> s(activate(X)) 624.16/163.66 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.66 , U21(tt()) -> tt() 624.16/163.66 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.66 , U32(tt()) -> tt() 624.16/163.66 , s(X) -> n__s(X) 624.16/163.66 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.66 , 0() -> n__0() 624.16/163.66 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.66 StartTerms: basic terms 624.16/163.66 Strategy: innermost 624.16/163.66 624.16/163.66 Problem (S): 624.16/163.66 ------------ 624.16/163.66 Strict DPs: 624.16/163.66 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.66 , isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.66 Weak DPs: 624.16/163.66 { activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.66 Weak Trs: 624.16/163.66 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.66 , U12(tt()) -> tt() 624.16/163.66 , isNat(n__0()) -> tt() 624.16/163.66 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.66 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.66 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.66 , activate(X) -> X 624.16/163.66 , activate(n__0()) -> 0() 624.16/163.66 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.66 , activate(n__s(X)) -> s(activate(X)) 624.16/163.66 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.66 , U21(tt()) -> tt() 624.16/163.66 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.66 , U32(tt()) -> tt() 624.16/163.66 , s(X) -> n__s(X) 624.16/163.66 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.66 , 0() -> n__0() 624.16/163.66 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.66 StartTerms: basic terms 624.16/163.66 Strategy: innermost 624.16/163.66 624.16/163.66 Overall, the transformation results in the following sub-problem(s): 624.16/163.66 624.16/163.66 Generated new problems: 624.16/163.66 ----------------------- 624.16/163.66 R) Strict DPs: 624.16/163.66 { activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.66 Weak DPs: 624.16/163.66 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.66 , isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.66 Weak Trs: 624.16/163.66 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.66 , U12(tt()) -> tt() 624.16/163.66 , isNat(n__0()) -> tt() 624.16/163.66 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.66 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.66 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.66 , activate(X) -> X 624.16/163.66 , activate(n__0()) -> 0() 624.16/163.66 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.66 , activate(n__s(X)) -> s(activate(X)) 624.16/163.66 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.66 , U21(tt()) -> tt() 624.16/163.66 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.66 , U32(tt()) -> tt() 624.16/163.66 , s(X) -> n__s(X) 624.16/163.66 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.66 , 0() -> n__0() 624.16/163.66 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.66 StartTerms: basic terms 624.16/163.66 Strategy: innermost 624.16/163.66 624.16/163.66 This problem was proven YES(O(1),O(n^2)). 624.16/163.66 624.16/163.66 S) Strict DPs: 624.16/163.66 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , isNat^#(n__plus(V1, V2)) -> 624.16/163.66 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.66 , isNat^#(n__x(V1, V2)) -> 624.16/163.66 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.66 isNat^#(activate(V1)), 624.16/163.66 activate^#(V1), 624.16/163.66 activate^#(V2)) 624.16/163.66 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.66 , U71^#(tt(), M, N) -> 624.16/163.66 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U72^#(tt(), M, N) -> 624.16/163.66 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.66 Weak DPs: 624.16/163.66 { activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.66 Weak Trs: 624.16/163.66 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.66 , U12(tt()) -> tt() 624.16/163.66 , isNat(n__0()) -> tt() 624.16/163.66 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.66 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.66 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.66 , activate(X) -> X 624.16/163.66 , activate(n__0()) -> 0() 624.16/163.66 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.66 , activate(n__s(X)) -> s(activate(X)) 624.16/163.66 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.66 , U21(tt()) -> tt() 624.16/163.66 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.66 , U32(tt()) -> tt() 624.16/163.66 , s(X) -> n__s(X) 624.16/163.66 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.66 , 0() -> n__0() 624.16/163.66 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.66 StartTerms: basic terms 624.16/163.66 Strategy: innermost 624.16/163.66 624.16/163.66 This problem was proven YES(O(1),O(n^1)). 624.16/163.66 624.16/163.66 624.16/163.66 Proofs for generated problems: 624.16/163.66 ------------------------------ 624.16/163.66 R) We are left with following problem, upon which TcT provides the 624.16/163.66 certificate YES(O(1),O(n^2)). 624.16/163.66 624.16/163.66 Strict DPs: 624.16/163.66 { activate^#(n__plus(X1, X2)) -> 624.16/163.66 c_5(activate^#(X1), activate^#(X2)) 624.16/163.66 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.66 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.66 , U51^#(tt(), M, N) -> 624.16/163.66 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.66 isNat^#(activate(N)), 624.16/163.66 activate^#(N), 624.16/163.66 activate^#(M), 624.16/163.66 activate^#(N)) 624.16/163.66 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 Obligation: 624.16/163.67 innermost runtime complexity 624.16/163.67 Answer: 624.16/163.67 YES(O(1),O(n^2)) 624.16/163.67 624.16/163.67 We analyse the complexity of following sub-problems (R) and (S). 624.16/163.67 Problem (S) is obtained from the input problem by shifting strict 624.16/163.67 rules from (R) into the weak component: 624.16/163.67 624.16/163.67 Problem (R): 624.16/163.67 ------------ 624.16/163.67 Strict DPs: 624.16/163.67 { activate^#(n__plus(X1, X2)) -> 624.16/163.67 c_5(activate^#(X1), activate^#(X2)) 624.16/163.67 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.67 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , U51^#(tt(), M, N) -> 624.16/163.67 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 StartTerms: basic terms 624.16/163.67 Strategy: innermost 624.16/163.67 624.16/163.67 Problem (S): 624.16/163.67 ------------ 624.16/163.67 Strict DPs: 624.16/163.67 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , activate^#(n__plus(X1, X2)) -> 624.16/163.67 c_5(activate^#(X1), activate^#(X2)) 624.16/163.67 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.67 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U51^#(tt(), M, N) -> 624.16/163.67 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 StartTerms: basic terms 624.16/163.67 Strategy: innermost 624.16/163.67 624.16/163.67 Overall, the transformation results in the following sub-problem(s): 624.16/163.67 624.16/163.67 Generated new problems: 624.16/163.67 ----------------------- 624.16/163.67 R) Strict DPs: 624.16/163.67 { activate^#(n__plus(X1, X2)) -> 624.16/163.67 c_5(activate^#(X1), activate^#(X2)) 624.16/163.67 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.67 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , U51^#(tt(), M, N) -> 624.16/163.67 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 StartTerms: basic terms 624.16/163.67 Strategy: innermost 624.16/163.67 624.16/163.67 This problem was proven YES(O(1),O(n^2)). 624.16/163.67 624.16/163.67 S) Strict DPs: 624.16/163.67 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , activate^#(n__plus(X1, X2)) -> 624.16/163.67 c_5(activate^#(X1), activate^#(X2)) 624.16/163.67 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.67 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U51^#(tt(), M, N) -> 624.16/163.67 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 StartTerms: basic terms 624.16/163.67 Strategy: innermost 624.16/163.67 624.16/163.67 This problem was proven YES(O(1),O(1)). 624.16/163.67 624.16/163.67 624.16/163.67 Proofs for generated problems: 624.16/163.67 ------------------------------ 624.16/163.67 R) We are left with following problem, upon which TcT provides the 624.16/163.67 certificate YES(O(1),O(n^2)). 624.16/163.67 624.16/163.67 Strict DPs: 624.16/163.67 { activate^#(n__plus(X1, X2)) -> 624.16/163.67 c_5(activate^#(X1), activate^#(X2)) 624.16/163.67 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.67 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , U51^#(tt(), M, N) -> 624.16/163.67 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) } 624.16/163.67 Weak DPs: 624.16/163.67 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.67 , isNat^#(n__x(V1, V2)) -> 624.16/163.67 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.67 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.67 , U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) 624.16/163.67 , U72^#(tt(), M, N) -> 624.16/163.67 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.67 Weak Trs: 624.16/163.67 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.67 , U12(tt()) -> tt() 624.16/163.67 , isNat(n__0()) -> tt() 624.16/163.67 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.67 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.67 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.67 , activate(X) -> X 624.16/163.67 , activate(n__0()) -> 0() 624.16/163.67 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.67 , activate(n__s(X)) -> s(activate(X)) 624.16/163.67 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.67 , U21(tt()) -> tt() 624.16/163.67 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.67 , U32(tt()) -> tt() 624.16/163.67 , s(X) -> n__s(X) 624.16/163.67 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.67 , 0() -> n__0() 624.16/163.67 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.67 Obligation: 624.16/163.67 innermost runtime complexity 624.16/163.67 Answer: 624.16/163.67 YES(O(1),O(n^2)) 624.16/163.67 624.16/163.67 We use the processor 'matrix interpretation of dimension 2' to 624.16/163.67 orient following rules strictly. 624.16/163.67 624.16/163.67 DPs: 624.16/163.67 { 3: activate^#(n__x(X1, X2)) -> 624.16/163.67 c_7(activate^#(X1), activate^#(X2)) 624.16/163.67 , 6: isNat^#(n__plus(V1, V2)) -> 624.16/163.67 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.67 isNat^#(activate(V1)), 624.16/163.67 activate^#(V1), 624.16/163.67 activate^#(V2)) 624.16/163.67 , 10: U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.67 , 11: U71^#(tt(), M, N) -> 624.16/163.67 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.67 isNat^#(activate(N)), 624.16/163.67 activate^#(N), 624.16/163.67 activate^#(M), 624.16/163.67 activate^#(N)) } 624.16/163.67 624.16/163.67 Sub-proof: 624.16/163.67 ---------- 624.16/163.67 The following argument positions are usable: 624.16/163.67 Uargs(c_1) = {1, 2}, Uargs(c_2) = {1, 2, 3, 4}, 624.16/163.67 Uargs(c_3) = {1, 2}, Uargs(c_4) = {1, 2, 3, 4}, 624.16/163.67 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1}, Uargs(c_7) = {1, 2}, 624.16/163.67 Uargs(c_8) = {1, 2}, Uargs(c_10) = {1, 2, 3, 4, 5}, 624.16/163.67 Uargs(c_11) = {1, 2}, Uargs(c_12) = {1, 2, 3, 4, 5}, 624.16/163.67 Uargs(c_13) = {1, 2, 3} 624.16/163.67 624.16/163.67 TcT has computed the following constructor-based matrix 624.16/163.67 interpretation satisfying not(EDA). 624.16/163.67 624.16/163.67 [U11](x1, x2) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [tt] = [1] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [U12](x1) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [isNat](x1) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [activate](x1) = [1 0] x1 + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 624.16/163.67 [U21](x1) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [U31](x1, x2) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [U32](x1) = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [s](x1) = [1 4] x1 + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 624.16/163.67 [plus](x1, x2) = [1 4] x1 + [1 4] x2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 624.16/163.67 [0] = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [x](x1, x2) = [1 4] x1 + [1 4] x2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 624.16/163.67 [n__0] = [0] 624.16/163.67 [0] 624.16/163.67 624.16/163.67 [n__plus](x1, x2) = [1 4] x1 + [1 4] x2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 624.16/163.67 [n__s](x1) = [1 4] x1 + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 624.16/163.67 [n__x](x1, x2) = [1 4] x1 + [1 4] x2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 624.16/163.67 [U11^#](x1, x2) = [2 4] x2 + [0] 624.16/163.67 [4 4] [4] 624.16/163.67 624.16/163.67 [isNat^#](x1) = [2 0] x1 + [0] 624.16/163.67 [0 0] [4] 624.16/163.67 624.16/163.67 [activate^#](x1) = [0 1] x1 + [0] 624.16/163.67 [0 4] [0] 624.16/163.67 624.16/163.67 [U31^#](x1, x2) = [2 2] x2 + [0] 624.16/163.67 [0 4] [4] 624.16/163.67 624.16/163.67 [U51^#](x1, x2, x3) = [4 4] x1 + [7 7] x2 + [7 7] x3 + [7] 624.16/163.67 [0 5] [7 7] [7 7] [7] 624.16/163.67 624.16/163.67 [U52^#](x1, x2, x3) = [0 1] x2 + [0 2] x3 + [4] 624.16/163.67 [4 4] [0 0] [4] 624.16/163.67 624.16/163.67 [U71^#](x1, x2, x3) = [0 4] x1 + [7 7] x2 + [7 7] x3 + [7] 624.16/163.67 [0 7] [7 7] [7 7] [7] 624.16/163.67 624.16/163.67 [U72^#](x1, x2, x3) = [0 1] x2 + [0 5] x3 + [0] 624.16/163.67 [0 0] [0 4] [0] 624.16/163.67 624.16/163.67 [c_1](x1, x2) = [1 0] x1 + [4 0] x2 + [0] 624.16/163.67 [0 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_2](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [2 0] x3 + [1 624.16/163.67 0] x4 + [3] 624.16/163.67 [0 0] [0 0] [0 0] [0 624.16/163.67 0] [3] 624.16/163.67 624.16/163.67 [c_3](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 624.16/163.67 [0 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_4](x1, x2, x3, x4) = [1 0] x1 + [1 0] x2 + [4 1] x3 + [1 624.16/163.67 0] x4 + [0] 624.16/163.67 [0 0] [0 0] [0 0] [0 624.16/163.67 0] [3] 624.16/163.67 624.16/163.67 [c_5](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 624.16/163.67 [0 0] [0 0] [0] 624.16/163.67 624.16/163.67 [c_6](x1) = [1 0] x1 + [0] 624.16/163.67 [0 0] [0] 624.16/163.67 624.16/163.67 [c_7](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 624.16/163.67 [0 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_8](x1, x2) = [1 0] x1 + [1 0] x2 + [0] 624.16/163.67 [0 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_10](x1, x2, x3, x4, x5) = [2 0] x1 + [2 0] x2 + [1 0] x3 + [4 624.16/163.67 0] x4 + [2 0] x5 + [3] 624.16/163.67 [0 0] [0 0] [0 0] [0 624.16/163.67 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_11](x1, x2) = [2 0] x1 + [1 0] x2 + [3] 624.16/163.67 [0 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_12](x1, x2, x3, x4, x5) = [1 0] x1 + [2 0] x2 + [1 0] x3 + [4 624.16/163.67 0] x4 + [1 0] x5 + [3] 624.16/163.67 [0 0] [0 0] [0 0] [0 624.16/163.67 0] [0 0] [3] 624.16/163.67 624.16/163.67 [c_13](x1, x2, x3) = [4 0] x1 + [1 0] x2 + [1 0] x3 + [0] 624.16/163.67 [0 0] [0 0] [0 0] [0] 624.16/163.67 624.16/163.67 The order satisfies the following ordering constraints: 624.16/163.67 624.16/163.67 [U11(tt(), V2)] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [U12(isNat(activate(V2)))] 624.16/163.67 624.16/163.67 [U12(tt())] = [0] 624.16/163.67 [0] 624.16/163.67 ? [1] 624.16/163.67 [0] 624.16/163.67 = [tt()] 624.16/163.67 624.16/163.67 [isNat(n__0())] = [0] 624.16/163.67 [0] 624.16/163.67 ? [1] 624.16/163.67 [0] 624.16/163.67 = [tt()] 624.16/163.67 624.16/163.67 [isNat(n__plus(V1, V2))] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [U11(isNat(activate(V1)), activate(V2))] 624.16/163.67 624.16/163.67 [isNat(n__s(V1))] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [U21(isNat(activate(V1)))] 624.16/163.67 624.16/163.67 [isNat(n__x(V1, V2))] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [U31(isNat(activate(V1)), activate(V2))] 624.16/163.67 624.16/163.67 [activate(X)] = [1 0] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 >= [1 0] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 = [X] 624.16/163.67 624.16/163.67 [activate(n__0())] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [0()] 624.16/163.67 624.16/163.67 [activate(n__plus(X1, X2))] = [1 4] X1 + [1 4] X2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 >= [1 4] X1 + [1 4] X2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 = [plus(activate(X1), activate(X2))] 624.16/163.67 624.16/163.67 [activate(n__s(X))] = [1 4] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 >= [1 4] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 = [s(activate(X))] 624.16/163.67 624.16/163.67 [activate(n__x(X1, X2))] = [1 4] X1 + [1 4] X2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 >= [1 4] X1 + [1 4] X2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 = [x(activate(X1), activate(X2))] 624.16/163.67 624.16/163.67 [U21(tt())] = [0] 624.16/163.67 [0] 624.16/163.67 ? [1] 624.16/163.67 [0] 624.16/163.67 = [tt()] 624.16/163.67 624.16/163.67 [U31(tt(), V2)] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [U32(isNat(activate(V2)))] 624.16/163.67 624.16/163.67 [U32(tt())] = [0] 624.16/163.67 [0] 624.16/163.67 ? [1] 624.16/163.67 [0] 624.16/163.67 = [tt()] 624.16/163.67 624.16/163.67 [s(X)] = [1 4] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 >= [1 4] X + [0] 624.16/163.67 [0 1] [0] 624.16/163.67 = [n__s(X)] 624.16/163.67 624.16/163.67 [plus(X1, X2)] = [1 4] X1 + [1 4] X2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 >= [1 4] X1 + [1 4] X2 + [4] 624.16/163.67 [0 1] [0 1] [0] 624.16/163.67 = [n__plus(X1, X2)] 624.16/163.67 624.16/163.67 [0()] = [0] 624.16/163.67 [0] 624.16/163.67 >= [0] 624.16/163.67 [0] 624.16/163.67 = [n__0()] 624.16/163.67 624.16/163.67 [x(X1, X2)] = [1 4] X1 + [1 4] X2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 >= [1 4] X1 + [1 4] X2 + [0] 624.16/163.67 [0 1] [0 1] [1] 624.16/163.67 = [n__x(X1, X2)] 624.16/163.67 624.16/163.68 [U11^#(tt(), V2)] = [2 4] V2 + [0] 624.16/163.68 [4 4] [4] 624.16/163.68 >= [2 4] V2 + [0] 624.16/163.68 [0 0] [3] 624.16/163.68 = [c_1(isNat^#(activate(V2)), activate^#(V2))] 624.16/163.68 624.16/163.68 [isNat^#(n__plus(V1, V2))] = [2 8] V2 + [2 8] V1 + [8] 624.16/163.68 [0 0] [0 0] [4] 624.16/163.68 > [2 5] V2 + [2 2] V1 + [3] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2))] 624.16/163.68 624.16/163.68 [isNat^#(n__s(V1))] = [2 8] V1 + [0] 624.16/163.68 [0 0] [4] 624.16/163.68 >= [2 1] V1 + [0] 624.16/163.68 [0 0] [3] 624.16/163.68 = [c_3(isNat^#(activate(V1)), activate^#(V1))] 624.16/163.68 624.16/163.68 [isNat^#(n__x(V1, V2))] = [2 8] V2 + [2 8] V1 + [0] 624.16/163.68 [0 0] [0 0] [4] 624.16/163.68 >= [2 3] V2 + [2 8] V1 + [0] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2))] 624.16/163.68 624.16/163.68 [activate^#(n__plus(X1, X2))] = [0 1] X1 + [0 1] X2 + [0] 624.16/163.68 [0 4] [0 4] [0] 624.16/163.68 >= [0 1] X1 + [0 1] X2 + [0] 624.16/163.68 [0 0] [0 0] [0] 624.16/163.68 = [c_5(activate^#(X1), activate^#(X2))] 624.16/163.68 624.16/163.68 [activate^#(n__s(X))] = [0 1] X + [0] 624.16/163.68 [0 4] [0] 624.16/163.68 >= [0 1] X + [0] 624.16/163.68 [0 0] [0] 624.16/163.68 = [c_6(activate^#(X))] 624.16/163.68 624.16/163.68 [activate^#(n__x(X1, X2))] = [0 1] X1 + [0 1] X2 + [1] 624.16/163.68 [0 4] [0 4] [4] 624.16/163.68 > [0 1] X1 + [0 1] X2 + [0] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_7(activate^#(X1), activate^#(X2))] 624.16/163.68 624.16/163.68 [U31^#(tt(), V2)] = [2 2] V2 + [0] 624.16/163.68 [0 4] [4] 624.16/163.68 >= [2 1] V2 + [0] 624.16/163.68 [0 0] [3] 624.16/163.68 = [c_8(isNat^#(activate(V2)), activate^#(V2))] 624.16/163.68 624.16/163.68 [U51^#(tt(), M, N)] = [7 7] N + [7 7] M + [11] 624.16/163.68 [7 7] [7 7] [7] 624.16/163.68 >= [4 7] N + [0 6] M + [11] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N))] 624.16/163.68 624.16/163.68 [U52^#(tt(), M, N)] = [0 2] N + [0 1] M + [4] 624.16/163.68 [0 0] [4 4] [4] 624.16/163.68 > [0 2] N + [0 1] M + [3] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_11(activate^#(N), activate^#(M))] 624.16/163.68 624.16/163.68 [U71^#(tt(), M, N)] = [7 7] N + [7 7] M + [7] 624.16/163.68 [7 7] [7 7] [7] 624.16/163.68 > [4 7] N + [0 5] M + [3] 624.16/163.68 [0 0] [0 0] [3] 624.16/163.68 = [c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N))] 624.16/163.68 624.16/163.68 [U72^#(tt(), M, N)] = [0 5] N + [0 1] M + [0] 624.16/163.68 [0 4] [0 0] [0] 624.16/163.68 >= [0 5] N + [0 1] M + [0] 624.16/163.68 [0 0] [0 0] [0] 624.16/163.68 = [c_13(activate^#(N), activate^#(M), activate^#(N))] 624.16/163.68 624.16/163.68 624.16/163.68 We return to the main proof. Consider the set of all dependency 624.16/163.68 pairs 624.16/163.68 624.16/163.68 : 624.16/163.68 { 1: activate^#(n__plus(X1, X2)) -> 624.16/163.68 c_5(activate^#(X1), activate^#(X2)) 624.16/163.68 , 2: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.68 , 3: activate^#(n__x(X1, X2)) -> 624.16/163.68 c_7(activate^#(X1), activate^#(X2)) 624.16/163.68 , 4: U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , 5: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , 6: isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , 7: isNat^#(n__s(V1)) -> 624.16/163.68 c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , 8: isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , 9: U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , 10: U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , 11: U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , 12: U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 624.16/163.68 Processor 'matrix interpretation of dimension 2' induces the 624.16/163.68 complexity certificate YES(?,O(n^2)) on application of dependency 624.16/163.68 pairs {3,6,10,11}. These cover all (indirect) predecessors of 624.16/163.68 dependency pairs {3,4,5,6,10,11,12}, their number of application is 624.16/163.68 equally bounded. The dependency pairs are shifted into the weak 624.16/163.68 component. 624.16/163.68 624.16/163.68 We are left with following problem, upon which TcT provides the 624.16/163.68 certificate YES(O(1),O(n^2)). 624.16/163.68 624.16/163.68 Strict DPs: 624.16/163.68 { activate^#(n__plus(X1, X2)) -> 624.16/163.68 c_5(activate^#(X1), activate^#(X2)) 624.16/163.68 , activate^#(n__s(X)) -> c_6(activate^#(X)) } 624.16/163.68 Weak DPs: 624.16/163.68 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.68 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 Weak Trs: 624.16/163.68 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.68 , U12(tt()) -> tt() 624.16/163.68 , isNat(n__0()) -> tt() 624.16/163.68 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.68 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.68 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.68 , activate(X) -> X 624.16/163.68 , activate(n__0()) -> 0() 624.16/163.68 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.68 , activate(n__s(X)) -> s(activate(X)) 624.16/163.68 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.68 , U21(tt()) -> tt() 624.16/163.68 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.68 , U32(tt()) -> tt() 624.16/163.68 , s(X) -> n__s(X) 624.16/163.68 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.68 , 0() -> n__0() 624.16/163.68 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.68 Obligation: 624.16/163.68 innermost runtime complexity 624.16/163.68 Answer: 624.16/163.68 YES(O(1),O(n^2)) 624.16/163.68 624.16/163.68 We decompose the input problem according to the dependency graph 624.16/163.68 into the upper component 624.16/163.68 624.16/163.68 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 624.16/163.68 and lower component 624.16/163.68 624.16/163.68 { activate^#(n__plus(X1, X2)) -> 624.16/163.68 c_5(activate^#(X1), activate^#(X2)) 624.16/163.68 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.68 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) } 624.16/163.68 624.16/163.68 Further, following extension rules are added to the lower 624.16/163.68 component. 624.16/163.68 624.16/163.68 { U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.16/163.68 , U11^#(tt(), V2) -> activate^#(V2) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> 624.16/163.68 U11^#(isNat(activate(V1)), activate(V2)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.16/163.68 , isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.16/163.68 , isNat^#(n__s(V1)) -> activate^#(V1) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> U31^#(isNat(activate(V1)), activate(V2)) 624.16/163.68 , U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.16/163.68 , U31^#(tt(), V2) -> activate^#(V2) 624.16/163.68 , U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.68 , U51^#(tt(), M, N) -> activate^#(M) 624.16/163.68 , U51^#(tt(), M, N) -> activate^#(N) 624.16/163.68 , U51^#(tt(), M, N) -> 624.16/163.68 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.16/163.68 , U52^#(tt(), M, N) -> activate^#(M) 624.16/163.68 , U52^#(tt(), M, N) -> activate^#(N) 624.16/163.68 , U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.68 , U71^#(tt(), M, N) -> activate^#(M) 624.16/163.68 , U71^#(tt(), M, N) -> activate^#(N) 624.16/163.68 , U71^#(tt(), M, N) -> 624.16/163.68 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.16/163.68 , U72^#(tt(), M, N) -> activate^#(M) 624.16/163.68 , U72^#(tt(), M, N) -> activate^#(N) } 624.16/163.68 624.16/163.68 TcT solves the upper component with certificate YES(O(1),O(n^1)). 624.16/163.68 624.16/163.68 Sub-proof: 624.16/163.68 ---------- 624.16/163.68 We are left with following problem, upon which TcT provides the 624.16/163.68 certificate YES(O(1),O(n^1)). 624.16/163.68 624.16/163.68 Strict DPs: 624.16/163.68 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 Weak Trs: 624.16/163.68 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.68 , U12(tt()) -> tt() 624.16/163.68 , isNat(n__0()) -> tt() 624.16/163.68 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.68 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.68 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.68 , activate(X) -> X 624.16/163.68 , activate(n__0()) -> 0() 624.16/163.68 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.68 , activate(n__s(X)) -> s(activate(X)) 624.16/163.68 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.68 , U21(tt()) -> tt() 624.16/163.68 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.68 , U32(tt()) -> tt() 624.16/163.68 , s(X) -> n__s(X) 624.16/163.68 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.68 , 0() -> n__0() 624.16/163.68 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.68 Obligation: 624.16/163.68 innermost runtime complexity 624.16/163.68 Answer: 624.16/163.68 YES(O(1),O(n^1)) 624.16/163.68 624.16/163.68 We estimate the number of application of {7,9} by applications of 624.16/163.68 Pre({7,9}) = {6,8}. Here rules are labeled as follows: 624.16/163.68 624.16/163.68 DPs: 624.16/163.68 { 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , 2: isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , 3: isNat^#(n__s(V1)) -> 624.16/163.68 c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , 4: isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , 5: U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , 6: U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , 7: U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , 8: U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , 9: U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 624.16/163.68 We are left with following problem, upon which TcT provides the 624.16/163.68 certificate YES(O(1),O(n^1)). 624.16/163.68 624.16/163.68 Strict DPs: 624.16/163.68 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , isNat^#(n__plus(V1, V2)) -> 624.16/163.68 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.68 , isNat^#(n__x(V1, V2)) -> 624.16/163.68 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.68 isNat^#(activate(V1)), 624.16/163.68 activate^#(V1), 624.16/163.68 activate^#(V2)) 624.16/163.68 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.68 , U51^#(tt(), M, N) -> 624.16/163.68 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) 624.16/163.68 , U71^#(tt(), M, N) -> 624.16/163.68 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.68 isNat^#(activate(N)), 624.16/163.68 activate^#(N), 624.16/163.68 activate^#(M), 624.16/163.68 activate^#(N)) } 624.16/163.68 Weak DPs: 624.16/163.68 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 Weak Trs: 624.16/163.68 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.68 , U12(tt()) -> tt() 624.16/163.68 , isNat(n__0()) -> tt() 624.16/163.68 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.68 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.68 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.68 , activate(X) -> X 624.16/163.68 , activate(n__0()) -> 0() 624.16/163.68 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.68 , activate(n__s(X)) -> s(activate(X)) 624.16/163.68 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.68 , U21(tt()) -> tt() 624.16/163.68 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.68 , U32(tt()) -> tt() 624.16/163.68 , s(X) -> n__s(X) 624.16/163.68 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.68 , 0() -> n__0() 624.16/163.68 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.68 Obligation: 624.16/163.68 innermost runtime complexity 624.16/163.68 Answer: 624.16/163.68 YES(O(1),O(n^1)) 624.16/163.68 624.16/163.68 The following weak DPs constitute a sub-graph of the DG that is 624.16/163.68 closed under successors. The DPs are removed. 624.16/163.68 624.16/163.68 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.16/163.68 , U72^#(tt(), M, N) -> 624.16/163.68 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.16/163.68 624.16/163.68 We are left with following problem, upon which TcT provides the 624.16/163.68 certificate YES(O(1),O(n^1)). 624.16/163.68 624.16/163.68 Strict DPs: 624.16/163.68 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)), 624.16/163.69 activate^#(V1), 624.16/163.69 activate^#(V2)) 624.16/163.69 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)), 624.16/163.69 activate^#(V1), 624.16/163.69 activate^#(V2)) 624.16/163.69 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.69 , U51^#(tt(), M, N) -> 624.16/163.69 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.69 isNat^#(activate(N)), 624.16/163.69 activate^#(N), 624.16/163.69 activate^#(M), 624.16/163.69 activate^#(N)) 624.16/163.69 , U71^#(tt(), M, N) -> 624.16/163.69 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.69 isNat^#(activate(N)), 624.16/163.69 activate^#(N), 624.16/163.69 activate^#(M), 624.16/163.69 activate^#(N)) } 624.16/163.69 Weak Trs: 624.16/163.69 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.69 , U12(tt()) -> tt() 624.16/163.69 , isNat(n__0()) -> tt() 624.16/163.69 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.69 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate(X) -> X 624.16/163.69 , activate(n__0()) -> 0() 624.16/163.69 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.69 , activate(n__s(X)) -> s(activate(X)) 624.16/163.69 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.69 , U21(tt()) -> tt() 624.16/163.69 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.69 , U32(tt()) -> tt() 624.16/163.69 , s(X) -> n__s(X) 624.16/163.69 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.69 , 0() -> n__0() 624.16/163.69 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(n^1)) 624.16/163.69 624.16/163.69 Due to missing edges in the dependency-graph, the right-hand sides 624.16/163.69 of following rules could be simplified: 624.16/163.69 624.16/163.69 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)), 624.16/163.69 activate^#(V1), 624.16/163.69 activate^#(V2)) 624.16/163.69 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)), 624.16/163.69 activate^#(V1), 624.16/163.69 activate^#(V2)) 624.16/163.69 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.16/163.69 , U51^#(tt(), M, N) -> 624.16/163.69 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.69 isNat^#(activate(N)), 624.16/163.69 activate^#(N), 624.16/163.69 activate^#(M), 624.16/163.69 activate^#(N)) 624.16/163.69 , U71^#(tt(), M, N) -> 624.16/163.69 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.16/163.69 isNat^#(activate(N)), 624.16/163.69 activate^#(N), 624.16/163.69 activate^#(M), 624.16/163.69 activate^#(N)) } 624.16/163.69 624.16/163.69 We are left with following problem, upon which TcT provides the 624.16/163.69 certificate YES(O(1),O(n^1)). 624.16/163.69 624.16/163.69 Strict DPs: 624.16/163.69 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.16/163.69 , U51^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.16/163.69 , U71^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.16/163.69 Weak Trs: 624.16/163.69 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.69 , U12(tt()) -> tt() 624.16/163.69 , isNat(n__0()) -> tt() 624.16/163.69 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.69 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate(X) -> X 624.16/163.69 , activate(n__0()) -> 0() 624.16/163.69 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.69 , activate(n__s(X)) -> s(activate(X)) 624.16/163.69 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.69 , U21(tt()) -> tt() 624.16/163.69 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.69 , U32(tt()) -> tt() 624.16/163.69 , s(X) -> n__s(X) 624.16/163.69 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.69 , 0() -> n__0() 624.16/163.69 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(n^1)) 624.16/163.69 624.16/163.69 We use the processor 'matrix interpretation of dimension 1' to 624.16/163.69 orient following rules strictly. 624.16/163.69 624.16/163.69 DPs: 624.16/163.69 { 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.16/163.69 , 2: isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , 3: isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.16/163.69 , 4: isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , 6: U51^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.16/163.69 , 7: U71^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.16/163.69 624.16/163.69 Sub-proof: 624.16/163.69 ---------- 624.16/163.69 The following argument positions are usable: 624.16/163.69 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1}, 624.16/163.69 Uargs(c_4) = {1, 2}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, 624.16/163.69 Uargs(c_7) = {1} 624.16/163.69 624.16/163.69 TcT has computed the following constructor-based matrix 624.16/163.69 interpretation satisfying not(EDA). 624.16/163.69 624.16/163.69 [U11](x1, x2) = [0] 624.16/163.69 624.16/163.69 [tt] = [0] 624.16/163.69 624.16/163.69 [U12](x1) = [0] 624.16/163.69 624.16/163.69 [isNat](x1) = [0] 624.16/163.69 624.16/163.69 [activate](x1) = [1] x1 + [0] 624.16/163.69 624.16/163.69 [U21](x1) = [0] 624.16/163.69 624.16/163.69 [U31](x1, x2) = [0] 624.16/163.69 624.16/163.69 [U32](x1) = [0] 624.16/163.69 624.16/163.69 [s](x1) = [1] x1 + [4] 624.16/163.69 624.16/163.69 [plus](x1, x2) = [1] x1 + [1] x2 + [4] 624.16/163.69 624.16/163.69 [0] = [0] 624.16/163.69 624.16/163.69 [x](x1, x2) = [1] x1 + [1] x2 + [4] 624.16/163.69 624.16/163.69 [n__0] = [0] 624.16/163.69 624.16/163.69 [n__plus](x1, x2) = [1] x1 + [1] x2 + [4] 624.16/163.69 624.16/163.69 [n__s](x1) = [1] x1 + [4] 624.16/163.69 624.16/163.69 [n__x](x1, x2) = [1] x1 + [1] x2 + [4] 624.16/163.69 624.16/163.69 [U11^#](x1, x2) = [2] x2 + [4] 624.16/163.69 624.16/163.69 [isNat^#](x1) = [2] x1 + [0] 624.16/163.69 624.16/163.69 [activate^#](x1) = [7] x1 + [0] 624.16/163.69 624.16/163.69 [U31^#](x1, x2) = [2] x2 + [0] 624.16/163.69 624.16/163.69 [U51^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 624.16/163.69 624.16/163.69 [U52^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 624.16/163.69 624.16/163.69 [U71^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 624.16/163.69 624.16/163.69 [U72^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 624.16/163.69 624.16/163.69 [c_1](x1, x2) = [7] x1 + [7] x2 + [0] 624.16/163.69 624.16/163.69 [c_2](x1, x2, x3, x4) = [7] x1 + [7] x2 + [7] x3 + [7] x4 + [0] 624.16/163.69 624.16/163.69 [c_3](x1, x2) = [7] x1 + [7] x2 + [0] 624.16/163.69 624.16/163.69 [c_4](x1, x2, x3, x4) = [7] x1 + [7] x2 + [7] x3 + [7] x4 + [0] 624.16/163.69 624.16/163.69 [c_8](x1, x2) = [7] x1 + [7] x2 + [0] 624.16/163.69 624.16/163.69 [c_10](x1, x2, x3, x4, x5) = [7] x1 + [7] x2 + [7] x3 + [7] x4 + [7] x5 + [0] 624.16/163.69 624.16/163.69 [c_11](x1, x2) = [7] x1 + [7] x2 + [0] 624.16/163.69 624.16/163.69 [c_12](x1, x2, x3, x4, x5) = [7] x1 + [7] x2 + [7] x3 + [7] x4 + [7] x5 + [0] 624.16/163.69 624.16/163.69 [c_13](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [0] 624.16/163.69 624.16/163.69 [c] = [0] 624.16/163.69 624.16/163.69 [c_1](x1) = [1] x1 + [3] 624.16/163.69 624.16/163.69 [c_2](x1, x2) = [1] x1 + [1] x2 + [3] 624.16/163.69 624.16/163.69 [c_3](x1) = [1] x1 + [1] 624.16/163.69 624.16/163.69 [c_4](x1, x2) = [1] x1 + [1] x2 + [3] 624.16/163.69 624.16/163.69 [c_5](x1) = [1] x1 + [0] 624.16/163.69 624.16/163.69 [c_6](x1) = [2] x1 + [3] 624.16/163.69 624.16/163.69 [c_7](x1) = [1] x1 + [3] 624.16/163.69 624.16/163.69 The order satisfies the following ordering constraints: 624.16/163.69 624.16/163.69 [U11(tt(), V2)] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [U12(isNat(activate(V2)))] 624.16/163.69 624.16/163.69 [U12(tt())] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [tt()] 624.16/163.69 624.16/163.69 [isNat(n__0())] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [tt()] 624.16/163.69 624.16/163.69 [isNat(n__plus(V1, V2))] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [U11(isNat(activate(V1)), activate(V2))] 624.16/163.69 624.16/163.69 [isNat(n__s(V1))] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [U21(isNat(activate(V1)))] 624.16/163.69 624.16/163.69 [isNat(n__x(V1, V2))] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [U31(isNat(activate(V1)), activate(V2))] 624.16/163.69 624.16/163.69 [activate(X)] = [1] X + [0] 624.16/163.69 >= [1] X + [0] 624.16/163.69 = [X] 624.16/163.69 624.16/163.69 [activate(n__0())] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [0()] 624.16/163.69 624.16/163.69 [activate(n__plus(X1, X2))] = [1] X1 + [1] X2 + [4] 624.16/163.69 >= [1] X1 + [1] X2 + [4] 624.16/163.69 = [plus(activate(X1), activate(X2))] 624.16/163.69 624.16/163.69 [activate(n__s(X))] = [1] X + [4] 624.16/163.69 >= [1] X + [4] 624.16/163.69 = [s(activate(X))] 624.16/163.69 624.16/163.69 [activate(n__x(X1, X2))] = [1] X1 + [1] X2 + [4] 624.16/163.69 >= [1] X1 + [1] X2 + [4] 624.16/163.69 = [x(activate(X1), activate(X2))] 624.16/163.69 624.16/163.69 [U21(tt())] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [tt()] 624.16/163.69 624.16/163.69 [U31(tt(), V2)] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [U32(isNat(activate(V2)))] 624.16/163.69 624.16/163.69 [U32(tt())] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [tt()] 624.16/163.69 624.16/163.69 [s(X)] = [1] X + [4] 624.16/163.69 >= [1] X + [4] 624.16/163.69 = [n__s(X)] 624.16/163.69 624.16/163.69 [plus(X1, X2)] = [1] X1 + [1] X2 + [4] 624.16/163.69 >= [1] X1 + [1] X2 + [4] 624.16/163.69 = [n__plus(X1, X2)] 624.16/163.69 624.16/163.69 [0()] = [0] 624.16/163.69 >= [0] 624.16/163.69 = [n__0()] 624.16/163.69 624.16/163.69 [x(X1, X2)] = [1] X1 + [1] X2 + [4] 624.16/163.69 >= [1] X1 + [1] X2 + [4] 624.16/163.69 = [n__x(X1, X2)] 624.16/163.69 624.16/163.69 [U11^#(tt(), V2)] = [2] V2 + [4] 624.16/163.69 > [2] V2 + [3] 624.16/163.69 = [c_1(isNat^#(activate(V2)))] 624.16/163.69 624.16/163.69 [isNat^#(n__plus(V1, V2))] = [2] V2 + [2] V1 + [8] 624.16/163.69 > [2] V2 + [2] V1 + [7] 624.16/163.69 = [c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)))] 624.16/163.69 624.16/163.69 [isNat^#(n__s(V1))] = [2] V1 + [8] 624.16/163.69 > [2] V1 + [1] 624.16/163.69 = [c_3(isNat^#(activate(V1)))] 624.16/163.69 624.16/163.69 [isNat^#(n__x(V1, V2))] = [2] V2 + [2] V1 + [8] 624.16/163.69 > [2] V2 + [2] V1 + [3] 624.16/163.69 = [c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1)))] 624.16/163.69 624.16/163.69 [U31^#(tt(), V2)] = [2] V2 + [0] 624.16/163.69 >= [2] V2 + [0] 624.16/163.69 = [c_5(isNat^#(activate(V2)))] 624.16/163.69 624.16/163.69 [U51^#(tt(), M, N)] = [7] N + [7] M + [7] 624.16/163.69 > [4] N + [3] 624.16/163.69 = [c_6(isNat^#(activate(N)))] 624.16/163.69 624.16/163.69 [U71^#(tt(), M, N)] = [7] N + [7] M + [7] 624.16/163.69 > [2] N + [3] 624.16/163.69 = [c_7(isNat^#(activate(N)))] 624.16/163.69 624.16/163.69 624.16/163.69 We return to the main proof. Consider the set of all dependency 624.16/163.69 pairs 624.16/163.69 624.16/163.69 : 624.16/163.69 { 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.16/163.69 , 2: isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , 3: isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.16/163.69 , 4: isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , 5: U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.16/163.69 , 6: U51^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.16/163.69 , 7: U71^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.16/163.69 624.16/163.69 Processor 'matrix interpretation of dimension 1' induces the 624.16/163.69 complexity certificate YES(?,O(n^1)) on application of dependency 624.16/163.69 pairs {1,2,3,4,6,7}. These cover all (indirect) predecessors of 624.16/163.69 dependency pairs {1,2,3,4,5,6,7}, their number of application is 624.16/163.69 equally bounded. The dependency pairs are shifted into the weak 624.16/163.69 component. 624.16/163.69 624.16/163.69 We are left with following problem, upon which TcT provides the 624.16/163.69 certificate YES(O(1),O(1)). 624.16/163.69 624.16/163.69 Weak DPs: 624.16/163.69 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.16/163.69 , U51^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.16/163.69 , U71^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.16/163.69 Weak Trs: 624.16/163.69 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.69 , U12(tt()) -> tt() 624.16/163.69 , isNat(n__0()) -> tt() 624.16/163.69 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.69 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate(X) -> X 624.16/163.69 , activate(n__0()) -> 0() 624.16/163.69 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.69 , activate(n__s(X)) -> s(activate(X)) 624.16/163.69 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.69 , U21(tt()) -> tt() 624.16/163.69 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.69 , U32(tt()) -> tt() 624.16/163.69 , s(X) -> n__s(X) 624.16/163.69 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.69 , 0() -> n__0() 624.16/163.69 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(1)) 624.16/163.69 624.16/163.69 The following weak DPs constitute a sub-graph of the DG that is 624.16/163.69 closed under successors. The DPs are removed. 624.16/163.69 624.16/163.69 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> 624.16/163.69 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.16/163.69 isNat^#(activate(V1))) 624.16/163.69 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.16/163.69 , U51^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.16/163.69 , U71^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.16/163.69 624.16/163.69 We are left with following problem, upon which TcT provides the 624.16/163.69 certificate YES(O(1),O(1)). 624.16/163.69 624.16/163.69 Weak Trs: 624.16/163.69 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.69 , U12(tt()) -> tt() 624.16/163.69 , isNat(n__0()) -> tt() 624.16/163.69 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.69 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate(X) -> X 624.16/163.69 , activate(n__0()) -> 0() 624.16/163.69 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.69 , activate(n__s(X)) -> s(activate(X)) 624.16/163.69 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.69 , U21(tt()) -> tt() 624.16/163.69 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.69 , U32(tt()) -> tt() 624.16/163.69 , s(X) -> n__s(X) 624.16/163.69 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.69 , 0() -> n__0() 624.16/163.69 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(1)) 624.16/163.69 624.16/163.69 No rule is usable, rules are removed from the input problem. 624.16/163.69 624.16/163.69 We are left with following problem, upon which TcT provides the 624.16/163.69 certificate YES(O(1),O(1)). 624.16/163.69 624.16/163.69 Rules: Empty 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(1)) 624.16/163.69 624.16/163.69 Empty rules are trivially bounded 624.16/163.69 624.16/163.69 We return to the main proof. 624.16/163.69 624.16/163.69 We are left with following problem, upon which TcT provides the 624.16/163.69 certificate YES(O(1),O(n^1)). 624.16/163.69 624.16/163.69 Strict DPs: 624.16/163.69 { activate^#(n__plus(X1, X2)) -> 624.16/163.69 c_5(activate^#(X1), activate^#(X2)) 624.16/163.69 , activate^#(n__s(X)) -> c_6(activate^#(X)) } 624.16/163.69 Weak DPs: 624.16/163.69 { U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.16/163.69 , U11^#(tt(), V2) -> activate^#(V2) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> 624.16/163.69 U11^#(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.16/163.69 , isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.16/163.69 , isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.16/163.69 , isNat^#(n__s(V1)) -> activate^#(V1) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.16/163.69 , isNat^#(n__x(V1, V2)) -> U31^#(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.16/163.69 , U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.16/163.69 , U31^#(tt(), V2) -> activate^#(V2) 624.16/163.69 , U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.69 , U51^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , U51^#(tt(), M, N) -> activate^#(N) 624.16/163.69 , U51^#(tt(), M, N) -> 624.16/163.69 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.16/163.69 , U52^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , U52^#(tt(), M, N) -> activate^#(N) 624.16/163.69 , U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.69 , U71^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , U71^#(tt(), M, N) -> activate^#(N) 624.16/163.69 , U71^#(tt(), M, N) -> 624.16/163.69 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.16/163.69 , U72^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , U72^#(tt(), M, N) -> activate^#(N) } 624.16/163.69 Weak Trs: 624.16/163.69 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.16/163.69 , U12(tt()) -> tt() 624.16/163.69 , isNat(n__0()) -> tt() 624.16/163.69 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.16/163.69 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.16/163.69 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.16/163.69 , activate(X) -> X 624.16/163.69 , activate(n__0()) -> 0() 624.16/163.69 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.16/163.69 , activate(n__s(X)) -> s(activate(X)) 624.16/163.69 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.16/163.69 , U21(tt()) -> tt() 624.16/163.69 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.16/163.69 , U32(tt()) -> tt() 624.16/163.69 , s(X) -> n__s(X) 624.16/163.69 , plus(X1, X2) -> n__plus(X1, X2) 624.16/163.69 , 0() -> n__0() 624.16/163.69 , x(X1, X2) -> n__x(X1, X2) } 624.16/163.69 Obligation: 624.16/163.69 innermost runtime complexity 624.16/163.69 Answer: 624.16/163.69 YES(O(1),O(n^1)) 624.16/163.69 624.16/163.69 We use the processor 'matrix interpretation of dimension 1' to 624.16/163.69 orient following rules strictly. 624.16/163.69 624.16/163.69 DPs: 624.16/163.69 { 2: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.16/163.69 , 9: isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.16/163.69 , 10: isNat^#(n__s(V1)) -> activate^#(V1) 624.16/163.69 , 18: U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.69 , 19: U51^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , 20: U51^#(tt(), M, N) -> activate^#(N) 624.16/163.69 , 21: U51^#(tt(), M, N) -> 624.16/163.69 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.16/163.69 , 24: U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.16/163.69 , 25: U71^#(tt(), M, N) -> activate^#(M) 624.16/163.69 , 26: U71^#(tt(), M, N) -> activate^#(N) 624.16/163.69 , 27: U71^#(tt(), M, N) -> 624.16/163.69 U72^#(isNat(activate(N)), activate(M), activate(N)) } 624.16/163.69 624.16/163.69 Sub-proof: 624.16/163.69 ---------- 624.16/163.69 The following argument positions are usable: 624.16/163.69 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1}, Uargs(c_7) = {1, 2} 624.16/163.69 624.16/163.69 TcT has computed the following constructor-based matrix 624.16/163.69 interpretation satisfying not(EDA). 624.16/163.69 624.16/163.69 [U11](x1, x2) = [0] 624.16/163.69 624.16/163.69 [tt] = [0] 624.16/163.69 624.16/163.69 [U12](x1) = [0] 624.16/163.69 624.16/163.69 [isNat](x1) = [0] 624.16/163.69 624.16/163.69 [activate](x1) = [1] x1 + [0] 624.16/163.69 624.16/163.69 [U21](x1) = [0] 624.16/163.69 624.16/163.69 [U31](x1, x2) = [0] 624.16/163.69 624.16/163.69 [U32](x1) = [0] 624.16/163.69 624.16/163.69 [s](x1) = [1] x1 + [1] 624.39/163.70 624.39/163.70 [plus](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [0] = [0] 624.39/163.70 624.39/163.70 [x](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [n__0] = [0] 624.39/163.70 624.39/163.70 [n__plus](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [n__s](x1) = [1] x1 + [1] 624.39/163.70 624.39/163.70 [n__x](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [U11^#](x1, x2) = [4] x2 + [0] 624.39/163.70 624.39/163.70 [isNat^#](x1) = [4] x1 + [0] 624.39/163.70 624.39/163.70 [activate^#](x1) = [4] x1 + [0] 624.39/163.70 624.39/163.70 [U31^#](x1, x2) = [4] x2 + [0] 624.39/163.70 624.39/163.70 [U51^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [5] 624.39/163.70 624.39/163.70 [U52^#](x1, x2, x3) = [4] x2 + [4] x3 + [0] 624.39/163.70 624.39/163.70 [U71^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [5] 624.39/163.70 624.39/163.70 [U72^#](x1, x2, x3) = [4] x2 + [4] x3 + [0] 624.39/163.70 624.39/163.70 [c_5](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [c_6](x1) = [1] x1 + [1] 624.39/163.70 624.39/163.70 [c_7](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 The order satisfies the following ordering constraints: 624.39/163.70 624.39/163.70 [U11(tt(), V2)] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U12(isNat(activate(V2)))] 624.39/163.70 624.39/163.70 [U12(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [isNat(n__0())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [isNat(n__plus(V1, V2))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U11(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [isNat(n__s(V1))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U21(isNat(activate(V1)))] 624.39/163.70 624.39/163.70 [isNat(n__x(V1, V2))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U31(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [activate(X)] = [1] X + [0] 624.39/163.70 >= [1] X + [0] 624.39/163.70 = [X] 624.39/163.70 624.39/163.70 [activate(n__0())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [0()] 624.39/163.70 624.39/163.70 [activate(n__plus(X1, X2))] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [plus(activate(X1), activate(X2))] 624.39/163.70 624.39/163.70 [activate(n__s(X))] = [1] X + [1] 624.39/163.70 >= [1] X + [1] 624.39/163.70 = [s(activate(X))] 624.39/163.70 624.39/163.70 [activate(n__x(X1, X2))] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [x(activate(X1), activate(X2))] 624.39/163.70 624.39/163.70 [U21(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [U31(tt(), V2)] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U32(isNat(activate(V2)))] 624.39/163.70 624.39/163.70 [U32(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [s(X)] = [1] X + [1] 624.39/163.70 >= [1] X + [1] 624.39/163.70 = [n__s(X)] 624.39/163.70 624.39/163.70 [plus(X1, X2)] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [n__plus(X1, X2)] 624.39/163.70 624.39/163.70 [0()] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [n__0()] 624.39/163.70 624.39/163.70 [x(X1, X2)] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [n__x(X1, X2)] 624.39/163.70 624.39/163.70 [U11^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [isNat^#(activate(V2))] 624.39/163.70 624.39/163.70 [U11^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [U11^#(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [isNat^#(activate(V1))] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [activate^#(V1)] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [isNat^#(n__s(V1))] = [4] V1 + [4] 624.39/163.70 > [4] V1 + [0] 624.39/163.70 = [isNat^#(activate(V1))] 624.39/163.70 624.39/163.70 [isNat^#(n__s(V1))] = [4] V1 + [4] 624.39/163.70 > [4] V1 + [0] 624.39/163.70 = [activate^#(V1)] 624.39/163.70 624.39/163.70 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [isNat^#(activate(V1))] 624.39/163.70 624.39/163.70 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [activate^#(V1)] 624.39/163.70 624.39/163.70 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [U31^#(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [activate^#(n__plus(X1, X2))] = [4] X1 + [4] X2 + [0] 624.39/163.70 >= [4] X1 + [4] X2 + [0] 624.39/163.70 = [c_5(activate^#(X1), activate^#(X2))] 624.39/163.70 624.39/163.70 [activate^#(n__s(X))] = [4] X + [4] 624.39/163.70 > [4] X + [1] 624.39/163.70 = [c_6(activate^#(X))] 624.39/163.70 624.39/163.70 [activate^#(n__x(X1, X2))] = [4] X1 + [4] X2 + [0] 624.39/163.70 >= [4] X1 + [4] X2 + [0] 624.39/163.70 = [c_7(activate^#(X1), activate^#(X2))] 624.39/163.70 624.39/163.70 [U31^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [isNat^#(activate(V2))] 624.39/163.70 624.39/163.70 [U31^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [0] 624.39/163.70 = [isNat^#(activate(N))] 624.39/163.70 624.39/163.70 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] M + [0] 624.39/163.70 = [activate^#(M)] 624.39/163.70 624.39/163.70 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [0] 624.39/163.70 = [activate^#(N)] 624.39/163.70 624.39/163.70 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [4] M + [0] 624.39/163.70 = [U52^#(isNat(activate(N)), activate(M), activate(N))] 624.39/163.70 624.39/163.70 [U52^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.70 >= [4] M + [0] 624.39/163.70 = [activate^#(M)] 624.39/163.70 624.39/163.70 [U52^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.70 >= [4] N + [0] 624.39/163.70 = [activate^#(N)] 624.39/163.70 624.39/163.70 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [0] 624.39/163.70 = [isNat^#(activate(N))] 624.39/163.70 624.39/163.70 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] M + [0] 624.39/163.70 = [activate^#(M)] 624.39/163.70 624.39/163.70 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [0] 624.39/163.70 = [activate^#(N)] 624.39/163.70 624.39/163.70 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.70 > [4] N + [4] M + [0] 624.39/163.70 = [U72^#(isNat(activate(N)), activate(M), activate(N))] 624.39/163.70 624.39/163.70 [U72^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.70 >= [4] M + [0] 624.39/163.70 = [activate^#(M)] 624.39/163.70 624.39/163.70 [U72^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.70 >= [4] N + [0] 624.39/163.70 = [activate^#(N)] 624.39/163.70 624.39/163.70 624.39/163.70 We return to the main proof. Consider the set of all dependency 624.39/163.70 pairs 624.39/163.70 624.39/163.70 : 624.39/163.70 { 1: activate^#(n__plus(X1, X2)) -> 624.39/163.70 c_5(activate^#(X1), activate^#(X2)) 624.39/163.70 , 2: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.70 , 3: U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.70 , 4: U11^#(tt(), V2) -> activate^#(V2) 624.39/163.70 , 5: isNat^#(n__plus(V1, V2)) -> 624.39/163.70 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.70 , 6: isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.70 , 7: isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.70 , 8: isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.70 , 9: isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.39/163.70 , 10: isNat^#(n__s(V1)) -> activate^#(V1) 624.39/163.70 , 11: isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.70 , 12: isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.39/163.70 , 13: isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.39/163.70 , 14: isNat^#(n__x(V1, V2)) -> 624.39/163.70 U31^#(isNat(activate(V1)), activate(V2)) 624.39/163.70 , 15: activate^#(n__x(X1, X2)) -> 624.39/163.70 c_7(activate^#(X1), activate^#(X2)) 624.39/163.70 , 16: U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.70 , 17: U31^#(tt(), V2) -> activate^#(V2) 624.39/163.70 , 18: U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , 19: U51^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 20: U51^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , 21: U51^#(tt(), M, N) -> 624.39/163.70 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.70 , 22: U52^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 23: U52^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , 24: U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , 25: U71^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 26: U71^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , 27: U71^#(tt(), M, N) -> 624.39/163.70 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.70 , 28: U72^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 29: U72^#(tt(), M, N) -> activate^#(N) } 624.39/163.70 624.39/163.70 Processor 'matrix interpretation of dimension 1' induces the 624.39/163.70 complexity certificate YES(?,O(n^1)) on application of dependency 624.39/163.70 pairs {2,9,10,18,19,20,21,24,25,26,27}. These cover all (indirect) 624.39/163.70 predecessors of dependency pairs 624.39/163.70 {2,9,10,18,19,20,21,22,23,24,25,26,27,28,29}, their number of 624.39/163.70 application is equally bounded. The dependency pairs are shifted 624.39/163.70 into the weak component. 624.39/163.70 624.39/163.70 We are left with following problem, upon which TcT provides the 624.39/163.70 certificate YES(O(1),O(n^1)). 624.39/163.70 624.39/163.70 Strict DPs: 624.39/163.70 { activate^#(n__plus(X1, X2)) -> 624.39/163.70 c_5(activate^#(X1), activate^#(X2)) } 624.39/163.70 Weak DPs: 624.39/163.70 { U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.70 , U11^#(tt(), V2) -> activate^#(V2) 624.39/163.70 , isNat^#(n__plus(V1, V2)) -> 624.39/163.70 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.70 , isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.70 , isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.70 , isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.70 , isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.39/163.70 , isNat^#(n__s(V1)) -> activate^#(V1) 624.39/163.70 , isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.70 , isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.39/163.70 , isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.39/163.70 , isNat^#(n__x(V1, V2)) -> U31^#(isNat(activate(V1)), activate(V2)) 624.39/163.70 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.70 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.70 , U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.70 , U31^#(tt(), V2) -> activate^#(V2) 624.39/163.70 , U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , U51^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , U51^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , U51^#(tt(), M, N) -> 624.39/163.70 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.70 , U52^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , U52^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , U71^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , U71^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , U71^#(tt(), M, N) -> 624.39/163.70 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.70 , U72^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , U72^#(tt(), M, N) -> activate^#(N) } 624.39/163.70 Weak Trs: 624.39/163.70 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.70 , U12(tt()) -> tt() 624.39/163.70 , isNat(n__0()) -> tt() 624.39/163.70 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.70 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.70 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.70 , activate(X) -> X 624.39/163.70 , activate(n__0()) -> 0() 624.39/163.70 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.70 , activate(n__s(X)) -> s(activate(X)) 624.39/163.70 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.70 , U21(tt()) -> tt() 624.39/163.70 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.70 , U32(tt()) -> tt() 624.39/163.70 , s(X) -> n__s(X) 624.39/163.70 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.70 , 0() -> n__0() 624.39/163.70 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.70 Obligation: 624.39/163.70 innermost runtime complexity 624.39/163.70 Answer: 624.39/163.70 YES(O(1),O(n^1)) 624.39/163.70 624.39/163.70 We use the processor 'matrix interpretation of dimension 1' to 624.39/163.70 orient following rules strictly. 624.39/163.70 624.39/163.70 DPs: 624.39/163.70 { 1: activate^#(n__plus(X1, X2)) -> 624.39/163.70 c_5(activate^#(X1), activate^#(X2)) 624.39/163.70 , 4: isNat^#(n__plus(V1, V2)) -> 624.39/163.70 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.70 , 5: isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.70 , 6: isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.70 , 7: isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.70 , 18: U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , 19: U51^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 20: U51^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , 21: U51^#(tt(), M, N) -> 624.39/163.70 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.70 , 24: U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.70 , 25: U71^#(tt(), M, N) -> activate^#(M) 624.39/163.70 , 26: U71^#(tt(), M, N) -> activate^#(N) 624.39/163.70 , 27: U71^#(tt(), M, N) -> 624.39/163.70 U72^#(isNat(activate(N)), activate(M), activate(N)) } 624.39/163.70 624.39/163.70 Sub-proof: 624.39/163.70 ---------- 624.39/163.70 The following argument positions are usable: 624.39/163.70 Uargs(c_5) = {1, 2}, Uargs(c_6) = {1}, Uargs(c_7) = {1, 2} 624.39/163.70 624.39/163.70 TcT has computed the following constructor-based matrix 624.39/163.70 interpretation satisfying not(EDA). 624.39/163.70 624.39/163.70 [U11](x1, x2) = [0] 624.39/163.70 624.39/163.70 [tt] = [0] 624.39/163.70 624.39/163.70 [U12](x1) = [0] 624.39/163.70 624.39/163.70 [isNat](x1) = [0] 624.39/163.70 624.39/163.70 [activate](x1) = [1] x1 + [0] 624.39/163.70 624.39/163.70 [U21](x1) = [0] 624.39/163.70 624.39/163.70 [U31](x1, x2) = [0] 624.39/163.70 624.39/163.70 [U32](x1) = [0] 624.39/163.70 624.39/163.70 [s](x1) = [1] x1 + [0] 624.39/163.70 624.39/163.70 [plus](x1, x2) = [1] x1 + [1] x2 + [1] 624.39/163.70 624.39/163.70 [0] = [0] 624.39/163.70 624.39/163.70 [x](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [n__0] = [0] 624.39/163.70 624.39/163.70 [n__plus](x1, x2) = [1] x1 + [1] x2 + [1] 624.39/163.70 624.39/163.70 [n__s](x1) = [1] x1 + [0] 624.39/163.70 624.39/163.70 [n__x](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 [U11^#](x1, x2) = [4] x2 + [0] 624.39/163.70 624.39/163.70 [isNat^#](x1) = [4] x1 + [0] 624.39/163.70 624.39/163.70 [activate^#](x1) = [4] x1 + [0] 624.39/163.70 624.39/163.70 [U31^#](x1, x2) = [4] x2 + [0] 624.39/163.70 624.39/163.70 [U51^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [5] 624.39/163.70 624.39/163.70 [U52^#](x1, x2, x3) = [4] x2 + [4] x3 + [0] 624.39/163.70 624.39/163.70 [U71^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [5] 624.39/163.70 624.39/163.70 [U72^#](x1, x2, x3) = [4] x2 + [4] x3 + [0] 624.39/163.70 624.39/163.70 [c_5](x1, x2) = [1] x1 + [1] x2 + [1] 624.39/163.70 624.39/163.70 [c_6](x1) = [1] x1 + [0] 624.39/163.70 624.39/163.70 [c_7](x1, x2) = [1] x1 + [1] x2 + [0] 624.39/163.70 624.39/163.70 The order satisfies the following ordering constraints: 624.39/163.70 624.39/163.70 [U11(tt(), V2)] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U12(isNat(activate(V2)))] 624.39/163.70 624.39/163.70 [U12(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [isNat(n__0())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [isNat(n__plus(V1, V2))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U11(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [isNat(n__s(V1))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U21(isNat(activate(V1)))] 624.39/163.70 624.39/163.70 [isNat(n__x(V1, V2))] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U31(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [activate(X)] = [1] X + [0] 624.39/163.70 >= [1] X + [0] 624.39/163.70 = [X] 624.39/163.70 624.39/163.70 [activate(n__0())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [0()] 624.39/163.70 624.39/163.70 [activate(n__plus(X1, X2))] = [1] X1 + [1] X2 + [1] 624.39/163.70 >= [1] X1 + [1] X2 + [1] 624.39/163.70 = [plus(activate(X1), activate(X2))] 624.39/163.70 624.39/163.70 [activate(n__s(X))] = [1] X + [0] 624.39/163.70 >= [1] X + [0] 624.39/163.70 = [s(activate(X))] 624.39/163.70 624.39/163.70 [activate(n__x(X1, X2))] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [x(activate(X1), activate(X2))] 624.39/163.70 624.39/163.70 [U21(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [U31(tt(), V2)] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [U32(isNat(activate(V2)))] 624.39/163.70 624.39/163.70 [U32(tt())] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [tt()] 624.39/163.70 624.39/163.70 [s(X)] = [1] X + [0] 624.39/163.70 >= [1] X + [0] 624.39/163.70 = [n__s(X)] 624.39/163.70 624.39/163.70 [plus(X1, X2)] = [1] X1 + [1] X2 + [1] 624.39/163.70 >= [1] X1 + [1] X2 + [1] 624.39/163.70 = [n__plus(X1, X2)] 624.39/163.70 624.39/163.70 [0()] = [0] 624.39/163.70 >= [0] 624.39/163.70 = [n__0()] 624.39/163.70 624.39/163.70 [x(X1, X2)] = [1] X1 + [1] X2 + [0] 624.39/163.70 >= [1] X1 + [1] X2 + [0] 624.39/163.70 = [n__x(X1, X2)] 624.39/163.70 624.39/163.70 [U11^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [isNat^#(activate(V2))] 624.39/163.70 624.39/163.70 [U11^#(tt(), V2)] = [4] V2 + [0] 624.39/163.70 >= [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [4] 624.39/163.70 > [4] V2 + [0] 624.39/163.70 = [U11^#(isNat(activate(V1)), activate(V2))] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [4] 624.39/163.70 > [4] V1 + [0] 624.39/163.70 = [isNat^#(activate(V1))] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [4] 624.39/163.70 > [4] V1 + [0] 624.39/163.70 = [activate^#(V1)] 624.39/163.70 624.39/163.70 [isNat^#(n__plus(V1, V2))] = [4] V2 + [4] V1 + [4] 624.39/163.70 > [4] V2 + [0] 624.39/163.70 = [activate^#(V2)] 624.39/163.70 624.39/163.70 [isNat^#(n__s(V1))] = [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [isNat^#(activate(V1))] 624.39/163.70 624.39/163.70 [isNat^#(n__s(V1))] = [4] V1 + [0] 624.39/163.70 >= [4] V1 + [0] 624.39/163.70 = [activate^#(V1)] 624.39/163.70 624.39/163.70 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.71 >= [4] V1 + [0] 624.39/163.71 = [isNat^#(activate(V1))] 624.39/163.71 624.39/163.71 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.71 >= [4] V1 + [0] 624.39/163.71 = [activate^#(V1)] 624.39/163.71 624.39/163.71 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.71 >= [4] V2 + [0] 624.39/163.71 = [activate^#(V2)] 624.39/163.71 624.39/163.71 [isNat^#(n__x(V1, V2))] = [4] V2 + [4] V1 + [0] 624.39/163.71 >= [4] V2 + [0] 624.39/163.71 = [U31^#(isNat(activate(V1)), activate(V2))] 624.39/163.71 624.39/163.71 [activate^#(n__plus(X1, X2))] = [4] X1 + [4] X2 + [4] 624.39/163.71 > [4] X1 + [4] X2 + [1] 624.39/163.71 = [c_5(activate^#(X1), activate^#(X2))] 624.39/163.71 624.39/163.71 [activate^#(n__s(X))] = [4] X + [0] 624.39/163.71 >= [4] X + [0] 624.39/163.71 = [c_6(activate^#(X))] 624.39/163.71 624.39/163.71 [activate^#(n__x(X1, X2))] = [4] X1 + [4] X2 + [0] 624.39/163.71 >= [4] X1 + [4] X2 + [0] 624.39/163.71 = [c_7(activate^#(X1), activate^#(X2))] 624.39/163.71 624.39/163.71 [U31^#(tt(), V2)] = [4] V2 + [0] 624.39/163.71 >= [4] V2 + [0] 624.39/163.71 = [isNat^#(activate(V2))] 624.39/163.71 624.39/163.71 [U31^#(tt(), V2)] = [4] V2 + [0] 624.39/163.71 >= [4] V2 + [0] 624.39/163.71 = [activate^#(V2)] 624.39/163.71 624.39/163.71 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [0] 624.39/163.71 = [isNat^#(activate(N))] 624.39/163.71 624.39/163.71 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] M + [0] 624.39/163.71 = [activate^#(M)] 624.39/163.71 624.39/163.71 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [0] 624.39/163.71 = [activate^#(N)] 624.39/163.71 624.39/163.71 [U51^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [4] M + [0] 624.39/163.71 = [U52^#(isNat(activate(N)), activate(M), activate(N))] 624.39/163.71 624.39/163.71 [U52^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.71 >= [4] M + [0] 624.39/163.71 = [activate^#(M)] 624.39/163.71 624.39/163.71 [U52^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.71 >= [4] N + [0] 624.39/163.71 = [activate^#(N)] 624.39/163.71 624.39/163.71 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [0] 624.39/163.71 = [isNat^#(activate(N))] 624.39/163.71 624.39/163.71 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] M + [0] 624.39/163.71 = [activate^#(M)] 624.39/163.71 624.39/163.71 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [0] 624.39/163.71 = [activate^#(N)] 624.39/163.71 624.39/163.71 [U71^#(tt(), M, N)] = [7] N + [7] M + [5] 624.39/163.71 > [4] N + [4] M + [0] 624.39/163.71 = [U72^#(isNat(activate(N)), activate(M), activate(N))] 624.39/163.71 624.39/163.71 [U72^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.71 >= [4] M + [0] 624.39/163.71 = [activate^#(M)] 624.39/163.71 624.39/163.71 [U72^#(tt(), M, N)] = [4] N + [4] M + [0] 624.39/163.71 >= [4] N + [0] 624.39/163.71 = [activate^#(N)] 624.39/163.71 624.39/163.71 624.39/163.71 We return to the main proof. Consider the set of all dependency 624.39/163.71 pairs 624.39/163.71 624.39/163.71 : 624.39/163.71 { 1: activate^#(n__plus(X1, X2)) -> 624.39/163.71 c_5(activate^#(X1), activate^#(X2)) 624.39/163.71 , 2: U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , 3: U11^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , 4: isNat^#(n__plus(V1, V2)) -> 624.39/163.71 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , 5: isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , 6: isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.71 , 7: isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.71 , 8: isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.39/163.71 , 9: isNat^#(n__s(V1)) -> activate^#(V1) 624.39/163.71 , 10: isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , 11: isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.39/163.71 , 12: isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.39/163.71 , 13: isNat^#(n__x(V1, V2)) -> 624.39/163.71 U31^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , 14: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.71 , 15: activate^#(n__x(X1, X2)) -> 624.39/163.71 c_7(activate^#(X1), activate^#(X2)) 624.39/163.71 , 16: U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , 17: U31^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , 18: U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , 19: U51^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , 20: U51^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , 21: U51^#(tt(), M, N) -> 624.39/163.71 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , 22: U52^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , 23: U52^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , 24: U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , 25: U71^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , 26: U71^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , 27: U71^#(tt(), M, N) -> 624.39/163.71 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , 28: U72^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , 29: U72^#(tt(), M, N) -> activate^#(N) } 624.39/163.71 624.39/163.71 Processor 'matrix interpretation of dimension 1' induces the 624.39/163.71 complexity certificate YES(?,O(n^1)) on application of dependency 624.39/163.71 pairs {1,4,5,6,7,18,19,20,21,24,25,26,27}. These cover all 624.39/163.71 (indirect) predecessors of dependency pairs 624.39/163.71 {1,2,3,4,5,6,7,18,19,20,21,22,23,24,25,26,27,28,29}, their number 624.39/163.71 of application is equally bounded. The dependency pairs are shifted 624.39/163.71 into the weak component. 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Weak DPs: 624.39/163.71 { U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , U11^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> 624.39/163.71 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.71 , isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__s(V1)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> U31^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate^#(n__plus(X1, X2)) -> 624.39/163.71 c_5(activate^#(X1), activate^#(X2)) 624.39/163.71 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.71 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.71 , U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , U31^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , U51^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U51^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U51^#(tt(), M, N) -> 624.39/163.71 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , U52^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U52^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , U71^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U71^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U71^#(tt(), M, N) -> 624.39/163.71 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , U72^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U72^#(tt(), M, N) -> activate^#(N) } 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 The following weak DPs constitute a sub-graph of the DG that is 624.39/163.71 closed under successors. The DPs are removed. 624.39/163.71 624.39/163.71 { U11^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , U11^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> 624.39/163.71 U11^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> activate^#(V2) 624.39/163.71 , isNat^#(n__s(V1)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__s(V1)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> isNat^#(activate(V1)) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> activate^#(V1) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> activate^#(V2) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> U31^#(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate^#(n__plus(X1, X2)) -> 624.39/163.71 c_5(activate^#(X1), activate^#(X2)) 624.39/163.71 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.71 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.71 , U31^#(tt(), V2) -> isNat^#(activate(V2)) 624.39/163.71 , U31^#(tt(), V2) -> activate^#(V2) 624.39/163.71 , U51^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , U51^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U51^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U51^#(tt(), M, N) -> 624.39/163.71 U52^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , U52^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U52^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U71^#(tt(), M, N) -> isNat^#(activate(N)) 624.39/163.71 , U71^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U71^#(tt(), M, N) -> activate^#(N) 624.39/163.71 , U71^#(tt(), M, N) -> 624.39/163.71 U72^#(isNat(activate(N)), activate(M), activate(N)) 624.39/163.71 , U72^#(tt(), M, N) -> activate^#(M) 624.39/163.71 , U72^#(tt(), M, N) -> activate^#(N) } 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 No rule is usable, rules are removed from the input problem. 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Rules: Empty 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 Empty rules are trivially bounded 624.39/163.71 624.39/163.71 S) We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Strict DPs: 624.39/163.71 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.39/163.71 Weak DPs: 624.39/163.71 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> 624.39/163.71 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.71 isNat^#(activate(V1)), 624.39/163.71 activate^#(V1), 624.39/163.71 activate^#(V2)) 624.39/163.71 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> 624.39/163.71 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.71 isNat^#(activate(V1)), 624.39/163.71 activate^#(V1), 624.39/163.71 activate^#(V2)) 624.39/163.71 , activate^#(n__plus(X1, X2)) -> 624.39/163.71 c_5(activate^#(X1), activate^#(X2)) 624.39/163.71 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.71 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.71 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.71 , U51^#(tt(), M, N) -> 624.39/163.71 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.71 isNat^#(activate(N)), 624.39/163.71 activate^#(N), 624.39/163.71 activate^#(M), 624.39/163.71 activate^#(N)) 624.39/163.71 , U71^#(tt(), M, N) -> 624.39/163.71 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.71 isNat^#(activate(N)), 624.39/163.71 activate^#(N), 624.39/163.71 activate^#(M), 624.39/163.71 activate^#(N)) 624.39/163.71 , U72^#(tt(), M, N) -> 624.39/163.71 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 The following weak DPs constitute a sub-graph of the DG that is 624.39/163.71 closed under successors. The DPs are removed. 624.39/163.71 624.39/163.71 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.71 , isNat^#(n__plus(V1, V2)) -> 624.39/163.71 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.71 isNat^#(activate(V1)), 624.39/163.71 activate^#(V1), 624.39/163.71 activate^#(V2)) 624.39/163.71 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.71 , isNat^#(n__x(V1, V2)) -> 624.39/163.71 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.71 isNat^#(activate(V1)), 624.39/163.71 activate^#(V1), 624.39/163.71 activate^#(V2)) 624.39/163.71 , activate^#(n__plus(X1, X2)) -> 624.39/163.71 c_5(activate^#(X1), activate^#(X2)) 624.39/163.71 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.71 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.71 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.71 , U71^#(tt(), M, N) -> 624.39/163.71 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.71 isNat^#(activate(N)), 624.39/163.71 activate^#(N), 624.39/163.71 activate^#(M), 624.39/163.71 activate^#(N)) 624.39/163.71 , U72^#(tt(), M, N) -> 624.39/163.71 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Strict DPs: 624.39/163.71 { U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.39/163.71 Weak DPs: 624.39/163.71 { U51^#(tt(), M, N) -> 624.39/163.71 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.71 isNat^#(activate(N)), 624.39/163.71 activate^#(N), 624.39/163.71 activate^#(M), 624.39/163.71 activate^#(N)) } 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 Due to missing edges in the dependency-graph, the right-hand sides 624.39/163.71 of following rules could be simplified: 624.39/163.71 624.39/163.71 { U51^#(tt(), M, N) -> 624.39/163.71 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.71 isNat^#(activate(N)), 624.39/163.71 activate^#(N), 624.39/163.71 activate^#(M), 624.39/163.71 activate^#(N)) 624.39/163.71 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Strict DPs: { U52^#(tt(), M, N) -> c_1() } 624.39/163.71 Weak DPs: 624.39/163.71 { U51^#(tt(), M, N) -> 624.39/163.71 c_2(U52^#(isNat(activate(N)), activate(M), activate(N))) } 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 The dependency graph contains no loops, we remove all dependency 624.39/163.71 pairs. 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Weak Trs: 624.39/163.71 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.71 , U12(tt()) -> tt() 624.39/163.71 , isNat(n__0()) -> tt() 624.39/163.71 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.71 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.71 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.71 , activate(X) -> X 624.39/163.71 , activate(n__0()) -> 0() 624.39/163.71 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.71 , activate(n__s(X)) -> s(activate(X)) 624.39/163.71 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.71 , U21(tt()) -> tt() 624.39/163.71 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.71 , U32(tt()) -> tt() 624.39/163.71 , s(X) -> n__s(X) 624.39/163.71 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.71 , 0() -> n__0() 624.39/163.71 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 No rule is usable, rules are removed from the input problem. 624.39/163.71 624.39/163.71 We are left with following problem, upon which TcT provides the 624.39/163.71 certificate YES(O(1),O(1)). 624.39/163.71 624.39/163.71 Rules: Empty 624.39/163.71 Obligation: 624.39/163.71 innermost runtime complexity 624.39/163.71 Answer: 624.39/163.71 YES(O(1),O(1)) 624.39/163.71 624.39/163.71 Empty rules are trivially bounded 624.39/163.72 624.39/163.72 624.39/163.72 S) We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(n^1)). 624.39/163.72 624.39/163.72 Strict DPs: 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , U71^#(tt(), M, N) -> 624.39/163.72 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , U72^#(tt(), M, N) -> 624.39/163.72 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.39/163.72 Weak DPs: 624.39/163.72 { activate^#(n__plus(X1, X2)) -> 624.39/163.72 c_5(activate^#(X1), activate^#(X2)) 624.39/163.72 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.72 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.72 , U51^#(tt(), M, N) -> 624.39/163.72 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(n^1)) 624.39/163.72 624.39/163.72 We estimate the number of application of {7} by applications of 624.39/163.72 Pre({7}) = {6}. Here rules are labeled as follows: 624.39/163.72 624.39/163.72 DPs: 624.39/163.72 { 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , 2: isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , 3: isNat^#(n__s(V1)) -> 624.39/163.72 c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.72 , 4: isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , 5: U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , 6: U71^#(tt(), M, N) -> 624.39/163.72 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , 7: U72^#(tt(), M, N) -> 624.39/163.72 c_13(activate^#(N), activate^#(M), activate^#(N)) 624.39/163.72 , 8: activate^#(n__plus(X1, X2)) -> 624.39/163.72 c_5(activate^#(X1), activate^#(X2)) 624.39/163.72 , 9: activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.72 , 10: activate^#(n__x(X1, X2)) -> 624.39/163.72 c_7(activate^#(X1), activate^#(X2)) 624.39/163.72 , 11: U51^#(tt(), M, N) -> 624.39/163.72 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , 12: U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) } 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(n^1)). 624.39/163.72 624.39/163.72 Strict DPs: 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , U71^#(tt(), M, N) -> 624.39/163.72 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) } 624.39/163.72 Weak DPs: 624.39/163.72 { activate^#(n__plus(X1, X2)) -> 624.39/163.72 c_5(activate^#(X1), activate^#(X2)) 624.39/163.72 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.72 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.72 , U51^#(tt(), M, N) -> 624.39/163.72 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.39/163.72 , U72^#(tt(), M, N) -> 624.39/163.72 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(n^1)) 624.39/163.72 624.39/163.72 The following weak DPs constitute a sub-graph of the DG that is 624.39/163.72 closed under successors. The DPs are removed. 624.39/163.72 624.39/163.72 { activate^#(n__plus(X1, X2)) -> 624.39/163.72 c_5(activate^#(X1), activate^#(X2)) 624.39/163.72 , activate^#(n__s(X)) -> c_6(activate^#(X)) 624.39/163.72 , activate^#(n__x(X1, X2)) -> c_7(activate^#(X1), activate^#(X2)) 624.39/163.72 , U52^#(tt(), M, N) -> c_11(activate^#(N), activate^#(M)) 624.39/163.72 , U72^#(tt(), M, N) -> 624.39/163.72 c_13(activate^#(N), activate^#(M), activate^#(N)) } 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(n^1)). 624.39/163.72 624.39/163.72 Strict DPs: 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , U71^#(tt(), M, N) -> 624.39/163.72 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) } 624.39/163.72 Weak DPs: 624.39/163.72 { U51^#(tt(), M, N) -> 624.39/163.72 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) } 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(n^1)) 624.39/163.72 624.39/163.72 Due to missing edges in the dependency-graph, the right-hand sides 624.39/163.72 of following rules could be simplified: 624.39/163.72 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1)), activate^#(V1)) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)), 624.39/163.72 activate^#(V1), 624.39/163.72 activate^#(V2)) 624.39/163.72 , U31^#(tt(), V2) -> c_8(isNat^#(activate(V2)), activate^#(V2)) 624.39/163.72 , U51^#(tt(), M, N) -> 624.39/163.72 c_10(U52^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) 624.39/163.72 , U71^#(tt(), M, N) -> 624.39/163.72 c_12(U72^#(isNat(activate(N)), activate(M), activate(N)), 624.39/163.72 isNat^#(activate(N)), 624.39/163.72 activate^#(N), 624.39/163.72 activate^#(M), 624.39/163.72 activate^#(N)) } 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(n^1)). 624.39/163.72 624.39/163.72 Strict DPs: 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.39/163.72 , U71^#(tt(), M, N) -> c_6(isNat^#(activate(N))) } 624.39/163.72 Weak DPs: { U51^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(n^1)) 624.39/163.72 624.39/163.72 We use the processor 'matrix interpretation of dimension 1' to 624.39/163.72 orient following rules strictly. 624.39/163.72 624.39/163.72 DPs: 624.39/163.72 { 2: isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , 3: isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.39/163.72 , 4: isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , 6: U71^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.39/163.72 , 7: U51^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.39/163.72 624.39/163.72 Sub-proof: 624.39/163.72 ---------- 624.39/163.72 The following argument positions are usable: 624.39/163.72 Uargs(c_1) = {1}, Uargs(c_2) = {1, 2}, Uargs(c_3) = {1}, 624.39/163.72 Uargs(c_4) = {1, 2}, Uargs(c_5) = {1}, Uargs(c_6) = {1}, 624.39/163.72 Uargs(c_7) = {1} 624.39/163.72 624.39/163.72 TcT has computed the following constructor-based matrix 624.39/163.72 interpretation satisfying not(EDA). 624.39/163.72 624.39/163.72 [U11](x1, x2) = [0] 624.39/163.72 624.39/163.72 [tt] = [0] 624.39/163.72 624.39/163.72 [U12](x1) = [0] 624.39/163.72 624.39/163.72 [isNat](x1) = [0] 624.39/163.72 624.39/163.72 [activate](x1) = [1] x1 + [0] 624.39/163.72 624.39/163.72 [U21](x1) = [0] 624.39/163.72 624.39/163.72 [U31](x1, x2) = [0] 624.39/163.72 624.39/163.72 [U32](x1) = [0] 624.39/163.72 624.39/163.72 [s](x1) = [1] x1 + [4] 624.39/163.72 624.39/163.72 [plus](x1, x2) = [1] x1 + [1] x2 + [4] 624.39/163.72 624.39/163.72 [0] = [0] 624.39/163.72 624.39/163.72 [x](x1, x2) = [1] x1 + [1] x2 + [4] 624.39/163.72 624.39/163.72 [n__0] = [0] 624.39/163.72 624.39/163.72 [n__plus](x1, x2) = [1] x1 + [1] x2 + [4] 624.39/163.72 624.39/163.72 [n__s](x1) = [1] x1 + [4] 624.39/163.72 624.39/163.72 [n__x](x1, x2) = [1] x1 + [1] x2 + [4] 624.39/163.72 624.39/163.72 [U11^#](x1, x2) = [1] x2 + [0] 624.39/163.72 624.39/163.72 [isNat^#](x1) = [1] x1 + [0] 624.39/163.72 624.39/163.72 [U31^#](x1, x2) = [1] x2 + [0] 624.39/163.72 624.39/163.72 [U51^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 624.39/163.72 624.39/163.72 [U71^#](x1, x2, x3) = [7] x1 + [7] x2 + [7] x3 + [7] 624.39/163.72 624.39/163.72 [c_1](x1) = [1] x1 + [0] 624.39/163.72 624.39/163.72 [c_2](x1, x2) = [1] x1 + [1] x2 + [3] 624.39/163.72 624.39/163.72 [c_3](x1) = [1] x1 + [1] 624.39/163.72 624.39/163.72 [c_4](x1, x2) = [1] x1 + [1] x2 + [3] 624.39/163.72 624.39/163.72 [c_5](x1) = [1] x1 + [0] 624.39/163.72 624.39/163.72 [c_6](x1) = [1] x1 + [3] 624.39/163.72 624.39/163.72 [c_7](x1) = [1] x1 + [3] 624.39/163.72 624.39/163.72 The order satisfies the following ordering constraints: 624.39/163.72 624.39/163.72 [U11(tt(), V2)] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [U12(isNat(activate(V2)))] 624.39/163.72 624.39/163.72 [U12(tt())] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [tt()] 624.39/163.72 624.39/163.72 [isNat(n__0())] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [tt()] 624.39/163.72 624.39/163.72 [isNat(n__plus(V1, V2))] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [U11(isNat(activate(V1)), activate(V2))] 624.39/163.72 624.39/163.72 [isNat(n__s(V1))] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [U21(isNat(activate(V1)))] 624.39/163.72 624.39/163.72 [isNat(n__x(V1, V2))] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [U31(isNat(activate(V1)), activate(V2))] 624.39/163.72 624.39/163.72 [activate(X)] = [1] X + [0] 624.39/163.72 >= [1] X + [0] 624.39/163.72 = [X] 624.39/163.72 624.39/163.72 [activate(n__0())] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [0()] 624.39/163.72 624.39/163.72 [activate(n__plus(X1, X2))] = [1] X1 + [1] X2 + [4] 624.39/163.72 >= [1] X1 + [1] X2 + [4] 624.39/163.72 = [plus(activate(X1), activate(X2))] 624.39/163.72 624.39/163.72 [activate(n__s(X))] = [1] X + [4] 624.39/163.72 >= [1] X + [4] 624.39/163.72 = [s(activate(X))] 624.39/163.72 624.39/163.72 [activate(n__x(X1, X2))] = [1] X1 + [1] X2 + [4] 624.39/163.72 >= [1] X1 + [1] X2 + [4] 624.39/163.72 = [x(activate(X1), activate(X2))] 624.39/163.72 624.39/163.72 [U21(tt())] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [tt()] 624.39/163.72 624.39/163.72 [U31(tt(), V2)] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [U32(isNat(activate(V2)))] 624.39/163.72 624.39/163.72 [U32(tt())] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [tt()] 624.39/163.72 624.39/163.72 [s(X)] = [1] X + [4] 624.39/163.72 >= [1] X + [4] 624.39/163.72 = [n__s(X)] 624.39/163.72 624.39/163.72 [plus(X1, X2)] = [1] X1 + [1] X2 + [4] 624.39/163.72 >= [1] X1 + [1] X2 + [4] 624.39/163.72 = [n__plus(X1, X2)] 624.39/163.72 624.39/163.72 [0()] = [0] 624.39/163.72 >= [0] 624.39/163.72 = [n__0()] 624.39/163.72 624.39/163.72 [x(X1, X2)] = [1] X1 + [1] X2 + [4] 624.39/163.72 >= [1] X1 + [1] X2 + [4] 624.39/163.72 = [n__x(X1, X2)] 624.39/163.72 624.39/163.72 [U11^#(tt(), V2)] = [1] V2 + [0] 624.39/163.72 >= [1] V2 + [0] 624.39/163.72 = [c_1(isNat^#(activate(V2)))] 624.39/163.72 624.39/163.72 [isNat^#(n__plus(V1, V2))] = [1] V2 + [1] V1 + [4] 624.39/163.72 > [1] V2 + [1] V1 + [3] 624.39/163.72 = [c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)))] 624.39/163.72 624.39/163.72 [isNat^#(n__s(V1))] = [1] V1 + [4] 624.39/163.72 > [1] V1 + [1] 624.39/163.72 = [c_3(isNat^#(activate(V1)))] 624.39/163.72 624.39/163.72 [isNat^#(n__x(V1, V2))] = [1] V2 + [1] V1 + [4] 624.39/163.72 > [1] V2 + [1] V1 + [3] 624.39/163.72 = [c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1)))] 624.39/163.72 624.39/163.72 [U31^#(tt(), V2)] = [1] V2 + [0] 624.39/163.72 >= [1] V2 + [0] 624.39/163.72 = [c_5(isNat^#(activate(V2)))] 624.39/163.72 624.39/163.72 [U51^#(tt(), M, N)] = [7] N + [7] M + [7] 624.39/163.72 > [1] N + [3] 624.39/163.72 = [c_7(isNat^#(activate(N)))] 624.39/163.72 624.39/163.72 [U71^#(tt(), M, N)] = [7] N + [7] M + [7] 624.39/163.72 > [1] N + [3] 624.39/163.72 = [c_6(isNat^#(activate(N)))] 624.39/163.72 624.39/163.72 624.39/163.72 We return to the main proof. Consider the set of all dependency 624.39/163.72 pairs 624.39/163.72 624.39/163.72 : 624.39/163.72 { 1: U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.39/163.72 , 2: isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , 3: isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.39/163.72 , 4: isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , 5: U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.39/163.72 , 6: U71^#(tt(), M, N) -> c_6(isNat^#(activate(N))) 624.39/163.72 , 7: U51^#(tt(), M, N) -> c_7(isNat^#(activate(N))) } 624.39/163.72 624.39/163.72 Processor 'matrix interpretation of dimension 1' induces the 624.39/163.72 complexity certificate YES(?,O(n^1)) on application of dependency 624.39/163.72 pairs {2,3,4,6,7}. These cover all (indirect) predecessors of 624.39/163.72 dependency pairs {1,2,3,4,5,6,7}, their number of application is 624.39/163.72 equally bounded. The dependency pairs are shifted into the weak 624.39/163.72 component. 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(1)). 624.39/163.72 624.39/163.72 Weak DPs: 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.39/163.72 , U51^#(tt(), M, N) -> c_7(isNat^#(activate(N))) 624.39/163.72 , U71^#(tt(), M, N) -> c_6(isNat^#(activate(N))) } 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(1)) 624.39/163.72 624.39/163.72 The following weak DPs constitute a sub-graph of the DG that is 624.39/163.72 closed under successors. The DPs are removed. 624.39/163.72 624.39/163.72 { U11^#(tt(), V2) -> c_1(isNat^#(activate(V2))) 624.39/163.72 , isNat^#(n__plus(V1, V2)) -> 624.39/163.72 c_2(U11^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__s(V1)) -> c_3(isNat^#(activate(V1))) 624.39/163.72 , isNat^#(n__x(V1, V2)) -> 624.39/163.72 c_4(U31^#(isNat(activate(V1)), activate(V2)), 624.39/163.72 isNat^#(activate(V1))) 624.39/163.72 , U31^#(tt(), V2) -> c_5(isNat^#(activate(V2))) 624.39/163.72 , U51^#(tt(), M, N) -> c_7(isNat^#(activate(N))) 624.39/163.72 , U71^#(tt(), M, N) -> c_6(isNat^#(activate(N))) } 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(1)). 624.39/163.72 624.39/163.72 Weak Trs: 624.39/163.72 { U11(tt(), V2) -> U12(isNat(activate(V2))) 624.39/163.72 , U12(tt()) -> tt() 624.39/163.72 , isNat(n__0()) -> tt() 624.39/163.72 , isNat(n__plus(V1, V2)) -> U11(isNat(activate(V1)), activate(V2)) 624.39/163.72 , isNat(n__s(V1)) -> U21(isNat(activate(V1))) 624.39/163.72 , isNat(n__x(V1, V2)) -> U31(isNat(activate(V1)), activate(V2)) 624.39/163.72 , activate(X) -> X 624.39/163.72 , activate(n__0()) -> 0() 624.39/163.72 , activate(n__plus(X1, X2)) -> plus(activate(X1), activate(X2)) 624.39/163.72 , activate(n__s(X)) -> s(activate(X)) 624.39/163.72 , activate(n__x(X1, X2)) -> x(activate(X1), activate(X2)) 624.39/163.72 , U21(tt()) -> tt() 624.39/163.72 , U31(tt(), V2) -> U32(isNat(activate(V2))) 624.39/163.72 , U32(tt()) -> tt() 624.39/163.72 , s(X) -> n__s(X) 624.39/163.72 , plus(X1, X2) -> n__plus(X1, X2) 624.39/163.72 , 0() -> n__0() 624.39/163.72 , x(X1, X2) -> n__x(X1, X2) } 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(1)) 624.39/163.72 624.39/163.72 No rule is usable, rules are removed from the input problem. 624.39/163.72 624.39/163.72 We are left with following problem, upon which TcT provides the 624.39/163.72 certificate YES(O(1),O(1)). 624.39/163.72 624.39/163.72 Rules: Empty 624.39/163.72 Obligation: 624.39/163.72 innermost runtime complexity 624.39/163.72 Answer: 624.39/163.72 YES(O(1),O(1)) 624.39/163.72 624.39/163.72 Empty rules are trivially bounded 624.39/163.72 624.39/163.72 624.39/163.72 Hurray, we answered YES(O(1),O(n^2)) 624.39/163.74 EOF