WORST_CASE(Omega(n^1),O(n^2)) proof of /export/starexec/sandbox/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 254 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 94 ms] (12) CdtProblem (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 57 ms] (14) CdtProblem (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 45 ms] (16) CdtProblem (17) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 116 ms] (18) CdtProblem (19) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (20) BOUNDS(1, 1) (21) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxRelTRS (23) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (24) typed CpxTrs (25) OrderProof [LOWER BOUND(ID), 0 ms] (26) typed CpxTrs (27) RewriteLemmaProof [LOWER BOUND(ID), 2118 ms] (28) BEST (29) proven lower bound (30) LowerBoundPropagationProof [FINISHED, 0 ms] (31) BOUNDS(n^1, INF) (32) typed CpxTrs (33) RewriteLemmaProof [LOWER BOUND(ID), 107 ms] (34) typed CpxTrs (35) RewriteLemmaProof [LOWER BOUND(ID), 2265 ms] (36) typed CpxTrs (37) RewriteLemmaProof [LOWER BOUND(ID), 17 ms] (38) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) The (relative) TRS S consists of the following rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) double(0) -> 0 double(s(z0)) -> s(s(double(z0))) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) The (relative) TRS S consists of the following rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) double(0) -> 0 double(s(z0)) -> s(s(double(z0))) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) double(0) -> 0 double(s(z0)) -> s(s(double(z0))) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) Tuples: SQR'(0) -> c9 SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(0) -> c12 DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, 0) -> c14 +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(0) -> c16 SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c18(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c20(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) DOUBLE''(0) -> c21 DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, 0) -> c23 +'''(z0, s(z1)) -> c24(+'''(z0, z1)) S tuples: SQR''(0) -> c16 SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c18(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c20(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) DOUBLE''(0) -> c21 DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, 0) -> c23 +'''(z0, s(z1)) -> c24(+'''(z0, z1)) K tuples:none Defined Rule Symbols: SQR_1, DOUBLE_1, +'_2, sqr_1, double_1, +_2 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c9, c10_3, c11_3, c12, c13_1, c14, c15_1, c16, c17_4, c18_4, c19_4, c20_4, c21, c22_1, c23, c24_1 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing nodes: DOUBLE''(0) -> c21 SQR'(0) -> c9 SQR''(0) -> c16 +''(z0, 0) -> c14 +'''(z0, 0) -> c23 DOUBLE'(0) -> c12 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) double(0) -> 0 double(s(z0)) -> s(s(double(z0))) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c18(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c20(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) S tuples: SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c18(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c20(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), DOUBLE''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) K tuples:none Defined Rule Symbols: SQR_1, DOUBLE_1, +'_2, sqr_1, double_1, +_2 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c18_4, c19_4, c20_4, c22_1, c24_1 ---------------------------------------- (7) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) double(0) -> 0 double(s(z0)) -> s(s(double(z0))) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples: SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) K tuples:none Defined Rule Symbols: SQR_1, DOUBLE_1, +'_2, sqr_1, double_1, +_2 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (9) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: SQR(0) -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0) -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0) -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) +(z0, s(z1)) -> s(+(z0, z1)) +(z0, 0) -> z0 double(0) -> 0 double(s(z0)) -> s(s(double(z0))) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples: SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) K tuples:none Defined Rule Symbols: sqr_1, +_2, double_1 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) We considered the (Usable) Rules:none And the Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = [1] + x_1 + x_2 POL(+''(x_1, x_2)) = 0 POL(+'''(x_1, x_2)) = 0 POL(0) = [1] POL(DOUBLE'(x_1)) = 0 POL(DOUBLE''(x_1)) = [1] POL(SQR'(x_1)) = 0 POL(SQR''(x_1)) = [1] POL(c10(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c11(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c17(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c19(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c22(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(double(x_1)) = [1] + x_1 POL(s(x_1)) = 0 POL(sqr(x_1)) = [1] + x_1 ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) +(z0, s(z1)) -> s(+(z0, z1)) +(z0, 0) -> z0 double(0) -> 0 double(s(z0)) -> s(s(double(z0))) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples: SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) K tuples: SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) Defined Rule Symbols: sqr_1, +_2, double_1 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SQR''(s(z0)) -> c9(DOUBLE''(z0)) We considered the (Usable) Rules:none And the Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = [3] POL(+''(x_1, x_2)) = 0 POL(+'''(x_1, x_2)) = 0 POL(0) = 0 POL(DOUBLE'(x_1)) = 0 POL(DOUBLE''(x_1)) = [1] POL(SQR'(x_1)) = 0 POL(SQR''(x_1)) = [2] POL(c10(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c11(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c17(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c19(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c22(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(double(x_1)) = 0 POL(s(x_1)) = 0 POL(sqr(x_1)) = 0 ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) +(z0, s(z1)) -> s(+(z0, z1)) +(z0, 0) -> z0 double(0) -> 0 double(s(z0)) -> s(s(double(z0))) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples: SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) K tuples: SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) SQR''(s(z0)) -> c9(DOUBLE''(z0)) Defined Rule Symbols: sqr_1, +_2, double_1 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) We considered the (Usable) Rules:none And the Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = x_2 POL(+''(x_1, x_2)) = 0 POL(+'''(x_1, x_2)) = 0 POL(0) = [1] POL(DOUBLE'(x_1)) = 0 POL(DOUBLE''(x_1)) = [2] + [3]x_1 POL(SQR'(x_1)) = 0 POL(SQR''(x_1)) = [1] + [3]x_1 POL(c10(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c11(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c17(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c19(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c22(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(double(x_1)) = [2] + [3]x_1 POL(s(x_1)) = [3] + x_1 POL(sqr(x_1)) = [2] + [3]x_1 ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) +(z0, s(z1)) -> s(+(z0, z1)) +(z0, 0) -> z0 double(0) -> 0 double(s(z0)) -> s(s(double(z0))) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples: +'''(z0, s(z1)) -> c24(+'''(z0, z1)) K tuples: SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) Defined Rule Symbols: sqr_1, +_2, double_1 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. +'''(z0, s(z1)) -> c24(+'''(z0, z1)) We considered the (Usable) Rules: double(0) -> 0 double(s(z0)) -> s(s(double(z0))) And the Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = [1] POL(+''(x_1, x_2)) = 0 POL(+'''(x_1, x_2)) = x_2 POL(0) = 0 POL(DOUBLE'(x_1)) = 0 POL(DOUBLE''(x_1)) = [2] + [2]x_1 + x_1^2 POL(SQR'(x_1)) = [2] POL(SQR''(x_1)) = x_1^2 POL(c10(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c11(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c17(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c19(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(c22(x_1)) = x_1 POL(c24(x_1)) = x_1 POL(c9(x_1)) = x_1 POL(double(x_1)) = [2]x_1 POL(s(x_1)) = [2] + x_1 POL(sqr(x_1)) = 0 ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: sqr(0) -> 0 sqr(s(z0)) -> +(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+(sqr(z0), double(z0))) +(z0, s(z1)) -> s(+(z0, z1)) +(z0, 0) -> z0 double(0) -> 0 double(s(z0)) -> s(s(double(z0))) Tuples: SQR'(s(z0)) -> c10(+''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0)) SQR'(s(z0)) -> c11(+''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0)) DOUBLE'(s(z0)) -> c13(DOUBLE'(z0)) +''(z0, s(z1)) -> c15(+''(z0, z1)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) S tuples:none K tuples: SQR''(s(z0)) -> c9(+'''(sqr(z0), s(double(z0)))) SQR''(s(z0)) -> c9(SQR'(z0)) SQR''(s(z0)) -> c9(DOUBLE'(z0)) SQR''(s(z0)) -> c9(+'''(sqr(z0), double(z0))) SQR''(s(z0)) -> c9(DOUBLE''(z0)) SQR''(s(z0)) -> c17(+'''(sqr(z0), s(double(z0))), SQR'(z0), DOUBLE'(z0), SQR''(z0)) SQR''(s(z0)) -> c19(+'''(sqr(z0), double(z0)), SQR'(z0), DOUBLE'(z0), SQR''(z0)) DOUBLE''(s(z0)) -> c22(DOUBLE''(z0)) +'''(z0, s(z1)) -> c24(+'''(z0, z1)) Defined Rule Symbols: sqr_1, +_2, double_1 Defined Pair Symbols: SQR'_1, DOUBLE'_1, +''_2, SQR''_1, DOUBLE''_1, +'''_2 Compound Symbols: c10_3, c11_3, c13_1, c15_1, c17_4, c19_4, c22_1, c24_1, c9_1 ---------------------------------------- (19) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (20) BOUNDS(1, 1) ---------------------------------------- (21) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (22) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) The (relative) TRS S consists of the following rules: sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (23) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (24) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 ---------------------------------------- (25) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: SQR, +', sqr, double, DOUBLE They will be analysed ascendingly in the following order: +' < SQR sqr < SQR double < SQR DOUBLE < SQR +' < sqr double < sqr ---------------------------------------- (26) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: +', SQR, sqr, double, DOUBLE They will be analysed ascendingly in the following order: +' < SQR sqr < SQR double < SQR DOUBLE < SQR +' < sqr double < sqr ---------------------------------------- (27) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9))) -> *7_9, rt in Omega(n8_9) Induction Base: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, 0))) Induction Step: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, +(n8_9, 1)))) ->_R^Omega(1) c8(+'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9)))) ->_IH c8(*7_9) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (28) Complex Obligation (BEST) ---------------------------------------- (29) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: +', SQR, sqr, double, DOUBLE They will be analysed ascendingly in the following order: +' < SQR sqr < SQR double < SQR DOUBLE < SQR +' < sqr double < sqr ---------------------------------------- (30) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (31) BOUNDS(n^1, INF) ---------------------------------------- (32) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Lemmas: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9))) -> *7_9, rt in Omega(n8_9) Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: double, SQR, sqr, DOUBLE They will be analysed ascendingly in the following order: sqr < SQR double < SQR DOUBLE < SQR double < sqr ---------------------------------------- (33) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: double(gen_0':s:c7:c85_9(n1930_9)) -> gen_0':s:c7:c85_9(*(2, n1930_9)), rt in Omega(0) Induction Base: double(gen_0':s:c7:c85_9(0)) ->_R^Omega(0) 0' Induction Step: double(gen_0':s:c7:c85_9(+(n1930_9, 1))) ->_R^Omega(0) s(s(double(gen_0':s:c7:c85_9(n1930_9)))) ->_IH s(s(gen_0':s:c7:c85_9(*(2, c1931_9)))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (34) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Lemmas: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9))) -> *7_9, rt in Omega(n8_9) double(gen_0':s:c7:c85_9(n1930_9)) -> gen_0':s:c7:c85_9(*(2, n1930_9)), rt in Omega(0) Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: sqr, SQR, DOUBLE They will be analysed ascendingly in the following order: sqr < SQR DOUBLE < SQR ---------------------------------------- (35) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: sqr(gen_0':s:c7:c85_9(+(1, n2443_9))) -> *7_9, rt in Omega(0) Induction Base: sqr(gen_0':s:c7:c85_9(+(1, 0))) Induction Step: sqr(gen_0':s:c7:c85_9(+(1, +(n2443_9, 1)))) ->_R^Omega(0) +'(sqr(gen_0':s:c7:c85_9(+(1, n2443_9))), s(double(gen_0':s:c7:c85_9(+(1, n2443_9))))) ->_IH +'(*7_9, s(double(gen_0':s:c7:c85_9(+(1, n2443_9))))) ->_L^Omega(0) +'(*7_9, s(gen_0':s:c7:c85_9(*(2, +(1, n2443_9))))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (36) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Lemmas: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9))) -> *7_9, rt in Omega(n8_9) double(gen_0':s:c7:c85_9(n1930_9)) -> gen_0':s:c7:c85_9(*(2, n1930_9)), rt in Omega(0) sqr(gen_0':s:c7:c85_9(+(1, n2443_9))) -> *7_9, rt in Omega(0) Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: DOUBLE, SQR They will be analysed ascendingly in the following order: DOUBLE < SQR ---------------------------------------- (37) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: DOUBLE(gen_0':s:c7:c85_9(n44676_9)) -> gen_c5:c66_9(n44676_9), rt in Omega(1 + n44676_9) Induction Base: DOUBLE(gen_0':s:c7:c85_9(0)) ->_R^Omega(1) c5 Induction Step: DOUBLE(gen_0':s:c7:c85_9(+(n44676_9, 1))) ->_R^Omega(1) c6(DOUBLE(gen_0':s:c7:c85_9(n44676_9))) ->_IH c6(gen_c5:c66_9(c44677_9)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (38) Obligation: Innermost TRS: Rules: SQR(0') -> c SQR(s(z0)) -> c1(+'(sqr(z0), s(double(z0))), SQR(z0)) SQR(s(z0)) -> c2(+'(sqr(z0), s(double(z0))), DOUBLE(z0)) SQR(s(z0)) -> c3(+'(sqr(z0), double(z0)), SQR(z0)) SQR(s(z0)) -> c4(+'(sqr(z0), double(z0)), DOUBLE(z0)) DOUBLE(0') -> c5 DOUBLE(s(z0)) -> c6(DOUBLE(z0)) +'(z0, 0') -> c7 +'(z0, s(z1)) -> c8(+'(z0, z1)) sqr(0') -> 0' sqr(s(z0)) -> +'(sqr(z0), s(double(z0))) sqr(s(z0)) -> s(+'(sqr(z0), double(z0))) double(0') -> 0' double(s(z0)) -> s(s(double(z0))) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: SQR :: 0':s:c7:c8 -> c:c1:c2:c3:c4 0' :: 0':s:c7:c8 c :: c:c1:c2:c3:c4 s :: 0':s:c7:c8 -> 0':s:c7:c8 c1 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 +' :: 0':s:c7:c8 -> 0':s:c7:c8 -> 0':s:c7:c8 sqr :: 0':s:c7:c8 -> 0':s:c7:c8 double :: 0':s:c7:c8 -> 0':s:c7:c8 c2 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 DOUBLE :: 0':s:c7:c8 -> c5:c6 c3 :: 0':s:c7:c8 -> c:c1:c2:c3:c4 -> c:c1:c2:c3:c4 c4 :: 0':s:c7:c8 -> c5:c6 -> c:c1:c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 -> c5:c6 c7 :: 0':s:c7:c8 c8 :: 0':s:c7:c8 -> 0':s:c7:c8 hole_c:c1:c2:c3:c41_9 :: c:c1:c2:c3:c4 hole_0':s:c7:c82_9 :: 0':s:c7:c8 hole_c5:c63_9 :: c5:c6 gen_c:c1:c2:c3:c44_9 :: Nat -> c:c1:c2:c3:c4 gen_0':s:c7:c85_9 :: Nat -> 0':s:c7:c8 gen_c5:c66_9 :: Nat -> c5:c6 Lemmas: +'(gen_0':s:c7:c85_9(a), gen_0':s:c7:c85_9(+(1, n8_9))) -> *7_9, rt in Omega(n8_9) double(gen_0':s:c7:c85_9(n1930_9)) -> gen_0':s:c7:c85_9(*(2, n1930_9)), rt in Omega(0) sqr(gen_0':s:c7:c85_9(+(1, n2443_9))) -> *7_9, rt in Omega(0) DOUBLE(gen_0':s:c7:c85_9(n44676_9)) -> gen_c5:c66_9(n44676_9), rt in Omega(1 + n44676_9) Generator Equations: gen_c:c1:c2:c3:c44_9(0) <=> c gen_c:c1:c2:c3:c44_9(+(x, 1)) <=> c1(0', gen_c:c1:c2:c3:c44_9(x)) gen_0':s:c7:c85_9(0) <=> 0' gen_0':s:c7:c85_9(+(x, 1)) <=> s(gen_0':s:c7:c85_9(x)) gen_c5:c66_9(0) <=> c5 gen_c5:c66_9(+(x, 1)) <=> c6(gen_c5:c66_9(x)) The following defined symbols remain to be analysed: SQR