WORST_CASE(Omega(n^3),O(n^3)) proof of input_X7qEONYbs1.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^3, n^3). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (4) CdtProblem (5) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 86 ms] (8) CdtProblem (9) CdtRuleRemovalProof [UPPER BOUND(ADD(n^3)), 157 ms] (10) CdtProblem (11) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (12) BOUNDS(1, 1) (13) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CdtProblem (15) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRelTRS (17) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRelTRS (19) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (20) typed CpxTrs (21) OrderProof [LOWER BOUND(ID), 17 ms] (22) typed CpxTrs (23) RewriteLemmaProof [LOWER BOUND(ID), 304 ms] (24) BEST (25) proven lower bound (26) LowerBoundPropagationProof [FINISHED, 0 ms] (27) BOUNDS(n^1, INF) (28) typed CpxTrs (29) RewriteLemmaProof [LOWER BOUND(ID), 80 ms] (30) typed CpxTrs (31) RewriteLemmaProof [LOWER BOUND(ID), 58 ms] (32) typed CpxTrs (33) RewriteLemmaProof [LOWER BOUND(ID), 1922 ms] (34) proven lower bound (35) LowerBoundPropagationProof [FINISHED, 0 ms] (36) BOUNDS(n^3, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^3, n^3). The TRS R consists of the following rules: mul0(Cons(x, xs), y) -> add0(mul0(xs, y), y) add0(Cons(x, xs), y) -> add0(xs, Cons(S, y)) mul0(Nil, y) -> Nil add0(Nil, y) -> y goal(xs, ys) -> mul0(xs, ys) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) S tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) K tuples:none Defined Rule Symbols: mul0_2, add0_2, goal_2 Defined Pair Symbols: MUL0_2, ADD0_2, GOAL_2 Compound Symbols: c_2, c1, c2_1, c3, c4_1 ---------------------------------------- (3) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: GOAL(z0, z1) -> c4(MUL0(z0, z1)) Removed 2 trailing nodes: MUL0(Nil, z0) -> c1 ADD0(Nil, z0) -> c3 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) S tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) K tuples:none Defined Rule Symbols: mul0_2, add0_2, goal_2 Defined Pair Symbols: MUL0_2, ADD0_2 Compound Symbols: c_2, c2_1 ---------------------------------------- (5) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: goal(z0, z1) -> mul0(z0, z1) ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) S tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) K tuples:none Defined Rule Symbols: mul0_2, add0_2 Defined Pair Symbols: MUL0_2, ADD0_2 Compound Symbols: c_2, c2_1 ---------------------------------------- (7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) We considered the (Usable) Rules:none And the Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) The order we found is given by the following interpretation: Polynomial interpretation : POL(ADD0(x_1, x_2)) = 0 POL(Cons(x_1, x_2)) = [1] + x_1 + x_2 POL(MUL0(x_1, x_2)) = x_1 POL(Nil) = [1] POL(S) = [1] POL(add0(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1, x_2)) = x_1 + x_2 POL(c2(x_1)) = x_1 POL(mul0(x_1, x_2)) = [1] + x_1 + x_2 ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) S tuples: ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) K tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) Defined Rule Symbols: mul0_2, add0_2 Defined Pair Symbols: MUL0_2, ADD0_2 Compound Symbols: c_2, c2_1 ---------------------------------------- (9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) We considered the (Usable) Rules: mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) And the Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) The order we found is given by the following interpretation: Polynomial interpretation : POL(ADD0(x_1, x_2)) = x_1 POL(Cons(x_1, x_2)) = [1] + x_2 POL(MUL0(x_1, x_2)) = x_1^2*x_2 + x_1*x_2^2 POL(Nil) = 0 POL(S) = 0 POL(add0(x_1, x_2)) = x_1 + x_2 POL(c(x_1, x_2)) = x_1 + x_2 POL(c2(x_1)) = x_1 POL(mul0(x_1, x_2)) = x_2 + x_1*x_2 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) S tuples:none K tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) Defined Rule Symbols: mul0_2, add0_2 Defined Pair Symbols: MUL0_2, ADD0_2 Compound Symbols: c_2, c2_1 ---------------------------------------- (11) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (12) BOUNDS(1, 1) ---------------------------------------- (13) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) S tuples: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) K tuples:none Defined Rule Symbols: mul0_2, add0_2, goal_2 Defined Pair Symbols: MUL0_2, ADD0_2, GOAL_2 Compound Symbols: c_2, c1, c2_1, c3, c4_1 ---------------------------------------- (15) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (16) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^3, INF). The TRS R consists of the following rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) The (relative) TRS S consists of the following rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (17) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (18) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^3, INF). The TRS R consists of the following rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) The (relative) TRS S consists of the following rules: mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Rewrite Strategy: INNERMOST ---------------------------------------- (19) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (20) Obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 ---------------------------------------- (21) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: MUL0, ADD0, mul0, add0 They will be analysed ascendingly in the following order: ADD0 < MUL0 mul0 < MUL0 add0 < mul0 ---------------------------------------- (22) Obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: ADD0, MUL0, mul0, add0 They will be analysed ascendingly in the following order: ADD0 < MUL0 mul0 < MUL0 add0 < mul0 ---------------------------------------- (23) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: ADD0(gen_Cons:Nil7_5(n10_5), gen_Cons:Nil7_5(b)) -> gen_c2:c38_5(n10_5), rt in Omega(1 + n10_5) Induction Base: ADD0(gen_Cons:Nil7_5(0), gen_Cons:Nil7_5(b)) ->_R^Omega(1) c3 Induction Step: ADD0(gen_Cons:Nil7_5(+(n10_5, 1)), gen_Cons:Nil7_5(b)) ->_R^Omega(1) c2(ADD0(gen_Cons:Nil7_5(n10_5), Cons(S, gen_Cons:Nil7_5(b)))) ->_IH c2(gen_c2:c38_5(c11_5)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (24) Complex Obligation (BEST) ---------------------------------------- (25) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: ADD0, MUL0, mul0, add0 They will be analysed ascendingly in the following order: ADD0 < MUL0 mul0 < MUL0 add0 < mul0 ---------------------------------------- (26) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (27) BOUNDS(n^1, INF) ---------------------------------------- (28) Obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Lemmas: ADD0(gen_Cons:Nil7_5(n10_5), gen_Cons:Nil7_5(b)) -> gen_c2:c38_5(n10_5), rt in Omega(1 + n10_5) Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: add0, MUL0, mul0 They will be analysed ascendingly in the following order: mul0 < MUL0 add0 < mul0 ---------------------------------------- (29) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: add0(gen_Cons:Nil7_5(n471_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(+(n471_5, b)), rt in Omega(0) Induction Base: add0(gen_Cons:Nil7_5(0), gen_Cons:Nil7_5(b)) ->_R^Omega(0) gen_Cons:Nil7_5(b) Induction Step: add0(gen_Cons:Nil7_5(+(n471_5, 1)), gen_Cons:Nil7_5(b)) ->_R^Omega(0) add0(gen_Cons:Nil7_5(n471_5), Cons(S, gen_Cons:Nil7_5(b))) ->_IH gen_Cons:Nil7_5(+(+(b, 1), c472_5)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (30) Obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Lemmas: ADD0(gen_Cons:Nil7_5(n10_5), gen_Cons:Nil7_5(b)) -> gen_c2:c38_5(n10_5), rt in Omega(1 + n10_5) add0(gen_Cons:Nil7_5(n471_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(+(n471_5, b)), rt in Omega(0) Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: mul0, MUL0 They will be analysed ascendingly in the following order: mul0 < MUL0 ---------------------------------------- (31) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mul0(gen_Cons:Nil7_5(n1349_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(*(n1349_5, b)), rt in Omega(0) Induction Base: mul0(gen_Cons:Nil7_5(0), gen_Cons:Nil7_5(b)) ->_R^Omega(0) Nil Induction Step: mul0(gen_Cons:Nil7_5(+(n1349_5, 1)), gen_Cons:Nil7_5(b)) ->_R^Omega(0) add0(mul0(gen_Cons:Nil7_5(n1349_5), gen_Cons:Nil7_5(b)), gen_Cons:Nil7_5(b)) ->_IH add0(gen_Cons:Nil7_5(*(c1350_5, b)), gen_Cons:Nil7_5(b)) ->_L^Omega(0) gen_Cons:Nil7_5(+(*(n1349_5, b), b)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (32) Obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Lemmas: ADD0(gen_Cons:Nil7_5(n10_5), gen_Cons:Nil7_5(b)) -> gen_c2:c38_5(n10_5), rt in Omega(1 + n10_5) add0(gen_Cons:Nil7_5(n471_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(+(n471_5, b)), rt in Omega(0) mul0(gen_Cons:Nil7_5(n1349_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(*(n1349_5, b)), rt in Omega(0) Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: MUL0 ---------------------------------------- (33) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MUL0(gen_Cons:Nil7_5(+(1, n2336_5)), gen_Cons:Nil7_5(b)) -> *9_5, rt in Omega(b*n2336_5 + b*n2336_5^2 + n2336_5) Induction Base: MUL0(gen_Cons:Nil7_5(+(1, 0)), gen_Cons:Nil7_5(b)) Induction Step: MUL0(gen_Cons:Nil7_5(+(1, +(n2336_5, 1))), gen_Cons:Nil7_5(b)) ->_R^Omega(1) c(ADD0(mul0(gen_Cons:Nil7_5(+(1, n2336_5)), gen_Cons:Nil7_5(b)), gen_Cons:Nil7_5(b)), MUL0(gen_Cons:Nil7_5(+(1, n2336_5)), gen_Cons:Nil7_5(b))) ->_L^Omega(0) c(ADD0(gen_Cons:Nil7_5(*(+(1, n2336_5), b)), gen_Cons:Nil7_5(b)), MUL0(gen_Cons:Nil7_5(+(1, n2336_5)), gen_Cons:Nil7_5(b))) ->_L^Omega(1 + b + b*n2336_5) c(gen_c2:c38_5(+(b, *(n2336_5, b))), MUL0(gen_Cons:Nil7_5(+(1, n2336_5)), gen_Cons:Nil7_5(b))) ->_IH c(gen_c2:c38_5(+(b, *(n2336_5, b))), *9_5) We have rt in Omega(n^3) and sz in O(n). Thus, we have irc_R in Omega(n^3). ---------------------------------------- (34) Obligation: Proved the lower bound n^3 for the following obligation: Innermost TRS: Rules: MUL0(Cons(z0, z1), z2) -> c(ADD0(mul0(z1, z2), z2), MUL0(z1, z2)) MUL0(Nil, z0) -> c1 ADD0(Cons(z0, z1), z2) -> c2(ADD0(z1, Cons(S, z2))) ADD0(Nil, z0) -> c3 GOAL(z0, z1) -> c4(MUL0(z0, z1)) mul0(Cons(z0, z1), z2) -> add0(mul0(z1, z2), z2) mul0(Nil, z0) -> Nil add0(Cons(z0, z1), z2) -> add0(z1, Cons(S, z2)) add0(Nil, z0) -> z0 goal(z0, z1) -> mul0(z0, z1) Types: MUL0 :: Cons:Nil -> Cons:Nil -> c:c1 Cons :: S -> Cons:Nil -> Cons:Nil c :: c2:c3 -> c:c1 -> c:c1 ADD0 :: Cons:Nil -> Cons:Nil -> c2:c3 mul0 :: Cons:Nil -> Cons:Nil -> Cons:Nil Nil :: Cons:Nil c1 :: c:c1 c2 :: c2:c3 -> c2:c3 S :: S c3 :: c2:c3 GOAL :: Cons:Nil -> Cons:Nil -> c4 c4 :: c:c1 -> c4 add0 :: Cons:Nil -> Cons:Nil -> Cons:Nil goal :: Cons:Nil -> Cons:Nil -> Cons:Nil hole_c:c11_5 :: c:c1 hole_Cons:Nil2_5 :: Cons:Nil hole_S3_5 :: S hole_c2:c34_5 :: c2:c3 hole_c45_5 :: c4 gen_c:c16_5 :: Nat -> c:c1 gen_Cons:Nil7_5 :: Nat -> Cons:Nil gen_c2:c38_5 :: Nat -> c2:c3 Lemmas: ADD0(gen_Cons:Nil7_5(n10_5), gen_Cons:Nil7_5(b)) -> gen_c2:c38_5(n10_5), rt in Omega(1 + n10_5) add0(gen_Cons:Nil7_5(n471_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(+(n471_5, b)), rt in Omega(0) mul0(gen_Cons:Nil7_5(n1349_5), gen_Cons:Nil7_5(b)) -> gen_Cons:Nil7_5(*(n1349_5, b)), rt in Omega(0) Generator Equations: gen_c:c16_5(0) <=> c1 gen_c:c16_5(+(x, 1)) <=> c(c3, gen_c:c16_5(x)) gen_Cons:Nil7_5(0) <=> Nil gen_Cons:Nil7_5(+(x, 1)) <=> Cons(S, gen_Cons:Nil7_5(x)) gen_c2:c38_5(0) <=> c3 gen_c2:c38_5(+(x, 1)) <=> c2(gen_c2:c38_5(x)) The following defined symbols remain to be analysed: MUL0 ---------------------------------------- (35) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (36) BOUNDS(n^3, INF)