YES(O(1),O(n^3)) 180.72/60.03 YES(O(1),O(n^3)) 180.72/60.03 180.72/60.03 We are left with following problem, upon which TcT provides the 180.72/60.03 certificate YES(O(1),O(n^3)). 180.72/60.03 180.72/60.03 Strict Trs: 180.72/60.03 { a__f(X) -> f(X) 180.72/60.03 , a__f(0()) -> cons(0(), f(s(0()))) 180.72/60.03 , a__f(s(0())) -> a__f(a__p(s(0()))) 180.72/60.03 , a__p(X) -> p(X) 180.72/60.03 , a__p(s(0())) -> 0() 180.72/60.03 , mark(0()) -> 0() 180.72/60.03 , mark(cons(X1, X2)) -> cons(mark(X1), X2) 180.72/60.03 , mark(f(X)) -> a__f(mark(X)) 180.72/60.03 , mark(s(X)) -> s(mark(X)) 180.72/60.03 , mark(p(X)) -> a__p(mark(X)) } 180.72/60.03 Obligation: 180.72/60.03 derivational complexity 180.72/60.03 Answer: 180.72/60.03 YES(O(1),O(n^3)) 180.72/60.03 180.72/60.03 We use the processor 'matrix interpretation of dimension 3' to 180.72/60.03 orient following rules strictly. 180.72/60.03 180.72/60.03 Trs: 180.72/60.03 { a__f(X) -> f(X) 180.72/60.03 , a__f(0()) -> cons(0(), f(s(0()))) 180.72/60.03 , a__f(s(0())) -> a__f(a__p(s(0()))) 180.72/60.03 , a__p(X) -> p(X) 180.72/60.03 , a__p(s(0())) -> 0() 180.72/60.03 , mark(0()) -> 0() 180.72/60.03 , mark(cons(X1, X2)) -> cons(mark(X1), X2) 180.72/60.03 , mark(f(X)) -> a__f(mark(X)) 180.72/60.03 , mark(s(X)) -> s(mark(X)) 180.72/60.03 , mark(p(X)) -> a__p(mark(X)) } 180.72/60.03 180.72/60.03 The induced complexity on above rules (modulo remaining rules) is 180.72/60.03 YES(?,O(n^3)) . These rules are removed from the problem. Note that 180.72/60.03 none of the weakly oriented rules is size-increasing. The overall 180.72/60.03 complexity is obtained by composition . 180.72/60.03 180.72/60.03 Sub-proof: 180.72/60.03 ---------- 180.72/60.03 TcT has computed the following triangular matrix interpretation. 180.72/60.03 180.72/60.03 [1 0 1] [1] 180.72/60.03 [a__f](x1) = [0 1 1] x1 + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 180.72/60.03 [0] 180.72/60.03 [0] = [1] 180.72/60.03 [0] 180.72/60.03 180.72/60.03 [1 0 2] [1 0 0] [0] 180.72/60.03 [cons](x1, x2) = [0 1 2] x1 + [0 0 0] x2 + [1] 180.72/60.03 [0 0 0] [0 0 0] [0] 180.72/60.03 180.72/60.03 [1 0 0] [0] 180.72/60.03 [f](x1) = [0 1 1] x1 + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 180.72/60.03 [1 0 0] [0] 180.72/60.03 [s](x1) = [0 1 0] x1 + [2] 180.72/60.03 [0 0 0] [2] 180.72/60.03 180.72/60.03 [1 0 0] [1] 180.72/60.03 [a__p](x1) = [0 1 0] x1 + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 180.72/60.03 [1 1 0] [0] 180.72/60.03 [mark](x1) = [0 1 0] x1 + [0] 180.72/60.03 [0 0 1] [0] 180.72/60.03 180.72/60.03 [1 0 0] [0] 180.72/60.03 [p](x1) = [0 1 0] x1 + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 180.72/60.03 The order satisfies the following ordering constraints: 180.72/60.03 180.72/60.03 [a__f(X)] = [1 0 1] [1] 180.72/60.03 [0 1 1] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 > [1 0 0] [0] 180.72/60.03 [0 1 1] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 = [f(X)] 180.72/60.03 180.72/60.03 [a__f(0())] = [1] 180.72/60.03 [3] 180.72/60.03 [0] 180.72/60.03 > [0] 180.72/60.03 [2] 180.72/60.03 [0] 180.72/60.03 = [cons(0(), f(s(0())))] 180.72/60.03 180.72/60.03 [a__f(s(0()))] = [3] 180.72/60.03 [7] 180.72/60.03 [0] 180.72/60.03 > [2] 180.72/60.03 [7] 180.72/60.03 [0] 180.72/60.03 = [a__f(a__p(s(0())))] 180.72/60.03 180.72/60.03 [a__p(X)] = [1 0 0] [1] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 > [1 0 0] [0] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 = [p(X)] 180.72/60.03 180.72/60.03 [a__p(s(0()))] = [1] 180.72/60.03 [5] 180.72/60.03 [0] 180.72/60.03 > [0] 180.72/60.03 [1] 180.72/60.03 [0] 180.72/60.03 = [0()] 180.72/60.03 180.72/60.03 [mark(0())] = [1] 180.72/60.03 [1] 180.72/60.03 [0] 180.72/60.03 > [0] 180.72/60.03 [1] 180.72/60.03 [0] 180.72/60.03 = [0()] 180.72/60.03 180.72/60.03 [mark(cons(X1, X2))] = [1 1 4] [1 0 0] [1] 180.72/60.03 [0 1 2] X1 + [0 0 0] X2 + [1] 180.72/60.03 [0 0 0] [0 0 0] [0] 180.72/60.03 > [1 1 2] [1 0 0] [0] 180.72/60.03 [0 1 2] X1 + [0 0 0] X2 + [1] 180.72/60.03 [0 0 0] [0 0 0] [0] 180.72/60.03 = [cons(mark(X1), X2)] 180.72/60.03 180.72/60.03 [mark(f(X))] = [1 1 1] [2] 180.72/60.03 [0 1 1] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 > [1 1 1] [1] 180.72/60.03 [0 1 1] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 = [a__f(mark(X))] 180.72/60.03 180.72/60.03 [mark(s(X))] = [1 1 0] [2] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [2] 180.72/60.03 > [1 1 0] [0] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [2] 180.72/60.03 = [s(mark(X))] 180.72/60.03 180.72/60.03 [mark(p(X))] = [1 1 0] [2] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 > [1 1 0] [1] 180.72/60.03 [0 1 0] X + [2] 180.72/60.03 [0 0 0] [0] 180.72/60.03 = [a__p(mark(X))] 180.72/60.03 180.72/60.03 180.72/60.03 We return to the main proof. 180.72/60.03 180.72/60.03 We are left with following problem, upon which TcT provides the 180.72/60.03 certificate YES(O(1),O(1)). 180.72/60.03 180.72/60.03 Rules: Empty 180.72/60.03 Obligation: 180.72/60.03 derivational complexity 180.72/60.03 Answer: 180.72/60.03 YES(O(1),O(1)) 180.72/60.03 180.72/60.03 Empty rules are trivially bounded 180.72/60.03 180.72/60.03 Hurray, we answered YES(O(1),O(n^3)) 180.72/60.06 EOF