YES(O(1),O(1)) We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) , g(c(x)) -> x , g(c(0())) -> g(d(1())) , g(c(1())) -> g(d(0())) , g(d(x)) -> x } Obligation: runtime complexity Answer: YES(O(1),O(1)) We add the following weak dependency pairs: Strict DPs: { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) , g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } and mark the set of starting terms. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict DPs: { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) , g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Strict Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) , g(c(x)) -> x , g(c(0())) -> g(d(1())) , g(c(1())) -> g(d(0())) , g(d(x)) -> x } Obligation: runtime complexity Answer: YES(O(1),O(1)) We replace rewrite rules by usable rules: Strict Usable Rules: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict DPs: { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) , g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Strict Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) } Obligation: runtime complexity Answer: YES(O(1),O(1)) The weightgap principle applies (using the following constant growth matrix-interpretation) The following argument positions are usable: Uargs(c_4) = {1}, Uargs(c_5) = {1} TcT has computed the following constructor-restricted matrix interpretation. [f](x1) = [0 2] x1 + [0] [0 2] [1] [c](x1) = [0] [0] [d](x1) = [0] [0] [0] = [0] [0] [1] = [0] [0] [f^#](x1) = [2] [0] [c_1](x1) = [2] [2] [c_2](x1) = [2] [2] [g^#](x1) = [0] [0] [c_3](x1) = [0 0] x1 + [1] [1 1] [1] [c_4](x1) = [1 0] x1 + [2] [0 1] [2] [c_5](x1) = [1 0] x1 + [2] [0 1] [2] [c_6](x1) = [0 0] x1 + [1] [1 0] [0] The following symbols are considered usable {f, f^#, g^#} The order satisfies the following ordering constraints: [f(f(x))] = [0 4] x + [2] [0 4] [3] > [0] [1] = [f(c(f(x)))] [f(f(x))] = [0 4] x + [2] [0 4] [3] > [0] [1] = [f(d(f(x)))] [f^#(f(x))] = [2] [0] ? [2] [2] = [c_1(f^#(c(f(x))))] [f^#(f(x))] = [2] [0] ? [2] [2] = [c_2(f^#(d(f(x))))] [g^#(c(x))] = [0] [0] ? [0 0] x + [1] [1 1] [1] = [c_3(x)] [g^#(c(0()))] = [0] [0] ? [2] [2] = [c_4(g^#(d(1())))] [g^#(c(1()))] = [0] [0] ? [2] [2] = [c_5(g^#(d(0())))] [g^#(d(x))] = [0] [0] ? [0 0] x + [1] [1 0] [0] = [c_6(x)] Further, it can be verified that all rules not oriented are covered by the weightgap condition. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict DPs: { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) , g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Weak Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) } Obligation: runtime complexity Answer: YES(O(1),O(1)) We estimate the number of application of {1,2} by applications of Pre({1,2}) = {3,6}. Here rules are labeled as follows: DPs: { 1: f^#(f(x)) -> c_1(f^#(c(f(x)))) , 2: f^#(f(x)) -> c_2(f^#(d(f(x)))) , 3: g^#(c(x)) -> c_3(x) , 4: g^#(c(0())) -> c_4(g^#(d(1()))) , 5: g^#(c(1())) -> c_5(g^#(d(0()))) , 6: g^#(d(x)) -> c_6(x) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict DPs: { g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Weak DPs: { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) } Weak Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) } Obligation: 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. { f^#(f(x)) -> c_1(f^#(c(f(x)))) , f^#(f(x)) -> c_2(f^#(d(f(x)))) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Strict DPs: { g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Weak Trs: { f(f(x)) -> f(c(f(x))) , f(f(x)) -> f(d(f(x))) } Obligation: 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)). Strict DPs: { g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Obligation: runtime complexity Answer: YES(O(1),O(1)) We use the processor 'matrix interpretation of dimension 1' to orient following rules strictly. DPs: { 1: g^#(c(x)) -> c_3(x) , 4: g^#(d(x)) -> c_6(x) } Sub-proof: ---------- The following argument positions are usable: Uargs(c_4) = {1}, Uargs(c_5) = {1} TcT has computed the following constructor-restricted matrix interpretation. Note that the diagonal of the component-wise maxima of interpretation-entries (of constructors) contains no more than 0 non-zero entries. [f](x1) = [0] [c](x1) = [7] [d](x1) = [0] [g](x1) = [0] [0] = [7] [1] = [7] [f^#](x1) = [0] [c_1](x1) = [0] [c_2](x1) = [0] [g^#](x1) = [1] [c_3](x1) = [0] [c_4](x1) = [1] x1 + [0] [c_5](x1) = [1] x1 + [0] [c_6](x1) = [0] The following symbols are considered usable {g^#} The order satisfies the following ordering constraints: [g^#(c(x))] = [1] > [0] = [c_3(x)] [g^#(c(0()))] = [1] >= [1] = [c_4(g^#(d(1())))] [g^#(c(1()))] = [1] >= [1] = [c_5(g^#(d(0())))] [g^#(d(x))] = [1] > [0] = [c_6(x)] We return to the main proof. Consider the set of all dependency pairs : { 1: g^#(c(x)) -> c_3(x) , 2: g^#(c(0())) -> c_4(g^#(d(1()))) , 3: g^#(c(1())) -> c_5(g^#(d(0()))) , 4: g^#(d(x)) -> c_6(x) } Processor 'matrix interpretation of dimension 1' induces the complexity certificate YES(?,O(1)) on application of dependency pairs {1,4}. These cover all (indirect) predecessors of dependency pairs {1,2,3,4}, their number of application is equally bounded. The dependency pairs are shifted into the weak component. We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Weak DPs: { g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } Obligation: 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. { g^#(c(x)) -> c_3(x) , g^#(c(0())) -> c_4(g^#(d(1()))) , g^#(c(1())) -> c_5(g^#(d(0()))) , g^#(d(x)) -> c_6(x) } We are left with following problem, upon which TcT provides the certificate YES(O(1),O(1)). Rules: Empty Obligation: runtime complexity Answer: YES(O(1),O(1)) Empty rules are trivially bounded Hurray, we answered YES(O(1),O(1))