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