WORST_CASE(NON_POLY,?) proof of input_CM5OQQ8IU1.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 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), 12 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 1730 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [FINISHED, 274 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: p(s(x)) -> x fact(0) -> s(0) fact(s(x)) -> *(s(x), fact(p(s(x)))) *(0, y) -> 0 *(s(x), y) -> +(*(x, y), y) +(x, 0) -> x +(x, s(y)) -> s(+(x, y)) 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: p(s(z0)) -> z0 fact(0) -> s(0) fact(s(z0)) -> *(s(z0), fact(p(s(z0)))) *(0, z0) -> 0 *(s(z0), z1) -> +(*(z0, z1), z1) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, z1)) Tuples: P(s(z0)) -> c FACT(0) -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0, z0) -> c3 *'(s(z0), z1) -> c4(+'(*(z0, z1), z1), *'(z0, z1)) +'(z0, 0) -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) S tuples: P(s(z0)) -> c FACT(0) -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0, z0) -> c3 *'(s(z0), z1) -> c4(+'(*(z0, z1), z1), *'(z0, z1)) +'(z0, 0) -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) K tuples:none Defined Rule Symbols: p_1, fact_1, *_2, +_2 Defined Pair Symbols: P_1, FACT_1, *'_2, +'_2 Compound Symbols: c, c1, c2_3, c3, c4_2, c5, c6_1 ---------------------------------------- (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: P(s(z0)) -> c FACT(0) -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0, z0) -> c3 *'(s(z0), z1) -> c4(+'(*(z0, z1), z1), *'(z0, z1)) +'(z0, 0) -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) The (relative) TRS S consists of the following rules: p(s(z0)) -> z0 fact(0) -> s(0) fact(s(z0)) -> *(s(z0), fact(p(s(z0)))) *(0, z0) -> 0 *(s(z0), z1) -> +(*(z0, z1), z1) +(z0, 0) -> z0 +(z0, s(z1)) -> s(+(z0, 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: P(s(z0)) -> c FACT(0') -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0', z0) -> c3 *'(s(z0), z1) -> c4(+'(*'(z0, z1), z1), *'(z0, z1)) +'(z0, 0') -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) The (relative) TRS S consists of the following rules: p(s(z0)) -> z0 fact(0') -> s(0') fact(s(z0)) -> *'(s(z0), fact(p(s(z0)))) *'(0', z0) -> 0' *'(s(z0), z1) -> +'(*'(z0, z1), z1) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: P(s(z0)) -> c FACT(0') -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0', z0) -> c3 *'(s(z0), z1) -> c4(+'(*'(z0, z1), z1), *'(z0, z1)) +'(z0, 0') -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) p(s(z0)) -> z0 fact(0') -> s(0') fact(s(z0)) -> *'(s(z0), fact(p(s(z0)))) *'(0', z0) -> 0' *'(s(z0), z1) -> +'(*'(z0, z1), z1) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: P :: s:0':c3:c4:c5:c6 -> c s :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c :: c FACT :: s:0':c3:c4:c5:c6 -> c1:c2 0' :: s:0':c3:c4:c5:c6 c1 :: c1:c2 c2 :: s:0':c3:c4:c5:c6 -> c1:c2 -> c -> c1:c2 *' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 fact :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 p :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c3 :: s:0':c3:c4:c5:c6 c4 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 +' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c5 :: s:0':c3:c4:c5:c6 c6 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 hole_c1_7 :: c hole_s:0':c3:c4:c5:c62_7 :: s:0':c3:c4:c5:c6 hole_c1:c23_7 :: c1:c2 gen_s:0':c3:c4:c5:c64_7 :: Nat -> s:0':c3:c4:c5:c6 gen_c1:c25_7 :: Nat -> c1:c2 ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: FACT, *', fact, +' They will be analysed ascendingly in the following order: *' < FACT fact < FACT *' < fact +' < *' ---------------------------------------- (10) Obligation: Innermost TRS: Rules: P(s(z0)) -> c FACT(0') -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0', z0) -> c3 *'(s(z0), z1) -> c4(+'(*'(z0, z1), z1), *'(z0, z1)) +'(z0, 0') -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) p(s(z0)) -> z0 fact(0') -> s(0') fact(s(z0)) -> *'(s(z0), fact(p(s(z0)))) *'(0', z0) -> 0' *'(s(z0), z1) -> +'(*'(z0, z1), z1) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: P :: s:0':c3:c4:c5:c6 -> c s :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c :: c FACT :: s:0':c3:c4:c5:c6 -> c1:c2 0' :: s:0':c3:c4:c5:c6 c1 :: c1:c2 c2 :: s:0':c3:c4:c5:c6 -> c1:c2 -> c -> c1:c2 *' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 fact :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 p :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c3 :: s:0':c3:c4:c5:c6 c4 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 +' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c5 :: s:0':c3:c4:c5:c6 c6 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 hole_c1_7 :: c hole_s:0':c3:c4:c5:c62_7 :: s:0':c3:c4:c5:c6 hole_c1:c23_7 :: c1:c2 gen_s:0':c3:c4:c5:c64_7 :: Nat -> s:0':c3:c4:c5:c6 gen_c1:c25_7 :: Nat -> c1:c2 Generator Equations: gen_s:0':c3:c4:c5:c64_7(0) <=> 0' gen_s:0':c3:c4:c5:c64_7(+(x, 1)) <=> s(gen_s:0':c3:c4:c5:c64_7(x)) gen_c1:c25_7(0) <=> c1 gen_c1:c25_7(+(x, 1)) <=> c2(0', gen_c1:c25_7(x), c) The following defined symbols remain to be analysed: +', FACT, *', fact They will be analysed ascendingly in the following order: *' < FACT fact < FACT *' < fact +' < *' ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: +'(gen_s:0':c3:c4:c5:c64_7(a), gen_s:0':c3:c4:c5:c64_7(+(1, n7_7))) -> *6_7, rt in Omega(n7_7) Induction Base: +'(gen_s:0':c3:c4:c5:c64_7(a), gen_s:0':c3:c4:c5:c64_7(+(1, 0))) Induction Step: +'(gen_s:0':c3:c4:c5:c64_7(a), gen_s:0':c3:c4:c5:c64_7(+(1, +(n7_7, 1)))) ->_R^Omega(1) c6(+'(gen_s:0':c3:c4:c5:c64_7(a), gen_s:0':c3:c4:c5:c64_7(+(1, n7_7)))) ->_IH c6(*6_7) 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: P(s(z0)) -> c FACT(0') -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0', z0) -> c3 *'(s(z0), z1) -> c4(+'(*'(z0, z1), z1), *'(z0, z1)) +'(z0, 0') -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) p(s(z0)) -> z0 fact(0') -> s(0') fact(s(z0)) -> *'(s(z0), fact(p(s(z0)))) *'(0', z0) -> 0' *'(s(z0), z1) -> +'(*'(z0, z1), z1) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: P :: s:0':c3:c4:c5:c6 -> c s :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c :: c FACT :: s:0':c3:c4:c5:c6 -> c1:c2 0' :: s:0':c3:c4:c5:c6 c1 :: c1:c2 c2 :: s:0':c3:c4:c5:c6 -> c1:c2 -> c -> c1:c2 *' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 fact :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 p :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c3 :: s:0':c3:c4:c5:c6 c4 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 +' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c5 :: s:0':c3:c4:c5:c6 c6 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 hole_c1_7 :: c hole_s:0':c3:c4:c5:c62_7 :: s:0':c3:c4:c5:c6 hole_c1:c23_7 :: c1:c2 gen_s:0':c3:c4:c5:c64_7 :: Nat -> s:0':c3:c4:c5:c6 gen_c1:c25_7 :: Nat -> c1:c2 Generator Equations: gen_s:0':c3:c4:c5:c64_7(0) <=> 0' gen_s:0':c3:c4:c5:c64_7(+(x, 1)) <=> s(gen_s:0':c3:c4:c5:c64_7(x)) gen_c1:c25_7(0) <=> c1 gen_c1:c25_7(+(x, 1)) <=> c2(0', gen_c1:c25_7(x), c) The following defined symbols remain to be analysed: +', FACT, *', fact They will be analysed ascendingly in the following order: *' < FACT fact < FACT *' < fact +' < *' ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: P(s(z0)) -> c FACT(0') -> c1 FACT(s(z0)) -> c2(*'(s(z0), fact(p(s(z0)))), FACT(p(s(z0))), P(s(z0))) *'(0', z0) -> c3 *'(s(z0), z1) -> c4(+'(*'(z0, z1), z1), *'(z0, z1)) +'(z0, 0') -> c5 +'(z0, s(z1)) -> c6(+'(z0, z1)) p(s(z0)) -> z0 fact(0') -> s(0') fact(s(z0)) -> *'(s(z0), fact(p(s(z0)))) *'(0', z0) -> 0' *'(s(z0), z1) -> +'(*'(z0, z1), z1) +'(z0, 0') -> z0 +'(z0, s(z1)) -> s(+'(z0, z1)) Types: P :: s:0':c3:c4:c5:c6 -> c s :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c :: c FACT :: s:0':c3:c4:c5:c6 -> c1:c2 0' :: s:0':c3:c4:c5:c6 c1 :: c1:c2 c2 :: s:0':c3:c4:c5:c6 -> c1:c2 -> c -> c1:c2 *' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 fact :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 p :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c3 :: s:0':c3:c4:c5:c6 c4 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 +' :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 c5 :: s:0':c3:c4:c5:c6 c6 :: s:0':c3:c4:c5:c6 -> s:0':c3:c4:c5:c6 hole_c1_7 :: c hole_s:0':c3:c4:c5:c62_7 :: s:0':c3:c4:c5:c6 hole_c1:c23_7 :: c1:c2 gen_s:0':c3:c4:c5:c64_7 :: Nat -> s:0':c3:c4:c5:c6 gen_c1:c25_7 :: Nat -> c1:c2 Lemmas: +'(gen_s:0':c3:c4:c5:c64_7(a), gen_s:0':c3:c4:c5:c64_7(+(1, n7_7))) -> *6_7, rt in Omega(n7_7) Generator Equations: gen_s:0':c3:c4:c5:c64_7(0) <=> 0' gen_s:0':c3:c4:c5:c64_7(+(x, 1)) <=> s(gen_s:0':c3:c4:c5:c64_7(x)) gen_c1:c25_7(0) <=> c1 gen_c1:c25_7(+(x, 1)) <=> c2(0', gen_c1:c25_7(x), c) The following defined symbols remain to be analysed: *', FACT, fact They will be analysed ascendingly in the following order: *' < FACT fact < FACT *' < fact ---------------------------------------- (17) RewriteLemmaProof (FINISHED) Proved the following rewrite lemma: *'(gen_s:0':c3:c4:c5:c64_7(+(1, n1865_7)), gen_s:0':c3:c4:c5:c64_7(b)) -> *6_7, rt in Omega(EXP) Induction Base: *'(gen_s:0':c3:c4:c5:c64_7(+(1, 0)), gen_s:0':c3:c4:c5:c64_7(b)) Induction Step: *'(gen_s:0':c3:c4:c5:c64_7(+(1, +(n1865_7, 1))), gen_s:0':c3:c4:c5:c64_7(b)) ->_R^Omega(1) c4(+'(*'(gen_s:0':c3:c4:c5:c64_7(+(1, n1865_7)), gen_s:0':c3:c4:c5:c64_7(b)), gen_s:0':c3:c4:c5:c64_7(b)), *'(gen_s:0':c3:c4:c5:c64_7(+(1, n1865_7)), gen_s:0':c3:c4:c5:c64_7(b))) ->_IH c4(+'(*6_7, gen_s:0':c3:c4:c5:c64_7(b)), *'(gen_s:0':c3:c4:c5:c64_7(+(1, n1865_7)), gen_s:0':c3:c4:c5:c64_7(b))) ->_IH c4(+'(*6_7, gen_s:0':c3:c4:c5:c64_7(b)), *6_7) We have rt in EXP and sz in O(n). Thus, we have irc_R in EXP ---------------------------------------- (18) BOUNDS(EXP, INF)