YES(O(1),O(n^3)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y , second(C(x, y)) -> y , isZero(C(x, y)) -> False() , isZero(Z()) -> True() , goal(xs, ys) -> mul0(xs, ys) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) We add the following dependency tuples: Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , mul0^#(Z(), y) -> c_2() , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , add0^#(Z(), y) -> c_4() , second^#(C(x, y)) -> c_5() , isZero^#(C(x, y)) -> c_6() , isZero^#(Z()) -> c_7() , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , mul0^#(Z(), y) -> c_2() , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , add0^#(Z(), y) -> c_4() , second^#(C(x, y)) -> c_5() , isZero^#(C(x, y)) -> c_6() , isZero^#(Z()) -> c_7() , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y , second(C(x, y)) -> y , isZero(C(x, y)) -> False() , isZero(Z()) -> True() , goal(xs, ys) -> mul0(xs, ys) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) We estimate the number of application of {2,4,5,6,7} by applications of Pre({2,4,5,6,7}) = {1,3,8}. Here rules are labeled as follows: DPs: { 1: mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , 2: mul0^#(Z(), y) -> c_2() , 3: add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , 4: add0^#(Z(), y) -> c_4() , 5: second^#(C(x, y)) -> c_5() , 6: isZero^#(C(x, y)) -> c_6() , 7: isZero^#(Z()) -> c_7() , 8: goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } Weak DPs: { mul0^#(Z(), y) -> c_2() , add0^#(Z(), y) -> c_4() , second^#(C(x, y)) -> c_5() , isZero^#(C(x, y)) -> c_6() , isZero^#(Z()) -> c_7() } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y , second(C(x, y)) -> y , isZero(C(x, y)) -> False() , isZero(Z()) -> True() , goal(xs, ys) -> mul0(xs, ys) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { mul0^#(Z(), y) -> c_2() , add0^#(Z(), y) -> c_4() , second^#(C(x, y)) -> c_5() , isZero^#(C(x, y)) -> c_6() , isZero^#(Z()) -> c_7() } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y , second(C(x, y)) -> y , isZero(C(x, y)) -> False() , isZero(Z()) -> True() , goal(xs, ys) -> mul0(xs, ys) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) Consider the dependency graph 1: mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) -->_1 add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) :2 -->_2 mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) :1 2: add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) -->_1 add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) :2 3: goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) -->_1 mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) :1 Following roots of the dependency graph are removed, as the considered set of starting terms is closed under reduction with respect to these rules (modulo compound contexts). { goal^#(xs, ys) -> c_8(mul0^#(xs, ys)) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y , second(C(x, y)) -> y , isZero(C(x, y)) -> False() , isZero(Z()) -> True() , goal(xs, ys) -> mul0(xs, ys) } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) We replace rewrite rules by usable rules: Weak Usable Rules: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^3)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^3)) We decompose the input problem according to the dependency graph into the upper component { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) } and lower component { add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } Further, following extension rules are added to the lower component. { mul0^#(C(x, y), y') -> mul0^#(y, y') , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') } TcT solves the upper component with certificate YES(O(1),O(n^1)). Sub-proof: ---------- We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^1)). Strict DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^1)) We use the processor 'Small Polynomial Path Order (PS,1-bounded)' to orient following rules strictly. DPs: { 1: mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) } Sub-proof: ---------- The input was oriented with the instance of 'Small Polynomial Path Order (PS,1-bounded)' as induced by the safe mapping safe(mul0) = {}, safe(C) = {1, 2}, safe(add0) = {}, safe(Z) = {}, safe(S) = {}, safe(second) = {}, safe(isZero) = {}, safe(False) = {}, safe(True) = {}, safe(goal) = {}, safe(mul0^#) = {2}, safe(c_1) = {}, safe(add0^#) = {}, safe(c_2) = {}, safe(c_3) = {}, safe(c_4) = {}, safe(second^#) = {}, safe(c_5) = {}, safe(isZero^#) = {}, safe(c_6) = {}, safe(c_7) = {}, safe(goal^#) = {}, safe(c_8) = {} and precedence mul0^# > add0, mul0 ~ add0 . Following symbols are considered recursive: {mul0^#} The recursion depth is 1. Further, following argument filtering is employed: pi(mul0) = 2, pi(C) = [2], pi(add0) = 2, pi(Z) = [], pi(S) = [], pi(second) = [], pi(isZero) = [], pi(False) = [], pi(True) = [], pi(goal) = [], pi(mul0^#) = [1], pi(c_1) = [1, 2], pi(add0^#) = [], pi(c_2) = [], pi(c_3) = [], pi(c_4) = [], pi(second^#) = [], pi(c_5) = [], pi(isZero^#) = [], pi(c_6) = [], pi(c_7) = [], pi(goal^#) = [], pi(c_8) = [] Usable defined function symbols are a subset of: {mul0^#, add0^#, second^#, isZero^#, goal^#} For your convenience, here are the satisfied ordering constraints: pi(mul0^#(C(x, y), y')) = mul0^#(C(; y);) > c_1(add0^#(), mul0^#(y;);) = pi(c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y'))) The strictly oriented rules are moved into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { mul0^#(C(x, y), y') -> c_1(add0^#(mul0(y, y'), y'), mul0^#(y, y')) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded We return to the main proof. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(n^2)). Strict DPs: { add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } Weak DPs: { mul0^#(C(x, y), y') -> mul0^#(y, y') , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(n^2)) We use the processor 'polynomial interpretation' to orient following rules strictly. DPs: { 1: add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) , 3: mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') } Sub-proof: ---------- The following argument positions are considered usable: Uargs(c_3) = {1} TcT has computed the following constructor-restricted polynomial interpretation. [mul0](x1, x2) = x1*x2 [C](x1, x2) = 1 + x2 [add0](x1, x2) = x1 + x2 [Z]() = 0 [S]() = 0 [second](x1) = 3*x1 + 3*x1^2 [isZero](x1) = 3*x1 + 3*x1^2 [False]() = 0 [True]() = 0 [goal](x1, x2) = 3*x1 + 3*x1*x2 + 3*x1^2 + 3*x2 + 3*x2^2 [mul0^#](x1, x2) = 3 + x1*x2 + 2*x2 + 3*x2^2 [c_1](x1, x2) = 3*x1 + 3*x1*x2 + 3*x1^2 + 3*x2 + 3*x2^2 [add0^#](x1, x2) = x1 [c_2]() = 0 [c_3](x1) = x1 [c_4]() = 0 [second^#](x1) = 3*x1 + 3*x1^2 [c_5]() = 0 [isZero^#](x1) = 3*x1 + 3*x1^2 [c_6]() = 0 [c_7]() = 0 [goal^#](x1, x2) = 3*x1 + 3*x1*x2 + 3*x1^2 + 3*x2 + 3*x2^2 [c_8](x1) = 3*x1 + 3*x1^2 The following symbols are considered usable {mul0, add0, mul0^#, add0^#, second^#, isZero^#, goal^#} This order satisfies the following ordering constraints. [mul0(C(x, y), y')] = y' + y*y' >= y*y' + y' = [add0(mul0(y, y'), y')] [mul0(Z(), y)] = >= = [Z()] [add0(C(x, y), y')] = 1 + y + y' >= y + 1 + y' = [add0(y, C(S(), y'))] [add0(Z(), y)] = y >= y = [y] [mul0^#(C(x, y), y')] = 3 + 3*y' + y*y' + 3*y'^2 >= 3 + y*y' + 2*y' + 3*y'^2 = [mul0^#(y, y')] [mul0^#(C(x, y), y')] = 3 + 3*y' + y*y' + 3*y'^2 > y*y' = [add0^#(mul0(y, y'), y')] [add0^#(C(x, y), y')] = 1 + y > y = [c_3(add0^#(y, C(S(), y')))] The strictly oriented rules are moved into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { mul0^#(C(x, y), y') -> mul0^#(y, y') , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) The following weak DPs constitute a sub-graph of the DG that is closed under successors. The DPs are removed. { mul0^#(C(x, y), y') -> mul0^#(y, y') , mul0^#(C(x, y), y') -> add0^#(mul0(y, y'), y') , add0^#(C(x, y), y') -> c_3(add0^#(y, C(S(), y'))) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak Trs: { mul0(C(x, y), y') -> add0(mul0(y, y'), y') , mul0(Z(), y) -> Z() , add0(C(x, y), y') -> add0(y, C(S(), y')) , add0(Z(), y) -> y } Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) No rule is usable, rules are removed from the input problem. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: innermost runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(n^3))