WORST_CASE(Omega(n^1),?) proof of /export/starexec/sandbox/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) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 1396 ms] (2) CpxRelTRS (3) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxRelTRS (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (6) typed CpxTrs (7) OrderProof [LOWER BOUND(ID), 5 ms] (8) typed CpxTrs (9) RewriteLemmaProof [LOWER BOUND(ID), 289 ms] (10) BEST (11) proven lower bound (12) LowerBoundPropagationProof [FINISHED, 0 ms] (13) BOUNDS(n^1, INF) (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 97 ms] (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 7104 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 195 ms] (20) BOUNDS(1, INF) ---------------------------------------- (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: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) The (relative) TRS S consists of the following rules: isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (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: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) The (relative) TRS S consists of the following rules: isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (3) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (4) 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: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) The (relative) TRS S consists of the following rules: isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (6) Obligation: Innermost TRS: Rules: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 ---------------------------------------- (7) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: CONCAT, LESS_LEAVES, concat, less_leaves They will be analysed ascendingly in the following order: CONCAT < LESS_LEAVES concat < LESS_LEAVES concat < less_leaves ---------------------------------------- (8) Obligation: Innermost TRS: Rules: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 Generator Equations: gen_leaf:cons10_15(0) <=> leaf gen_leaf:cons10_15(+(x, 1)) <=> cons(leaf, gen_leaf:cons10_15(x)) gen_c4:c511_15(0) <=> c4 gen_c4:c511_15(+(x, 1)) <=> c5(gen_c4:c511_15(x)) The following defined symbols remain to be analysed: CONCAT, LESS_LEAVES, concat, less_leaves They will be analysed ascendingly in the following order: CONCAT < LESS_LEAVES concat < LESS_LEAVES concat < less_leaves ---------------------------------------- (9) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: CONCAT(gen_leaf:cons10_15(n13_15), gen_leaf:cons10_15(b)) -> gen_c4:c511_15(n13_15), rt in Omega(1 + n13_15) Induction Base: CONCAT(gen_leaf:cons10_15(0), gen_leaf:cons10_15(b)) ->_R^Omega(1) c4 Induction Step: CONCAT(gen_leaf:cons10_15(+(n13_15, 1)), gen_leaf:cons10_15(b)) ->_R^Omega(1) c5(CONCAT(gen_leaf:cons10_15(n13_15), gen_leaf:cons10_15(b))) ->_IH c5(gen_c4:c511_15(c14_15)) 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: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 Generator Equations: gen_leaf:cons10_15(0) <=> leaf gen_leaf:cons10_15(+(x, 1)) <=> cons(leaf, gen_leaf:cons10_15(x)) gen_c4:c511_15(0) <=> c4 gen_c4:c511_15(+(x, 1)) <=> c5(gen_c4:c511_15(x)) The following defined symbols remain to be analysed: CONCAT, LESS_LEAVES, concat, less_leaves They will be analysed ascendingly in the following order: CONCAT < LESS_LEAVES concat < LESS_LEAVES concat < less_leaves ---------------------------------------- (12) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (13) BOUNDS(n^1, INF) ---------------------------------------- (14) Obligation: Innermost TRS: Rules: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 Lemmas: CONCAT(gen_leaf:cons10_15(n13_15), gen_leaf:cons10_15(b)) -> gen_c4:c511_15(n13_15), rt in Omega(1 + n13_15) Generator Equations: gen_leaf:cons10_15(0) <=> leaf gen_leaf:cons10_15(+(x, 1)) <=> cons(leaf, gen_leaf:cons10_15(x)) gen_c4:c511_15(0) <=> c4 gen_c4:c511_15(+(x, 1)) <=> c5(gen_c4:c511_15(x)) The following defined symbols remain to be analysed: concat, LESS_LEAVES, less_leaves They will be analysed ascendingly in the following order: concat < LESS_LEAVES concat < less_leaves ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: concat(gen_leaf:cons10_15(n632_15), gen_leaf:cons10_15(b)) -> gen_leaf:cons10_15(+(n632_15, b)), rt in Omega(0) Induction Base: concat(gen_leaf:cons10_15(0), gen_leaf:cons10_15(b)) ->_R^Omega(0) gen_leaf:cons10_15(b) Induction Step: concat(gen_leaf:cons10_15(+(n632_15, 1)), gen_leaf:cons10_15(b)) ->_R^Omega(0) cons(leaf, concat(gen_leaf:cons10_15(n632_15), gen_leaf:cons10_15(b))) ->_IH cons(leaf, gen_leaf:cons10_15(+(b, c633_15))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (16) Obligation: Innermost TRS: Rules: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 Lemmas: CONCAT(gen_leaf:cons10_15(n13_15), gen_leaf:cons10_15(b)) -> gen_c4:c511_15(n13_15), rt in Omega(1 + n13_15) concat(gen_leaf:cons10_15(n632_15), gen_leaf:cons10_15(b)) -> gen_leaf:cons10_15(+(n632_15, b)), rt in Omega(0) Generator Equations: gen_leaf:cons10_15(0) <=> leaf gen_leaf:cons10_15(+(x, 1)) <=> cons(leaf, gen_leaf:cons10_15(x)) gen_c4:c511_15(0) <=> c4 gen_c4:c511_15(+(x, 1)) <=> c5(gen_c4:c511_15(x)) The following defined symbols remain to be analysed: LESS_LEAVES, less_leaves ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: LESS_LEAVES(gen_leaf:cons10_15(n1597_15), gen_leaf:cons10_15(n1597_15)) -> *12_15, rt in Omega(n1597_15) Induction Base: LESS_LEAVES(gen_leaf:cons10_15(0), gen_leaf:cons10_15(0)) Induction Step: LESS_LEAVES(gen_leaf:cons10_15(+(n1597_15, 1)), gen_leaf:cons10_15(+(n1597_15, 1))) ->_R^Omega(1) c6(IF1(isLeaf(gen_leaf:cons10_15(+(n1597_15, 1))), isLeaf(gen_leaf:cons10_15(+(n1597_15, 1))), gen_leaf:cons10_15(+(n1597_15, 1)), gen_leaf:cons10_15(+(n1597_15, 1))), ISLEAF(gen_leaf:cons10_15(+(n1597_15, 1)))) ->_R^Omega(0) c6(IF1(false, isLeaf(gen_leaf:cons10_15(+(1, n1597_15))), gen_leaf:cons10_15(+(1, n1597_15)), gen_leaf:cons10_15(+(1, n1597_15))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(IF1(false, false, gen_leaf:cons10_15(+(1, n1597_15)), gen_leaf:cons10_15(+(1, n1597_15))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(1) c6(c9(IF2(false, gen_leaf:cons10_15(+(1, n1597_15)), gen_leaf:cons10_15(+(1, n1597_15)))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(1) c6(c9(c11(LESS_LEAVES(concat(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), concat(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15))))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(LESS_LEAVES(concat(leaf, right(gen_leaf:cons10_15(+(1, n1597_15)))), concat(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15))))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(LESS_LEAVES(concat(leaf, gen_leaf:cons10_15(n1597_15)), concat(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15))))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_L^Omega(0) c6(c9(c11(LESS_LEAVES(gen_leaf:cons10_15(+(0, n1597_15)), concat(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15))))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(LESS_LEAVES(gen_leaf:cons10_15(n1597_15), concat(leaf, right(gen_leaf:cons10_15(+(1, n1597_15))))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(LESS_LEAVES(gen_leaf:cons10_15(n1597_15), concat(leaf, gen_leaf:cons10_15(n1597_15))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_L^Omega(0) c6(c9(c11(LESS_LEAVES(gen_leaf:cons10_15(n1597_15), gen_leaf:cons10_15(+(0, n1597_15))), CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_IH c6(c9(c11(*12_15, CONCAT(left(gen_leaf:cons10_15(+(1, n1597_15))), right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(*12_15, CONCAT(leaf, right(gen_leaf:cons10_15(+(1, n1597_15)))), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(0) c6(c9(c11(*12_15, CONCAT(leaf, gen_leaf:cons10_15(n1597_15)), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_L^Omega(1) c6(c9(c11(*12_15, gen_c4:c511_15(0), LEFT(gen_leaf:cons10_15(+(1, n1597_15))))), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(1) c6(c9(c11(*12_15, gen_c4:c511_15(0), c2)), ISLEAF(gen_leaf:cons10_15(+(1, n1597_15)))) ->_R^Omega(1) c6(c9(c11(*12_15, gen_c4:c511_15(0), c2)), c1) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (18) Obligation: Innermost TRS: Rules: ISLEAF(leaf) -> c ISLEAF(cons(z0, z1)) -> c1 LEFT(cons(z0, z1)) -> c2 RIGHT(cons(z0, z1)) -> c3 CONCAT(leaf, z0) -> c4 CONCAT(cons(z0, z1), z2) -> c5(CONCAT(z1, z2)) LESS_LEAVES(z0, z1) -> c6(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z0)) LESS_LEAVES(z0, z1) -> c7(IF1(isLeaf(z0), isLeaf(z1), z0, z1), ISLEAF(z1)) IF1(z0, true, z1, z2) -> c8 IF1(z0, false, z1, z2) -> c9(IF2(z0, z1, z2)) IF2(true, z0, z1) -> c10 IF2(false, z0, z1) -> c11(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), LEFT(z0)) IF2(false, z0, z1) -> c12(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z0), right(z0)), RIGHT(z0)) IF2(false, z0, z1) -> c13(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), LEFT(z1)) IF2(false, z0, z1) -> c14(LESS_LEAVES(concat(left(z0), right(z0)), concat(left(z1), right(z1))), CONCAT(left(z1), right(z1)), RIGHT(z1)) isLeaf(leaf) -> true isLeaf(cons(z0, z1)) -> false left(cons(z0, z1)) -> z0 right(cons(z0, z1)) -> z1 concat(leaf, z0) -> z0 concat(cons(z0, z1), z2) -> cons(z0, concat(z1, z2)) less_leaves(z0, z1) -> if1(isLeaf(z0), isLeaf(z1), z0, z1) if1(z0, true, z1, z2) -> false if1(z0, false, z1, z2) -> if2(z0, z1, z2) if2(true, z0, z1) -> true if2(false, z0, z1) -> less_leaves(concat(left(z0), right(z0)), concat(left(z1), right(z1))) Types: ISLEAF :: leaf:cons -> c:c1 leaf :: leaf:cons c :: c:c1 cons :: leaf:cons -> leaf:cons -> leaf:cons c1 :: c:c1 LEFT :: leaf:cons -> c2 c2 :: c2 RIGHT :: leaf:cons -> c3 c3 :: c3 CONCAT :: leaf:cons -> leaf:cons -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 -> c4:c5 LESS_LEAVES :: leaf:cons -> leaf:cons -> c6:c7 c6 :: c8:c9 -> c:c1 -> c6:c7 IF1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> c8:c9 isLeaf :: leaf:cons -> true:false c7 :: c8:c9 -> c:c1 -> c6:c7 true :: true:false c8 :: c8:c9 false :: true:false c9 :: c10:c11:c12:c13:c14 -> c8:c9 IF2 :: true:false -> leaf:cons -> leaf:cons -> c10:c11:c12:c13:c14 c10 :: c10:c11:c12:c13:c14 c11 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 concat :: leaf:cons -> leaf:cons -> leaf:cons left :: leaf:cons -> leaf:cons right :: leaf:cons -> leaf:cons c12 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 c13 :: c6:c7 -> c4:c5 -> c2 -> c10:c11:c12:c13:c14 c14 :: c6:c7 -> c4:c5 -> c3 -> c10:c11:c12:c13:c14 less_leaves :: leaf:cons -> leaf:cons -> true:false if1 :: true:false -> true:false -> leaf:cons -> leaf:cons -> true:false if2 :: true:false -> leaf:cons -> leaf:cons -> true:false hole_c:c11_15 :: c:c1 hole_leaf:cons2_15 :: leaf:cons hole_c23_15 :: c2 hole_c34_15 :: c3 hole_c4:c55_15 :: c4:c5 hole_c6:c76_15 :: c6:c7 hole_c8:c97_15 :: c8:c9 hole_true:false8_15 :: true:false hole_c10:c11:c12:c13:c149_15 :: c10:c11:c12:c13:c14 gen_leaf:cons10_15 :: Nat -> leaf:cons gen_c4:c511_15 :: Nat -> c4:c5 Lemmas: CONCAT(gen_leaf:cons10_15(n13_15), gen_leaf:cons10_15(b)) -> gen_c4:c511_15(n13_15), rt in Omega(1 + n13_15) concat(gen_leaf:cons10_15(n632_15), gen_leaf:cons10_15(b)) -> gen_leaf:cons10_15(+(n632_15, b)), rt in Omega(0) LESS_LEAVES(gen_leaf:cons10_15(n1597_15), gen_leaf:cons10_15(n1597_15)) -> *12_15, rt in Omega(n1597_15) Generator Equations: gen_leaf:cons10_15(0) <=> leaf gen_leaf:cons10_15(+(x, 1)) <=> cons(leaf, gen_leaf:cons10_15(x)) gen_c4:c511_15(0) <=> c4 gen_c4:c511_15(+(x, 1)) <=> c5(gen_c4:c511_15(x)) The following defined symbols remain to be analysed: less_leaves ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: less_leaves(gen_leaf:cons10_15(+(1, n143783_15)), gen_leaf:cons10_15(n143783_15)) -> false, rt in Omega(0) Induction Base: less_leaves(gen_leaf:cons10_15(+(1, 0)), gen_leaf:cons10_15(0)) ->_R^Omega(0) if1(isLeaf(gen_leaf:cons10_15(+(1, 0))), isLeaf(gen_leaf:cons10_15(0)), gen_leaf:cons10_15(+(1, 0)), gen_leaf:cons10_15(0)) ->_R^Omega(0) if1(false, isLeaf(gen_leaf:cons10_15(0)), gen_leaf:cons10_15(1), gen_leaf:cons10_15(0)) ->_R^Omega(0) if1(false, true, gen_leaf:cons10_15(1), gen_leaf:cons10_15(0)) ->_R^Omega(0) false Induction Step: less_leaves(gen_leaf:cons10_15(+(1, +(n143783_15, 1))), gen_leaf:cons10_15(+(n143783_15, 1))) ->_R^Omega(0) if1(isLeaf(gen_leaf:cons10_15(+(1, +(n143783_15, 1)))), isLeaf(gen_leaf:cons10_15(+(n143783_15, 1))), gen_leaf:cons10_15(+(1, +(n143783_15, 1))), gen_leaf:cons10_15(+(n143783_15, 1))) ->_R^Omega(0) if1(false, isLeaf(gen_leaf:cons10_15(+(1, n143783_15))), gen_leaf:cons10_15(+(2, n143783_15)), gen_leaf:cons10_15(+(1, n143783_15))) ->_R^Omega(0) if1(false, false, gen_leaf:cons10_15(+(2, n143783_15)), gen_leaf:cons10_15(+(1, n143783_15))) ->_R^Omega(0) if2(false, gen_leaf:cons10_15(+(2, n143783_15)), gen_leaf:cons10_15(+(1, n143783_15))) ->_R^Omega(0) less_leaves(concat(left(gen_leaf:cons10_15(+(2, n143783_15))), right(gen_leaf:cons10_15(+(2, n143783_15)))), concat(left(gen_leaf:cons10_15(+(1, n143783_15))), right(gen_leaf:cons10_15(+(1, n143783_15))))) ->_R^Omega(0) less_leaves(concat(leaf, right(gen_leaf:cons10_15(+(2, n143783_15)))), concat(left(gen_leaf:cons10_15(+(1, n143783_15))), right(gen_leaf:cons10_15(+(1, n143783_15))))) ->_R^Omega(0) less_leaves(concat(leaf, gen_leaf:cons10_15(+(1, n143783_15))), concat(left(gen_leaf:cons10_15(+(1, n143783_15))), right(gen_leaf:cons10_15(+(1, n143783_15))))) ->_L^Omega(0) less_leaves(gen_leaf:cons10_15(+(0, +(1, n143783_15))), concat(left(gen_leaf:cons10_15(+(1, n143783_15))), right(gen_leaf:cons10_15(+(1, n143783_15))))) ->_R^Omega(0) less_leaves(gen_leaf:cons10_15(+(1, n143783_15)), concat(leaf, right(gen_leaf:cons10_15(+(1, n143783_15))))) ->_R^Omega(0) less_leaves(gen_leaf:cons10_15(+(1, n143783_15)), concat(leaf, gen_leaf:cons10_15(n143783_15))) ->_L^Omega(0) less_leaves(gen_leaf:cons10_15(+(1, n143783_15)), gen_leaf:cons10_15(+(0, n143783_15))) ->_IH false We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (20) BOUNDS(1, INF)