WORST_CASE(NON_POLY,?) proof of input_U4sZjKVJXu.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). (0) CpxTRS (1) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CdtProblem (3) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) typed CpxTrs (9) OrderProof [LOWER BOUND(ID), 1 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 3567 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [FINISHED, 9458 ms] (18) BOUNDS(EXP, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(EXP, INF). The TRS R consists of the following rules: +(x, 0) -> x +(0, x) -> x +(s(x), s(y)) -> s(s(+(x, y))) *(x, 0) -> 0 *(0, x) -> 0 *(s(x), s(y)) -> s(+(*(x, y), +(x, y))) sum(nil) -> 0 sum(cons(x, l)) -> +(x, sum(l)) prod(nil) -> s(0) prod(cons(x, l)) -> *(x, prod(l)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, 0) -> z0 +(0, z0) -> z0 +(s(z0), s(z1)) -> s(s(+(z0, z1))) *(z0, 0) -> 0 *(0, z0) -> 0 *(s(z0), s(z1)) -> s(+(*(z0, z1), +(z0, z1))) sum(nil) -> 0 sum(cons(z0, z1)) -> +(z0, sum(z1)) prod(nil) -> s(0) prod(cons(z0, z1)) -> *(z0, prod(z1)) Tuples: +'(z0, 0) -> c +'(0, z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0) -> c3 *'(0, z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*(z0, z1), +(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*(z0, z1), +(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) S tuples: +'(z0, 0) -> c +'(0, z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0) -> c3 *'(0, z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*(z0, z1), +(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*(z0, z1), +(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) K tuples:none Defined Rule Symbols: +_2, *_2, sum_1, prod_1 Defined Pair Symbols: +'_2, *'_2, SUM_1, PROD_1 Compound Symbols: c, c1, c2_1, c3, c4, c5_2, c6_2, c7, c8_2, c9, c10_2 ---------------------------------------- (3) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(EXP, INF). The TRS R consists of the following rules: +'(z0, 0) -> c +'(0, z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0) -> c3 *'(0, z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*(z0, z1), +(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*(z0, z1), +(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) The (relative) TRS S consists of the following rules: +(z0, 0) -> z0 +(0, z0) -> z0 +(s(z0), s(z1)) -> s(s(+(z0, z1))) *(z0, 0) -> 0 *(0, z0) -> 0 *(s(z0), s(z1)) -> s(+(*(z0, z1), +(z0, z1))) sum(nil) -> 0 sum(cons(z0, z1)) -> +(z0, sum(z1)) prod(nil) -> s(0) prod(cons(z0, z1)) -> *(z0, prod(z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (5) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(EXP, INF). The TRS R consists of the following rules: +'(z0, 0') -> c +'(0', z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0') -> c3 *'(0', z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*'(z0, z1), +'(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*'(z0, z1), +'(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) The (relative) TRS S consists of the following rules: +'(z0, 0') -> z0 +'(0', z0) -> z0 +'(s(z0), s(z1)) -> s(s(+'(z0, z1))) *'(z0, 0') -> 0' *'(0', z0) -> 0' *'(s(z0), s(z1)) -> s(+'(*'(z0, z1), +'(z0, z1))) sum(nil) -> 0' sum(cons(z0, z1)) -> +'(z0, sum(z1)) prod(nil) -> s(0') prod(cons(z0, z1)) -> *'(z0, prod(z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: +'(z0, 0') -> c +'(0', z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0') -> c3 *'(0', z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*'(z0, z1), +'(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*'(z0, z1), +'(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) +'(z0, 0') -> z0 +'(0', z0) -> z0 +'(s(z0), s(z1)) -> s(s(+'(z0, z1))) *'(z0, 0') -> 0' *'(0', z0) -> 0' *'(s(z0), s(z1)) -> s(+'(*'(z0, z1), +'(z0, z1))) sum(nil) -> 0' sum(cons(z0, z1)) -> +'(z0, sum(z1)) prod(nil) -> s(0') prod(cons(z0, z1)) -> *'(z0, prod(z1)) Types: +' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 0' :: 0':c:c1:s:c2:c3:c4:c5:c6 c :: 0':c:c1:s:c2:c3:c4:c5:c6 c1 :: 0':c:c1:s:c2:c3:c4:c5:c6 s :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c2 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 *' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c3 :: 0':c:c1:s:c2:c3:c4:c5:c6 c4 :: 0':c:c1:s:c2:c3:c4:c5:c6 c5 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c6 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 SUM :: nil:cons -> c7:c8 nil :: nil:cons c7 :: c7:c8 cons :: 0':c:c1:s:c2:c3:c4:c5:c6 -> nil:cons -> nil:cons c8 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c7:c8 -> c7:c8 sum :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 PROD :: nil:cons -> c9:c10 c9 :: c9:c10 c10 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c9:c10 -> c9:c10 prod :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 hole_0':c:c1:s:c2:c3:c4:c5:c61_11 :: 0':c:c1:s:c2:c3:c4:c5:c6 hole_c7:c82_11 :: c7:c8 hole_nil:cons3_11 :: nil:cons hole_c9:c104_11 :: c9:c10 gen_0':c:c1:s:c2:c3:c4:c5:c65_11 :: Nat -> 0':c:c1:s:c2:c3:c4:c5:c6 gen_c7:c86_11 :: Nat -> c7:c8 gen_nil:cons7_11 :: Nat -> nil:cons gen_c9:c108_11 :: Nat -> c9:c10 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: +', *', SUM, sum, PROD, prod They will be analysed ascendingly in the following order: +' < *' +' < SUM +' < sum *' < PROD *' < prod sum < SUM prod < PROD ---------------------------------------- (10) Obligation: Innermost TRS: Rules: +'(z0, 0') -> c +'(0', z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0') -> c3 *'(0', z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*'(z0, z1), +'(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*'(z0, z1), +'(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) +'(z0, 0') -> z0 +'(0', z0) -> z0 +'(s(z0), s(z1)) -> s(s(+'(z0, z1))) *'(z0, 0') -> 0' *'(0', z0) -> 0' *'(s(z0), s(z1)) -> s(+'(*'(z0, z1), +'(z0, z1))) sum(nil) -> 0' sum(cons(z0, z1)) -> +'(z0, sum(z1)) prod(nil) -> s(0') prod(cons(z0, z1)) -> *'(z0, prod(z1)) Types: +' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 0' :: 0':c:c1:s:c2:c3:c4:c5:c6 c :: 0':c:c1:s:c2:c3:c4:c5:c6 c1 :: 0':c:c1:s:c2:c3:c4:c5:c6 s :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c2 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 *' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c3 :: 0':c:c1:s:c2:c3:c4:c5:c6 c4 :: 0':c:c1:s:c2:c3:c4:c5:c6 c5 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c6 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 SUM :: nil:cons -> c7:c8 nil :: nil:cons c7 :: c7:c8 cons :: 0':c:c1:s:c2:c3:c4:c5:c6 -> nil:cons -> nil:cons c8 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c7:c8 -> c7:c8 sum :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 PROD :: nil:cons -> c9:c10 c9 :: c9:c10 c10 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c9:c10 -> c9:c10 prod :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 hole_0':c:c1:s:c2:c3:c4:c5:c61_11 :: 0':c:c1:s:c2:c3:c4:c5:c6 hole_c7:c82_11 :: c7:c8 hole_nil:cons3_11 :: nil:cons hole_c9:c104_11 :: c9:c10 gen_0':c:c1:s:c2:c3:c4:c5:c65_11 :: Nat -> 0':c:c1:s:c2:c3:c4:c5:c6 gen_c7:c86_11 :: Nat -> c7:c8 gen_nil:cons7_11 :: Nat -> nil:cons gen_c9:c108_11 :: Nat -> c9:c10 Generator Equations: gen_0':c:c1:s:c2:c3:c4:c5:c65_11(0) <=> 0' gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(x, 1)) <=> s(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(x)) gen_c7:c86_11(0) <=> c7 gen_c7:c86_11(+(x, 1)) <=> c8(0', gen_c7:c86_11(x)) gen_nil:cons7_11(0) <=> nil gen_nil:cons7_11(+(x, 1)) <=> cons(0', gen_nil:cons7_11(x)) gen_c9:c108_11(0) <=> c9 gen_c9:c108_11(+(x, 1)) <=> c10(0', gen_c9:c108_11(x)) The following defined symbols remain to be analysed: +', *', SUM, sum, PROD, prod They will be analysed ascendingly in the following order: +' < *' +' < SUM +' < sum *' < PROD *' < prod sum < SUM prod < PROD ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11))) -> *9_11, rt in Omega(n10_11) Induction Base: +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, 0)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, 0))) Induction Step: +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, +(n10_11, 1))), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, +(n10_11, 1)))) ->_R^Omega(1) c2(+'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11)))) ->_IH c2(*9_11) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (12) Complex Obligation (BEST) ---------------------------------------- (13) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: +'(z0, 0') -> c +'(0', z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0') -> c3 *'(0', z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*'(z0, z1), +'(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*'(z0, z1), +'(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) +'(z0, 0') -> z0 +'(0', z0) -> z0 +'(s(z0), s(z1)) -> s(s(+'(z0, z1))) *'(z0, 0') -> 0' *'(0', z0) -> 0' *'(s(z0), s(z1)) -> s(+'(*'(z0, z1), +'(z0, z1))) sum(nil) -> 0' sum(cons(z0, z1)) -> +'(z0, sum(z1)) prod(nil) -> s(0') prod(cons(z0, z1)) -> *'(z0, prod(z1)) Types: +' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 0' :: 0':c:c1:s:c2:c3:c4:c5:c6 c :: 0':c:c1:s:c2:c3:c4:c5:c6 c1 :: 0':c:c1:s:c2:c3:c4:c5:c6 s :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c2 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 *' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c3 :: 0':c:c1:s:c2:c3:c4:c5:c6 c4 :: 0':c:c1:s:c2:c3:c4:c5:c6 c5 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c6 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 SUM :: nil:cons -> c7:c8 nil :: nil:cons c7 :: c7:c8 cons :: 0':c:c1:s:c2:c3:c4:c5:c6 -> nil:cons -> nil:cons c8 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c7:c8 -> c7:c8 sum :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 PROD :: nil:cons -> c9:c10 c9 :: c9:c10 c10 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c9:c10 -> c9:c10 prod :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 hole_0':c:c1:s:c2:c3:c4:c5:c61_11 :: 0':c:c1:s:c2:c3:c4:c5:c6 hole_c7:c82_11 :: c7:c8 hole_nil:cons3_11 :: nil:cons hole_c9:c104_11 :: c9:c10 gen_0':c:c1:s:c2:c3:c4:c5:c65_11 :: Nat -> 0':c:c1:s:c2:c3:c4:c5:c6 gen_c7:c86_11 :: Nat -> c7:c8 gen_nil:cons7_11 :: Nat -> nil:cons gen_c9:c108_11 :: Nat -> c9:c10 Generator Equations: gen_0':c:c1:s:c2:c3:c4:c5:c65_11(0) <=> 0' gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(x, 1)) <=> s(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(x)) gen_c7:c86_11(0) <=> c7 gen_c7:c86_11(+(x, 1)) <=> c8(0', gen_c7:c86_11(x)) gen_nil:cons7_11(0) <=> nil gen_nil:cons7_11(+(x, 1)) <=> cons(0', gen_nil:cons7_11(x)) gen_c9:c108_11(0) <=> c9 gen_c9:c108_11(+(x, 1)) <=> c10(0', gen_c9:c108_11(x)) The following defined symbols remain to be analysed: +', *', SUM, sum, PROD, prod They will be analysed ascendingly in the following order: +' < *' +' < SUM +' < sum *' < PROD *' < prod sum < SUM prod < PROD ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: +'(z0, 0') -> c +'(0', z0) -> c1 +'(s(z0), s(z1)) -> c2(+'(z0, z1)) *'(z0, 0') -> c3 *'(0', z0) -> c4 *'(s(z0), s(z1)) -> c5(+'(*'(z0, z1), +'(z0, z1)), *'(z0, z1)) *'(s(z0), s(z1)) -> c6(+'(*'(z0, z1), +'(z0, z1)), +'(z0, z1)) SUM(nil) -> c7 SUM(cons(z0, z1)) -> c8(+'(z0, sum(z1)), SUM(z1)) PROD(nil) -> c9 PROD(cons(z0, z1)) -> c10(*'(z0, prod(z1)), PROD(z1)) +'(z0, 0') -> z0 +'(0', z0) -> z0 +'(s(z0), s(z1)) -> s(s(+'(z0, z1))) *'(z0, 0') -> 0' *'(0', z0) -> 0' *'(s(z0), s(z1)) -> s(+'(*'(z0, z1), +'(z0, z1))) sum(nil) -> 0' sum(cons(z0, z1)) -> +'(z0, sum(z1)) prod(nil) -> s(0') prod(cons(z0, z1)) -> *'(z0, prod(z1)) Types: +' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 0' :: 0':c:c1:s:c2:c3:c4:c5:c6 c :: 0':c:c1:s:c2:c3:c4:c5:c6 c1 :: 0':c:c1:s:c2:c3:c4:c5:c6 s :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c2 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 *' :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c3 :: 0':c:c1:s:c2:c3:c4:c5:c6 c4 :: 0':c:c1:s:c2:c3:c4:c5:c6 c5 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 c6 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 -> 0':c:c1:s:c2:c3:c4:c5:c6 SUM :: nil:cons -> c7:c8 nil :: nil:cons c7 :: c7:c8 cons :: 0':c:c1:s:c2:c3:c4:c5:c6 -> nil:cons -> nil:cons c8 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c7:c8 -> c7:c8 sum :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 PROD :: nil:cons -> c9:c10 c9 :: c9:c10 c10 :: 0':c:c1:s:c2:c3:c4:c5:c6 -> c9:c10 -> c9:c10 prod :: nil:cons -> 0':c:c1:s:c2:c3:c4:c5:c6 hole_0':c:c1:s:c2:c3:c4:c5:c61_11 :: 0':c:c1:s:c2:c3:c4:c5:c6 hole_c7:c82_11 :: c7:c8 hole_nil:cons3_11 :: nil:cons hole_c9:c104_11 :: c9:c10 gen_0':c:c1:s:c2:c3:c4:c5:c65_11 :: Nat -> 0':c:c1:s:c2:c3:c4:c5:c6 gen_c7:c86_11 :: Nat -> c7:c8 gen_nil:cons7_11 :: Nat -> nil:cons gen_c9:c108_11 :: Nat -> c9:c10 Lemmas: +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n10_11))) -> *9_11, rt in Omega(n10_11) Generator Equations: gen_0':c:c1:s:c2:c3:c4:c5:c65_11(0) <=> 0' gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(x, 1)) <=> s(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(x)) gen_c7:c86_11(0) <=> c7 gen_c7:c86_11(+(x, 1)) <=> c8(0', gen_c7:c86_11(x)) gen_nil:cons7_11(0) <=> nil gen_nil:cons7_11(+(x, 1)) <=> cons(0', gen_nil:cons7_11(x)) gen_c9:c108_11(0) <=> c9 gen_c9:c108_11(+(x, 1)) <=> c10(0', gen_c9:c108_11(x)) The following defined symbols remain to be analysed: *', SUM, sum, PROD, prod They will be analysed ascendingly in the following order: *' < PROD *' < prod sum < SUM prod < PROD ---------------------------------------- (17) RewriteLemmaProof (FINISHED) Proved the following rewrite lemma: *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11))) -> *9_11, rt in Omega(EXP) Induction Base: *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, 0)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, 0))) Induction Step: *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, +(n2980_11, 1))), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, +(n2980_11, 1)))) ->_R^Omega(1) c5(+'(*'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11))), +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)))), *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)))) ->_IH c5(+'(*9_11, +'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)))), *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)))) ->_R^Omega(1) c5(+'(*9_11, c2(+'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(n2980_11), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(n2980_11)))), *'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(+(1, n2980_11)))) ->_IH c5(+'(*9_11, c2(+'(gen_0':c:c1:s:c2:c3:c4:c5:c65_11(n2980_11), gen_0':c:c1:s:c2:c3:c4:c5:c65_11(n2980_11)))), *9_11) We have rt in EXP and sz in O(n). Thus, we have irc_R in EXP ---------------------------------------- (18) BOUNDS(EXP, INF)