WORST_CASE(Omega(n^1),?) proof of /export/starexec/sandbox2/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, INF). (0) CpxRelTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (4) typed CpxTrs (5) OrderProof [LOWER BOUND(ID), 38 ms] (6) typed CpxTrs (7) RewriteLemmaProof [LOWER BOUND(ID), 1405 ms] (8) typed CpxTrs (9) RewriteLemmaProof [LOWER BOUND(ID), 2807 ms] (10) BEST (11) proven lower bound (12) LowerBoundPropagationProof [FINISHED, 0 ms] (13) BOUNDS(n^1, INF) (14) typed CpxTrs ---------------------------------------- (0) 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: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0, z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0) -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) The (relative) TRS S consists of the following rules: a__zeros -> cons(0, zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0 a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0, z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0) -> 0 mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) 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: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) The (relative) TRS S consists of the following rules: a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (4) Obligation: Innermost TRS: Rules: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Types: A__ZEROS :: c:c1 c :: c:c1 c1 :: c:c1 A__AND :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c2:c3 tt :: tt:nil:cons:0':s:zeros:and:length:take c2 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c2:c3 MARK :: tt:nil:cons:0':s:zeros:and:length:take -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c3 :: c2:c3 A__LENGTH :: tt:nil:cons:0':s:zeros:and:length:take -> c4:c5:c6 nil :: tt:nil:cons:0':s:zeros:and:length:take c4 :: c4:c5:c6 cons :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c5 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c4:c5:c6 mark :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c6 :: c4:c5:c6 A__TAKE :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c7:c8:c9 0' :: tt:nil:cons:0':s:zeros:and:length:take c7 :: c7:c8:c9 s :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c8 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c7:c8:c9 c9 :: c7:c8:c9 zeros :: tt:nil:cons:0':s:zeros:and:length:take c10 :: c:c1 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c11 :: c2:c3 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c12 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c13 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c14 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c15 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c16 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c17 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c18 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c19 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 a__zeros :: tt:nil:cons:0':s:zeros:and:length:take a__and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take hole_c:c11_20 :: c:c1 hole_c2:c32_20 :: c2:c3 hole_tt:nil:cons:0':s:zeros:and:length:take3_20 :: tt:nil:cons:0':s:zeros:and:length:take hole_c10:c11:c12:c13:c14:c15:c16:c17:c18:c194_20 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 hole_c4:c5:c65_20 :: c4:c5:c6 hole_c7:c8:c96_20 :: c7:c8:c9 gen_tt:nil:cons:0':s:zeros:and:length:take7_20 :: Nat -> tt:nil:cons:0':s:zeros:and:length:take gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20 :: Nat -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 gen_c4:c5:c69_20 :: Nat -> c4:c5:c6 ---------------------------------------- (5) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: MARK, A__LENGTH, mark, a__length They will be analysed ascendingly in the following order: MARK = A__LENGTH mark < MARK mark < A__LENGTH mark = a__length ---------------------------------------- (6) Obligation: Innermost TRS: Rules: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Types: A__ZEROS :: c:c1 c :: c:c1 c1 :: c:c1 A__AND :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c2:c3 tt :: tt:nil:cons:0':s:zeros:and:length:take c2 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c2:c3 MARK :: tt:nil:cons:0':s:zeros:and:length:take -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c3 :: c2:c3 A__LENGTH :: tt:nil:cons:0':s:zeros:and:length:take -> c4:c5:c6 nil :: tt:nil:cons:0':s:zeros:and:length:take c4 :: c4:c5:c6 cons :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c5 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c4:c5:c6 mark :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c6 :: c4:c5:c6 A__TAKE :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c7:c8:c9 0' :: tt:nil:cons:0':s:zeros:and:length:take c7 :: c7:c8:c9 s :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c8 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c7:c8:c9 c9 :: c7:c8:c9 zeros :: tt:nil:cons:0':s:zeros:and:length:take c10 :: c:c1 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c11 :: c2:c3 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c12 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c13 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c14 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c15 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c16 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c17 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c18 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c19 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 a__zeros :: tt:nil:cons:0':s:zeros:and:length:take a__and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take hole_c:c11_20 :: c:c1 hole_c2:c32_20 :: c2:c3 hole_tt:nil:cons:0':s:zeros:and:length:take3_20 :: tt:nil:cons:0':s:zeros:and:length:take hole_c10:c11:c12:c13:c14:c15:c16:c17:c18:c194_20 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 hole_c4:c5:c65_20 :: c4:c5:c6 hole_c7:c8:c96_20 :: c7:c8:c9 gen_tt:nil:cons:0':s:zeros:and:length:take7_20 :: Nat -> tt:nil:cons:0':s:zeros:and:length:take gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20 :: Nat -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 gen_c4:c5:c69_20 :: Nat -> c4:c5:c6 Generator Equations: gen_tt:nil:cons:0':s:zeros:and:length:take7_20(0) <=> tt gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(x, 1)) <=> cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(x)) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(0) <=> c10(c) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(+(x, 1)) <=> c11(c2(c10(c)), gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(x)) gen_c4:c5:c69_20(0) <=> c4 gen_c4:c5:c69_20(+(x, 1)) <=> c5(gen_c4:c5:c69_20(x), c10(c)) The following defined symbols remain to be analysed: a__length, MARK, A__LENGTH, mark They will be analysed ascendingly in the following order: MARK = A__LENGTH mark < MARK mark < A__LENGTH mark = a__length ---------------------------------------- (7) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n11_20))) -> *10_20, rt in Omega(0) Induction Base: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, 0))) Induction Step: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, +(n11_20, 1)))) ->_R^Omega(0) s(a__length(mark(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n11_20))))) ->_R^Omega(0) s(a__length(cons(mark(tt), gen_tt:nil:cons:0':s:zeros:and:length:take7_20(n11_20)))) ->_R^Omega(0) s(a__length(cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(n11_20)))) ->_IH s(*10_20) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (8) Obligation: Innermost TRS: Rules: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Types: A__ZEROS :: c:c1 c :: c:c1 c1 :: c:c1 A__AND :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c2:c3 tt :: tt:nil:cons:0':s:zeros:and:length:take c2 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c2:c3 MARK :: tt:nil:cons:0':s:zeros:and:length:take -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c3 :: c2:c3 A__LENGTH :: tt:nil:cons:0':s:zeros:and:length:take -> c4:c5:c6 nil :: tt:nil:cons:0':s:zeros:and:length:take c4 :: c4:c5:c6 cons :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c5 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c4:c5:c6 mark :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c6 :: c4:c5:c6 A__TAKE :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c7:c8:c9 0' :: tt:nil:cons:0':s:zeros:and:length:take c7 :: c7:c8:c9 s :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c8 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c7:c8:c9 c9 :: c7:c8:c9 zeros :: tt:nil:cons:0':s:zeros:and:length:take c10 :: c:c1 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c11 :: c2:c3 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c12 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c13 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c14 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c15 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c16 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c17 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c18 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c19 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 a__zeros :: tt:nil:cons:0':s:zeros:and:length:take a__and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take hole_c:c11_20 :: c:c1 hole_c2:c32_20 :: c2:c3 hole_tt:nil:cons:0':s:zeros:and:length:take3_20 :: tt:nil:cons:0':s:zeros:and:length:take hole_c10:c11:c12:c13:c14:c15:c16:c17:c18:c194_20 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 hole_c4:c5:c65_20 :: c4:c5:c6 hole_c7:c8:c96_20 :: c7:c8:c9 gen_tt:nil:cons:0':s:zeros:and:length:take7_20 :: Nat -> tt:nil:cons:0':s:zeros:and:length:take gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20 :: Nat -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 gen_c4:c5:c69_20 :: Nat -> c4:c5:c6 Lemmas: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n11_20))) -> *10_20, rt in Omega(0) Generator Equations: gen_tt:nil:cons:0':s:zeros:and:length:take7_20(0) <=> tt gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(x, 1)) <=> cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(x)) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(0) <=> c10(c) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(+(x, 1)) <=> c11(c2(c10(c)), gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(x)) gen_c4:c5:c69_20(0) <=> c4 gen_c4:c5:c69_20(+(x, 1)) <=> c5(gen_c4:c5:c69_20(x), c10(c)) The following defined symbols remain to be analysed: mark, MARK, A__LENGTH They will be analysed ascendingly in the following order: MARK = A__LENGTH mark < MARK mark < A__LENGTH mark = a__length ---------------------------------------- (9) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: A__LENGTH(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20))) -> *10_20, rt in Omega(n39957_20) Induction Base: A__LENGTH(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, 0))) Induction Step: A__LENGTH(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, +(n39957_20, 1)))) ->_R^Omega(1) c5(A__LENGTH(mark(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20)))), MARK(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20)))) ->_R^Omega(0) c5(A__LENGTH(cons(mark(tt), gen_tt:nil:cons:0':s:zeros:and:length:take7_20(n39957_20))), MARK(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20)))) ->_R^Omega(0) c5(A__LENGTH(cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(n39957_20))), MARK(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20)))) ->_IH c5(*10_20, MARK(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20)))) ->_R^Omega(1) c5(*10_20, c15(MARK(tt))) ->_R^Omega(1) c5(*10_20, c15(c17)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (10) Complex Obligation (BEST) ---------------------------------------- (11) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Types: A__ZEROS :: c:c1 c :: c:c1 c1 :: c:c1 A__AND :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c2:c3 tt :: tt:nil:cons:0':s:zeros:and:length:take c2 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c2:c3 MARK :: tt:nil:cons:0':s:zeros:and:length:take -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c3 :: c2:c3 A__LENGTH :: tt:nil:cons:0':s:zeros:and:length:take -> c4:c5:c6 nil :: tt:nil:cons:0':s:zeros:and:length:take c4 :: c4:c5:c6 cons :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c5 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c4:c5:c6 mark :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c6 :: c4:c5:c6 A__TAKE :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c7:c8:c9 0' :: tt:nil:cons:0':s:zeros:and:length:take c7 :: c7:c8:c9 s :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c8 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c7:c8:c9 c9 :: c7:c8:c9 zeros :: tt:nil:cons:0':s:zeros:and:length:take c10 :: c:c1 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c11 :: c2:c3 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c12 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c13 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c14 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c15 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c16 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c17 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c18 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c19 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 a__zeros :: tt:nil:cons:0':s:zeros:and:length:take a__and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take hole_c:c11_20 :: c:c1 hole_c2:c32_20 :: c2:c3 hole_tt:nil:cons:0':s:zeros:and:length:take3_20 :: tt:nil:cons:0':s:zeros:and:length:take hole_c10:c11:c12:c13:c14:c15:c16:c17:c18:c194_20 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 hole_c4:c5:c65_20 :: c4:c5:c6 hole_c7:c8:c96_20 :: c7:c8:c9 gen_tt:nil:cons:0':s:zeros:and:length:take7_20 :: Nat -> tt:nil:cons:0':s:zeros:and:length:take gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20 :: Nat -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 gen_c4:c5:c69_20 :: Nat -> c4:c5:c6 Lemmas: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n11_20))) -> *10_20, rt in Omega(0) Generator Equations: gen_tt:nil:cons:0':s:zeros:and:length:take7_20(0) <=> tt gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(x, 1)) <=> cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(x)) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(0) <=> c10(c) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(+(x, 1)) <=> c11(c2(c10(c)), gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(x)) gen_c4:c5:c69_20(0) <=> c4 gen_c4:c5:c69_20(+(x, 1)) <=> c5(gen_c4:c5:c69_20(x), c10(c)) The following defined symbols remain to be analysed: A__LENGTH, MARK They will be analysed ascendingly in the following order: MARK = A__LENGTH ---------------------------------------- (12) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (13) BOUNDS(n^1, INF) ---------------------------------------- (14) Obligation: Innermost TRS: Rules: A__ZEROS -> c A__ZEROS -> c1 A__AND(tt, z0) -> c2(MARK(z0)) A__AND(z0, z1) -> c3 A__LENGTH(nil) -> c4 A__LENGTH(cons(z0, z1)) -> c5(A__LENGTH(mark(z1)), MARK(z1)) A__LENGTH(z0) -> c6 A__TAKE(0', z0) -> c7 A__TAKE(s(z0), cons(z1, z2)) -> c8(MARK(z1)) A__TAKE(z0, z1) -> c9 MARK(zeros) -> c10(A__ZEROS) MARK(and(z0, z1)) -> c11(A__AND(mark(z0), z1), MARK(z0)) MARK(length(z0)) -> c12(A__LENGTH(mark(z0)), MARK(z0)) MARK(take(z0, z1)) -> c13(A__TAKE(mark(z0), mark(z1)), MARK(z0)) MARK(take(z0, z1)) -> c14(A__TAKE(mark(z0), mark(z1)), MARK(z1)) MARK(cons(z0, z1)) -> c15(MARK(z0)) MARK(0') -> c16 MARK(tt) -> c17 MARK(nil) -> c18 MARK(s(z0)) -> c19(MARK(z0)) a__zeros -> cons(0', zeros) a__zeros -> zeros a__and(tt, z0) -> mark(z0) a__and(z0, z1) -> and(z0, z1) a__length(nil) -> 0' a__length(cons(z0, z1)) -> s(a__length(mark(z1))) a__length(z0) -> length(z0) a__take(0', z0) -> nil a__take(s(z0), cons(z1, z2)) -> cons(mark(z1), take(z0, z2)) a__take(z0, z1) -> take(z0, z1) mark(zeros) -> a__zeros mark(and(z0, z1)) -> a__and(mark(z0), z1) mark(length(z0)) -> a__length(mark(z0)) mark(take(z0, z1)) -> a__take(mark(z0), mark(z1)) mark(cons(z0, z1)) -> cons(mark(z0), z1) mark(0') -> 0' mark(tt) -> tt mark(nil) -> nil mark(s(z0)) -> s(mark(z0)) Types: A__ZEROS :: c:c1 c :: c:c1 c1 :: c:c1 A__AND :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c2:c3 tt :: tt:nil:cons:0':s:zeros:and:length:take c2 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c2:c3 MARK :: tt:nil:cons:0':s:zeros:and:length:take -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c3 :: c2:c3 A__LENGTH :: tt:nil:cons:0':s:zeros:and:length:take -> c4:c5:c6 nil :: tt:nil:cons:0':s:zeros:and:length:take c4 :: c4:c5:c6 cons :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c5 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c4:c5:c6 mark :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c6 :: c4:c5:c6 A__TAKE :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> c7:c8:c9 0' :: tt:nil:cons:0':s:zeros:and:length:take c7 :: c7:c8:c9 s :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c8 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c7:c8:c9 c9 :: c7:c8:c9 zeros :: tt:nil:cons:0':s:zeros:and:length:take c10 :: c:c1 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c11 :: c2:c3 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c12 :: c4:c5:c6 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take c13 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c14 :: c7:c8:c9 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c15 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c16 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c17 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c18 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 c19 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 a__zeros :: tt:nil:cons:0':s:zeros:and:length:take a__and :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__length :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take a__take :: tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take -> tt:nil:cons:0':s:zeros:and:length:take hole_c:c11_20 :: c:c1 hole_c2:c32_20 :: c2:c3 hole_tt:nil:cons:0':s:zeros:and:length:take3_20 :: tt:nil:cons:0':s:zeros:and:length:take hole_c10:c11:c12:c13:c14:c15:c16:c17:c18:c194_20 :: c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 hole_c4:c5:c65_20 :: c4:c5:c6 hole_c7:c8:c96_20 :: c7:c8:c9 gen_tt:nil:cons:0':s:zeros:and:length:take7_20 :: Nat -> tt:nil:cons:0':s:zeros:and:length:take gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20 :: Nat -> c10:c11:c12:c13:c14:c15:c16:c17:c18:c19 gen_c4:c5:c69_20 :: Nat -> c4:c5:c6 Lemmas: a__length(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n11_20))) -> *10_20, rt in Omega(0) A__LENGTH(gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(1, n39957_20))) -> *10_20, rt in Omega(n39957_20) Generator Equations: gen_tt:nil:cons:0':s:zeros:and:length:take7_20(0) <=> tt gen_tt:nil:cons:0':s:zeros:and:length:take7_20(+(x, 1)) <=> cons(tt, gen_tt:nil:cons:0':s:zeros:and:length:take7_20(x)) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(0) <=> c10(c) gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(+(x, 1)) <=> c11(c2(c10(c)), gen_c10:c11:c12:c13:c14:c15:c16:c17:c18:c198_20(x)) gen_c4:c5:c69_20(0) <=> c4 gen_c4:c5:c69_20(+(x, 1)) <=> c5(gen_c4:c5:c69_20(x), c10(c)) The following defined symbols remain to be analysed: MARK They will be analysed ascendingly in the following order: MARK = A__LENGTH