YES(O(1),O(n^2)) 157.01/60.03 YES(O(1),O(n^2)) 157.01/60.03 157.01/60.03 We are left with following problem, upon which TcT provides the 157.01/60.03 certificate YES(O(1),O(n^2)). 157.01/60.03 157.01/60.03 Strict Trs: 157.01/60.03 { app(app(plus(), app(s(), x)), y) -> 157.01/60.03 app(s(), app(app(plus(), x), y)) 157.01/60.03 , app(id(), x) -> x 157.01/60.03 , app(plus(), 0()) -> id() } 157.01/60.03 Obligation: 157.01/60.03 derivational complexity 157.01/60.03 Answer: 157.01/60.03 YES(O(1),O(n^2)) 157.01/60.03 157.01/60.03 We uncurry the input using the following uncurry rules. 157.01/60.03 157.01/60.03 { app(id(), x_1) -> id_1(x_1) 157.01/60.03 , app(plus(), x_1) -> plus_1(x_1) 157.01/60.03 , app(plus_1(x_1), x_2) -> plus_2(x_1, x_2) 157.01/60.03 , app(s(), x_1) -> s_1(x_1) } 157.01/60.03 157.01/60.03 We are left with following problem, upon which TcT provides the 157.01/60.03 certificate YES(O(1),O(n^2)). 157.01/60.03 157.01/60.03 Strict Trs: 157.01/60.03 { plus_2(s_1(x), y) -> s_1(plus_2(x, y)) 157.01/60.03 , plus_2(0(), x_1) -> id_1(x_1) 157.01/60.03 , id_1(x) -> x } 157.01/60.03 Weak Trs: 157.01/60.03 { app(id(), x_1) -> id_1(x_1) 157.01/60.03 , app(plus(), x_1) -> plus_1(x_1) 157.01/60.03 , app(plus_1(x_1), x_2) -> plus_2(x_1, x_2) 157.01/60.03 , app(s(), x_1) -> s_1(x_1) } 157.01/60.03 Obligation: 157.01/60.03 derivational complexity 157.01/60.03 Answer: 157.01/60.03 YES(O(1),O(n^2)) 157.01/60.03 157.01/60.03 The weightgap principle applies (using the following nonconstant 157.01/60.03 growth matrix-interpretation) 157.01/60.03 157.01/60.03 TcT has computed the following triangular matrix interpretation. 157.01/60.03 Note that the diagonal of the component-wise maxima of 157.01/60.03 interpretation-entries contains no more than 1 non-zero entries. 157.01/60.03 157.01/60.03 [app](x1, x2) = [1] x1 + [1] x2 + [2] 157.01/60.03 157.01/60.03 [plus_2](x1, x2) = [1] x1 + [1] x2 + [2] 157.01/60.03 157.01/60.03 [s_1](x1) = [1] x1 + [2] 157.01/60.03 157.01/60.03 [0] = [2] 157.01/60.03 157.01/60.03 [id_1](x1) = [1] x1 + [2] 157.01/60.03 157.01/60.03 [id] = [1] 157.01/60.03 157.01/60.03 [plus] = [1] 157.01/60.03 157.01/60.03 [plus_1](x1) = [1] x1 + [2] 157.01/60.03 157.01/60.03 [s] = [1] 157.01/60.03 157.01/60.03 The order satisfies the following ordering constraints: 157.01/60.03 157.01/60.03 [app(id(), x_1)] = [1] x_1 + [3] 157.01/60.03 > [1] x_1 + [2] 157.01/60.03 = [id_1(x_1)] 157.01/60.03 157.01/60.03 [app(plus(), x_1)] = [1] x_1 + [3] 157.01/60.03 > [1] x_1 + [2] 157.01/60.03 = [plus_1(x_1)] 157.01/60.03 157.01/60.03 [app(plus_1(x_1), x_2)] = [1] x_1 + [1] x_2 + [4] 157.01/60.03 > [1] x_1 + [1] x_2 + [2] 157.01/60.03 = [plus_2(x_1, x_2)] 157.01/60.03 157.01/60.03 [app(s(), x_1)] = [1] x_1 + [3] 157.01/60.03 > [1] x_1 + [2] 157.01/60.03 = [s_1(x_1)] 157.01/60.03 157.01/60.03 [plus_2(s_1(x), y)] = [1] x + [1] y + [4] 157.01/60.03 >= [1] x + [1] y + [4] 157.01/60.03 = [s_1(plus_2(x, y))] 157.01/60.03 157.01/60.03 [plus_2(0(), x_1)] = [1] x_1 + [4] 157.01/60.03 > [1] x_1 + [2] 157.01/60.03 = [id_1(x_1)] 157.01/60.03 157.01/60.03 [id_1(x)] = [1] x + [2] 157.01/60.03 > [1] x + [0] 157.01/60.03 = [x] 157.01/60.03 157.01/60.03 157.01/60.03 Further, it can be verified that all rules not oriented are covered by the weightgap condition. 157.01/60.03 157.01/60.03 We are left with following problem, upon which TcT provides the 157.01/60.03 certificate YES(O(1),O(n^2)). 157.01/60.03 157.01/60.03 Strict Trs: { plus_2(s_1(x), y) -> s_1(plus_2(x, y)) } 157.01/60.03 Weak Trs: 157.01/60.03 { app(id(), x_1) -> id_1(x_1) 157.01/60.03 , app(plus(), x_1) -> plus_1(x_1) 157.01/60.03 , app(plus_1(x_1), x_2) -> plus_2(x_1, x_2) 157.01/60.03 , app(s(), x_1) -> s_1(x_1) 157.01/60.03 , plus_2(0(), x_1) -> id_1(x_1) 157.01/60.03 , id_1(x) -> x } 157.01/60.03 Obligation: 157.01/60.03 derivational complexity 157.01/60.03 Answer: 157.01/60.03 YES(O(1),O(n^2)) 157.01/60.03 157.01/60.03 We use the processor 'matrix interpretation of dimension 2' to 157.01/60.03 orient following rules strictly. 157.01/60.03 157.01/60.03 Trs: { plus_2(s_1(x), y) -> s_1(plus_2(x, y)) } 157.01/60.03 157.01/60.03 The induced complexity on above rules (modulo remaining rules) is 157.01/60.03 YES(?,O(n^2)) . These rules are moved into the corresponding weak 157.01/60.03 component(s). 157.01/60.03 157.01/60.03 Sub-proof: 157.01/60.03 ---------- 157.01/60.03 TcT has computed the following triangular matrix interpretation. 157.01/60.03 157.01/60.03 [app](x1, x2) = [1 0] x1 + [1 2] x2 + [0] 157.01/60.03 [0 1] [0 1] [1] 157.01/60.03 157.01/60.03 [plus_2](x1, x2) = [1 2] x1 + [1 1] x2 + [0] 157.01/60.03 [0 1] [0 1] [0] 157.01/60.03 157.01/60.03 [s_1](x1) = [1 0] x1 + [0] 157.01/60.03 [0 1] [1] 157.01/60.03 157.01/60.03 [0] = [1] 157.01/60.03 [1] 157.01/60.03 157.01/60.03 [id_1](x1) = [1 1] x1 + [1] 157.01/60.03 [0 1] [1] 157.01/60.03 157.01/60.03 [id] = [2] 157.01/60.03 [1] 157.01/60.03 157.01/60.03 [plus] = [0] 157.01/60.03 [0] 157.01/60.03 157.01/60.03 [plus_1](x1) = [1 2] x1 + [0] 157.01/60.03 [0 1] [0] 157.01/60.03 157.01/60.03 [s] = [0] 157.01/60.03 [0] 157.01/60.03 157.01/60.03 The order satisfies the following ordering constraints: 157.01/60.03 157.01/60.03 [app(id(), x_1)] = [1 2] x_1 + [2] 157.01/60.03 [0 1] [2] 157.01/60.03 > [1 1] x_1 + [1] 157.01/60.03 [0 1] [1] 157.01/60.03 = [id_1(x_1)] 157.01/60.03 157.01/60.03 [app(plus(), x_1)] = [1 2] x_1 + [0] 157.01/60.03 [0 1] [1] 157.01/60.03 >= [1 2] x_1 + [0] 157.01/60.03 [0 1] [0] 157.01/60.03 = [plus_1(x_1)] 157.01/60.03 157.01/60.03 [app(plus_1(x_1), x_2)] = [1 2] x_1 + [1 2] x_2 + [0] 157.01/60.03 [0 1] [0 1] [1] 157.01/60.03 >= [1 2] x_1 + [1 1] x_2 + [0] 157.01/60.03 [0 1] [0 1] [0] 157.01/60.03 = [plus_2(x_1, x_2)] 157.01/60.03 157.01/60.03 [app(s(), x_1)] = [1 2] x_1 + [0] 157.01/60.03 [0 1] [1] 157.01/60.03 >= [1 0] x_1 + [0] 157.01/60.03 [0 1] [1] 157.01/60.03 = [s_1(x_1)] 157.01/60.03 157.01/60.03 [plus_2(s_1(x), y)] = [1 2] x + [1 1] y + [2] 157.01/60.03 [0 1] [0 1] [1] 157.01/60.03 > [1 2] x + [1 1] y + [0] 157.01/60.03 [0 1] [0 1] [1] 157.01/60.03 = [s_1(plus_2(x, y))] 157.01/60.03 157.01/60.03 [plus_2(0(), x_1)] = [1 1] x_1 + [3] 157.01/60.03 [0 1] [1] 157.01/60.03 > [1 1] x_1 + [1] 157.01/60.03 [0 1] [1] 157.01/60.03 = [id_1(x_1)] 157.01/60.03 157.01/60.03 [id_1(x)] = [1 1] x + [1] 157.01/60.03 [0 1] [1] 157.01/60.03 > [1 0] x + [0] 157.01/60.03 [0 1] [0] 157.01/60.03 = [x] 157.01/60.03 157.01/60.03 157.01/60.03 We return to the main proof. 157.01/60.03 157.01/60.03 We are left with following problem, upon which TcT provides the 157.01/60.03 certificate YES(O(1),O(1)). 157.01/60.03 157.01/60.03 Weak Trs: 157.01/60.03 { app(id(), x_1) -> id_1(x_1) 157.01/60.03 , app(plus(), x_1) -> plus_1(x_1) 157.01/60.03 , app(plus_1(x_1), x_2) -> plus_2(x_1, x_2) 157.01/60.03 , app(s(), x_1) -> s_1(x_1) 157.01/60.03 , plus_2(s_1(x), y) -> s_1(plus_2(x, y)) 157.01/60.03 , plus_2(0(), x_1) -> id_1(x_1) 157.01/60.03 , id_1(x) -> x } 157.01/60.03 Obligation: 157.01/60.03 derivational complexity 157.01/60.03 Answer: 157.01/60.03 YES(O(1),O(1)) 157.01/60.03 157.01/60.03 Empty rules are trivially bounded 157.01/60.03 157.01/60.03 Hurray, we answered YES(O(1),O(n^2)) 157.01/60.04 EOF