WORST_CASE(Omega(n^1),?) proof of input_JK5EPmfCaW.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 193 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) typed CpxTrs (11) OrderProof [LOWER BOUND(ID), 17 ms] (12) typed CpxTrs (13) RewriteLemmaProof [LOWER BOUND(ID), 3008 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 3597 ms] (16) BEST (17) proven lower bound (18) LowerBoundPropagationProof [FINISHED, 0 ms] (19) BOUNDS(n^1, INF) (20) typed CpxTrs (21) RewriteLemmaProof [LOWER BOUND(ID), 71.1 s] (22) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) The (relative) TRS S consists of the following rules: subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: subsets(Cons(x, xs)) -> subsets[Ite][True][Let](Cons(x, xs), subsets(xs)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(x', Cons(x, xs), rest) -> Cons(Cons(x', x), mapconsapp(x', xs, rest)) mapconsapp(x, Nil, rest) -> rest notEmpty(Cons(x, xs)) -> True notEmpty(Nil) -> False goal(xs) -> subsets(xs) The (relative) TRS S consists of the following rules: subsets[Ite][True][Let](Cons(x, xs), subs) -> mapconsapp(x, subs, subs) Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Tuples: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) S tuples: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) K tuples:none Defined Rule Symbols: subsets_1, mapconsapp_3, notEmpty_1, goal_1, subsets[Ite][True][Let]_2 Defined Pair Symbols: SUBSETS[ITE][TRUE][LET]_2, SUBSETS_1, MAPCONSAPP_3, NOTEMPTY_1, GOAL_1 Compound Symbols: c_1, c1_2, c2, c3_1, c4, c5, c6, c7_1 ---------------------------------------- (5) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (6) 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: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) The (relative) TRS S consists of the following rules: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (8) 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: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) The (relative) TRS S consists of the following rules: SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (10) Obligation: Innermost TRS: Rules: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Types: SUBSETS :: Cons:Nil -> c1:c2 Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil c1 :: c -> c1:c2 -> c1:c2 SUBSETS[ITE][TRUE][LET] :: Cons:Nil -> Cons:Nil -> c subsets :: Cons:Nil -> Cons:Nil Nil :: Cons:Nil c2 :: c1:c2 MAPCONSAPP :: Cons:Nil -> Cons:Nil -> Cons:Nil -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c3:c4 NOTEMPTY :: Cons:Nil -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 GOAL :: Cons:Nil -> c7 c7 :: c1:c2 -> c7 c :: c3:c4 -> c subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil hole_c1:c21_8 :: c1:c2 hole_Cons:Nil2_8 :: Cons:Nil hole_c3_8 :: c hole_c3:c44_8 :: c3:c4 hole_c5:c65_8 :: c5:c6 hole_c76_8 :: c7 hole_True:False7_8 :: True:False gen_c1:c28_8 :: Nat -> c1:c2 gen_Cons:Nil9_8 :: Nat -> Cons:Nil gen_c3:c410_8 :: Nat -> c3:c4 ---------------------------------------- (11) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: SUBSETS, subsets, MAPCONSAPP, mapconsapp They will be analysed ascendingly in the following order: subsets < SUBSETS ---------------------------------------- (12) Obligation: Innermost TRS: Rules: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Types: SUBSETS :: Cons:Nil -> c1:c2 Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil c1 :: c -> c1:c2 -> c1:c2 SUBSETS[ITE][TRUE][LET] :: Cons:Nil -> Cons:Nil -> c subsets :: Cons:Nil -> Cons:Nil Nil :: Cons:Nil c2 :: c1:c2 MAPCONSAPP :: Cons:Nil -> Cons:Nil -> Cons:Nil -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c3:c4 NOTEMPTY :: Cons:Nil -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 GOAL :: Cons:Nil -> c7 c7 :: c1:c2 -> c7 c :: c3:c4 -> c subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil hole_c1:c21_8 :: c1:c2 hole_Cons:Nil2_8 :: Cons:Nil hole_c3_8 :: c hole_c3:c44_8 :: c3:c4 hole_c5:c65_8 :: c5:c6 hole_c76_8 :: c7 hole_True:False7_8 :: True:False gen_c1:c28_8 :: Nat -> c1:c2 gen_Cons:Nil9_8 :: Nat -> Cons:Nil gen_c3:c410_8 :: Nat -> c3:c4 Generator Equations: gen_c1:c28_8(0) <=> c2 gen_c1:c28_8(+(x, 1)) <=> c1(c(c4), gen_c1:c28_8(x)) gen_Cons:Nil9_8(0) <=> Nil gen_Cons:Nil9_8(+(x, 1)) <=> Cons(Nil, gen_Cons:Nil9_8(x)) gen_c3:c410_8(0) <=> c4 gen_c3:c410_8(+(x, 1)) <=> c3(gen_c3:c410_8(x)) The following defined symbols remain to be analysed: subsets, SUBSETS, MAPCONSAPP, mapconsapp They will be analysed ascendingly in the following order: subsets < SUBSETS ---------------------------------------- (13) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: subsets(gen_Cons:Nil9_8(+(1, n12_8))) -> *11_8, rt in Omega(0) Induction Base: subsets(gen_Cons:Nil9_8(+(1, 0))) Induction Step: subsets(gen_Cons:Nil9_8(+(1, +(n12_8, 1)))) ->_R^Omega(0) subsets[Ite][True][Let](Cons(Nil, gen_Cons:Nil9_8(+(1, n12_8))), subsets(gen_Cons:Nil9_8(+(1, n12_8)))) ->_IH subsets[Ite][True][Let](Cons(Nil, gen_Cons:Nil9_8(+(1, n12_8))), *11_8) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (14) Obligation: Innermost TRS: Rules: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Types: SUBSETS :: Cons:Nil -> c1:c2 Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil c1 :: c -> c1:c2 -> c1:c2 SUBSETS[ITE][TRUE][LET] :: Cons:Nil -> Cons:Nil -> c subsets :: Cons:Nil -> Cons:Nil Nil :: Cons:Nil c2 :: c1:c2 MAPCONSAPP :: Cons:Nil -> Cons:Nil -> Cons:Nil -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c3:c4 NOTEMPTY :: Cons:Nil -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 GOAL :: Cons:Nil -> c7 c7 :: c1:c2 -> c7 c :: c3:c4 -> c subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil hole_c1:c21_8 :: c1:c2 hole_Cons:Nil2_8 :: Cons:Nil hole_c3_8 :: c hole_c3:c44_8 :: c3:c4 hole_c5:c65_8 :: c5:c6 hole_c76_8 :: c7 hole_True:False7_8 :: True:False gen_c1:c28_8 :: Nat -> c1:c2 gen_Cons:Nil9_8 :: Nat -> Cons:Nil gen_c3:c410_8 :: Nat -> c3:c4 Lemmas: subsets(gen_Cons:Nil9_8(+(1, n12_8))) -> *11_8, rt in Omega(0) Generator Equations: gen_c1:c28_8(0) <=> c2 gen_c1:c28_8(+(x, 1)) <=> c1(c(c4), gen_c1:c28_8(x)) gen_Cons:Nil9_8(0) <=> Nil gen_Cons:Nil9_8(+(x, 1)) <=> Cons(Nil, gen_Cons:Nil9_8(x)) gen_c3:c410_8(0) <=> c4 gen_c3:c410_8(+(x, 1)) <=> c3(gen_c3:c410_8(x)) The following defined symbols remain to be analysed: SUBSETS, MAPCONSAPP, mapconsapp ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MAPCONSAPP(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(n118997_8), gen_Cons:Nil9_8(c)) -> gen_c3:c410_8(n118997_8), rt in Omega(1 + n118997_8) Induction Base: MAPCONSAPP(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(0), gen_Cons:Nil9_8(c)) ->_R^Omega(1) c4 Induction Step: MAPCONSAPP(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(+(n118997_8, 1)), gen_Cons:Nil9_8(c)) ->_R^Omega(1) c3(MAPCONSAPP(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(n118997_8), gen_Cons:Nil9_8(c))) ->_IH c3(gen_c3:c410_8(c118998_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (16) Complex Obligation (BEST) ---------------------------------------- (17) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Types: SUBSETS :: Cons:Nil -> c1:c2 Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil c1 :: c -> c1:c2 -> c1:c2 SUBSETS[ITE][TRUE][LET] :: Cons:Nil -> Cons:Nil -> c subsets :: Cons:Nil -> Cons:Nil Nil :: Cons:Nil c2 :: c1:c2 MAPCONSAPP :: Cons:Nil -> Cons:Nil -> Cons:Nil -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c3:c4 NOTEMPTY :: Cons:Nil -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 GOAL :: Cons:Nil -> c7 c7 :: c1:c2 -> c7 c :: c3:c4 -> c subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil hole_c1:c21_8 :: c1:c2 hole_Cons:Nil2_8 :: Cons:Nil hole_c3_8 :: c hole_c3:c44_8 :: c3:c4 hole_c5:c65_8 :: c5:c6 hole_c76_8 :: c7 hole_True:False7_8 :: True:False gen_c1:c28_8 :: Nat -> c1:c2 gen_Cons:Nil9_8 :: Nat -> Cons:Nil gen_c3:c410_8 :: Nat -> c3:c4 Lemmas: subsets(gen_Cons:Nil9_8(+(1, n12_8))) -> *11_8, rt in Omega(0) Generator Equations: gen_c1:c28_8(0) <=> c2 gen_c1:c28_8(+(x, 1)) <=> c1(c(c4), gen_c1:c28_8(x)) gen_Cons:Nil9_8(0) <=> Nil gen_Cons:Nil9_8(+(x, 1)) <=> Cons(Nil, gen_Cons:Nil9_8(x)) gen_c3:c410_8(0) <=> c4 gen_c3:c410_8(+(x, 1)) <=> c3(gen_c3:c410_8(x)) The following defined symbols remain to be analysed: MAPCONSAPP, mapconsapp ---------------------------------------- (18) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (19) BOUNDS(n^1, INF) ---------------------------------------- (20) Obligation: Innermost TRS: Rules: SUBSETS(Cons(z0, z1)) -> c1(SUBSETS[ITE][TRUE][LET](Cons(z0, z1), subsets(z1)), SUBSETS(z1)) SUBSETS(Nil) -> c2 MAPCONSAPP(z0, Cons(z1, z2), z3) -> c3(MAPCONSAPP(z0, z2, z3)) MAPCONSAPP(z0, Nil, z1) -> c4 NOTEMPTY(Cons(z0, z1)) -> c5 NOTEMPTY(Nil) -> c6 GOAL(z0) -> c7(SUBSETS(z0)) SUBSETS[ITE][TRUE][LET](Cons(z0, z1), z2) -> c(MAPCONSAPP(z0, z2, z2)) subsets[Ite][True][Let](Cons(z0, z1), z2) -> mapconsapp(z0, z2, z2) subsets(Cons(z0, z1)) -> subsets[Ite][True][Let](Cons(z0, z1), subsets(z1)) subsets(Nil) -> Cons(Nil, Nil) mapconsapp(z0, Cons(z1, z2), z3) -> Cons(Cons(z0, z1), mapconsapp(z0, z2, z3)) mapconsapp(z0, Nil, z1) -> z1 notEmpty(Cons(z0, z1)) -> True notEmpty(Nil) -> False goal(z0) -> subsets(z0) Types: SUBSETS :: Cons:Nil -> c1:c2 Cons :: Cons:Nil -> Cons:Nil -> Cons:Nil c1 :: c -> c1:c2 -> c1:c2 SUBSETS[ITE][TRUE][LET] :: Cons:Nil -> Cons:Nil -> c subsets :: Cons:Nil -> Cons:Nil Nil :: Cons:Nil c2 :: c1:c2 MAPCONSAPP :: Cons:Nil -> Cons:Nil -> Cons:Nil -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c3:c4 NOTEMPTY :: Cons:Nil -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 GOAL :: Cons:Nil -> c7 c7 :: c1:c2 -> c7 c :: c3:c4 -> c subsets[Ite][True][Let] :: Cons:Nil -> Cons:Nil -> Cons:Nil mapconsapp :: Cons:Nil -> Cons:Nil -> Cons:Nil -> Cons:Nil notEmpty :: Cons:Nil -> True:False True :: True:False False :: True:False goal :: Cons:Nil -> Cons:Nil hole_c1:c21_8 :: c1:c2 hole_Cons:Nil2_8 :: Cons:Nil hole_c3_8 :: c hole_c3:c44_8 :: c3:c4 hole_c5:c65_8 :: c5:c6 hole_c76_8 :: c7 hole_True:False7_8 :: True:False gen_c1:c28_8 :: Nat -> c1:c2 gen_Cons:Nil9_8 :: Nat -> Cons:Nil gen_c3:c410_8 :: Nat -> c3:c4 Lemmas: subsets(gen_Cons:Nil9_8(+(1, n12_8))) -> *11_8, rt in Omega(0) MAPCONSAPP(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(n118997_8), gen_Cons:Nil9_8(c)) -> gen_c3:c410_8(n118997_8), rt in Omega(1 + n118997_8) Generator Equations: gen_c1:c28_8(0) <=> c2 gen_c1:c28_8(+(x, 1)) <=> c1(c(c4), gen_c1:c28_8(x)) gen_Cons:Nil9_8(0) <=> Nil gen_Cons:Nil9_8(+(x, 1)) <=> Cons(Nil, gen_Cons:Nil9_8(x)) gen_c3:c410_8(0) <=> c4 gen_c3:c410_8(+(x, 1)) <=> c3(gen_c3:c410_8(x)) The following defined symbols remain to be analysed: mapconsapp ---------------------------------------- (21) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: mapconsapp(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(+(1, n119855_8)), gen_Cons:Nil9_8(c)) -> *11_8, rt in Omega(0) Induction Base: mapconsapp(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(+(1, 0)), gen_Cons:Nil9_8(c)) Induction Step: mapconsapp(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(+(1, +(n119855_8, 1))), gen_Cons:Nil9_8(c)) ->_R^Omega(0) Cons(Cons(gen_Cons:Nil9_8(a), Nil), mapconsapp(gen_Cons:Nil9_8(a), gen_Cons:Nil9_8(+(1, n119855_8)), gen_Cons:Nil9_8(c))) ->_IH Cons(Cons(gen_Cons:Nil9_8(a), Nil), *11_8) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (22) BOUNDS(1, INF)