WORST_CASE(Omega(n^2),?) proof of input_pLB18o5RGX.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^2, 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), 0 ms] (10) typed CpxTrs (11) RewriteLemmaProof [LOWER BOUND(ID), 281 ms] (12) BEST (13) proven lower bound (14) LowerBoundPropagationProof [FINISHED, 0 ms] (15) BOUNDS(n^1, INF) (16) typed CpxTrs (17) RewriteLemmaProof [LOWER BOUND(ID), 107 ms] (18) typed CpxTrs (19) RewriteLemmaProof [LOWER BOUND(ID), 8884 ms] (20) BEST (21) proven lower bound (22) LowerBoundPropagationProof [FINISHED, 0 ms] (23) BOUNDS(n^2, INF) (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 254 ms] (26) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^2, INF). The TRS R consists of the following rules: isEmpty(empty) -> true isEmpty(node(l, r)) -> false left(empty) -> empty left(node(l, r)) -> l right(empty) -> empty right(node(l, r)) -> r inc(0) -> s(0) inc(s(x)) -> s(inc(x)) count(n, x) -> if(isEmpty(n), isEmpty(left(n)), right(n), node(left(left(n)), node(right(left(n)), right(n))), x, inc(x)) if(true, b, n, m, x, y) -> x if(false, false, n, m, x, y) -> count(m, x) if(false, true, n, m, x, y) -> count(n, y) nrOfNodes(n) -> count(n, 0) 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: isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0) -> s(0) inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0) Tuples: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0) -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0)) S tuples: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0) -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0)) K tuples:none Defined Rule Symbols: isEmpty_1, left_1, right_1, inc_1, count_2, if_6, nrOfNodes_1 Defined Pair Symbols: ISEMPTY_1, LEFT_1, RIGHT_1, INC_1, COUNT_2, IF_6, NROFNODES_1 Compound Symbols: c, c1, c2, c3, c4, c5, c6, c7_1, c8_2, c9_3, c10_2, c11_3, c12_3, c13_2, c14_2, c15, c16_1, c17_1, c18_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(n^2, INF). The TRS R consists of the following rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0) -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0)) The (relative) TRS S consists of the following rules: isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0) -> s(0) inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0) 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(n^2, INF). The TRS R consists of the following rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) The (relative) TRS S consists of the following rules: isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (8) Obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s ---------------------------------------- (9) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: INC, COUNT, inc, count They will be analysed ascendingly in the following order: INC < COUNT inc < COUNT inc < count ---------------------------------------- (10) Obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: INC, COUNT, inc, count They will be analysed ascendingly in the following order: INC < COUNT inc < COUNT inc < count ---------------------------------------- (11) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: INC(gen_0':s13_19(n15_19)) -> gen_c6:c712_19(n15_19), rt in Omega(1 + n15_19) Induction Base: INC(gen_0':s13_19(0)) ->_R^Omega(1) c6 Induction Step: INC(gen_0':s13_19(+(n15_19, 1))) ->_R^Omega(1) c7(INC(gen_0':s13_19(n15_19))) ->_IH c7(gen_c6:c712_19(c16_19)) 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: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: INC, COUNT, inc, count They will be analysed ascendingly in the following order: INC < COUNT inc < COUNT inc < count ---------------------------------------- (14) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (15) BOUNDS(n^1, INF) ---------------------------------------- (16) Obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Lemmas: INC(gen_0':s13_19(n15_19)) -> gen_c6:c712_19(n15_19), rt in Omega(1 + n15_19) Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: inc, COUNT, count They will be analysed ascendingly in the following order: inc < COUNT inc < count ---------------------------------------- (17) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: inc(gen_0':s13_19(n362_19)) -> gen_0':s13_19(+(1, n362_19)), rt in Omega(0) Induction Base: inc(gen_0':s13_19(0)) ->_R^Omega(0) s(0') Induction Step: inc(gen_0':s13_19(+(n362_19, 1))) ->_R^Omega(0) s(inc(gen_0':s13_19(n362_19))) ->_IH s(gen_0':s13_19(+(1, c363_19))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (18) Obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Lemmas: INC(gen_0':s13_19(n15_19)) -> gen_c6:c712_19(n15_19), rt in Omega(1 + n15_19) inc(gen_0':s13_19(n362_19)) -> gen_0':s13_19(+(1, n362_19)), rt in Omega(0) Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: COUNT, count ---------------------------------------- (19) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: COUNT(gen_empty:node11_19(n768_19), gen_0':s13_19(b)) -> *14_19, rt in Omega(b*n768_19 + n768_19) Induction Base: COUNT(gen_empty:node11_19(0), gen_0':s13_19(b)) Induction Step: COUNT(gen_empty:node11_19(+(n768_19, 1)), gen_0':s13_19(b)) ->_R^Omega(1) c14(IF(isEmpty(gen_empty:node11_19(+(n768_19, 1))), isEmpty(left(gen_empty:node11_19(+(n768_19, 1)))), right(gen_empty:node11_19(+(n768_19, 1))), node(left(left(gen_empty:node11_19(+(n768_19, 1)))), node(right(left(gen_empty:node11_19(+(n768_19, 1)))), right(gen_empty:node11_19(+(n768_19, 1))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, isEmpty(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))), node(left(left(gen_empty:node11_19(+(1, n768_19)))), node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, isEmpty(empty), right(gen_empty:node11_19(+(1, n768_19))), node(left(left(gen_empty:node11_19(+(1, n768_19)))), node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, right(gen_empty:node11_19(+(1, n768_19))), node(left(left(gen_empty:node11_19(+(1, n768_19)))), node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(left(left(gen_empty:node11_19(+(1, n768_19)))), node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(left(empty), node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(empty, node(right(left(gen_empty:node11_19(+(1, n768_19)))), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(empty, node(right(empty), right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(empty, node(empty, right(gen_empty:node11_19(+(1, n768_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_R^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(empty, node(empty, gen_empty:node11_19(n768_19))), gen_0':s13_19(b), inc(gen_0':s13_19(b))), INC(gen_0':s13_19(b))) ->_L^Omega(0) c14(IF(false, true, gen_empty:node11_19(n768_19), node(empty, node(empty, gen_empty:node11_19(n768_19))), gen_0':s13_19(b), gen_0':s13_19(+(1, b))), INC(gen_0':s13_19(b))) ->_R^Omega(1) c14(c17(COUNT(gen_empty:node11_19(n768_19), gen_0':s13_19(+(1, b)))), INC(gen_0':s13_19(b))) ->_IH c14(c17(*14_19), INC(gen_0':s13_19(+(1, b)))) ->_L^Omega(2 + b) c14(c17(*14_19), gen_c6:c712_19(+(1, b))) We have rt in Omega(n^2) and sz in O(n). Thus, we have irc_R in Omega(n^2). ---------------------------------------- (20) Complex Obligation (BEST) ---------------------------------------- (21) Obligation: Proved the lower bound n^2 for the following obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Lemmas: INC(gen_0':s13_19(n15_19)) -> gen_c6:c712_19(n15_19), rt in Omega(1 + n15_19) inc(gen_0':s13_19(n362_19)) -> gen_0':s13_19(+(1, n362_19)), rt in Omega(0) Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: COUNT, count ---------------------------------------- (22) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (23) BOUNDS(n^2, INF) ---------------------------------------- (24) Obligation: Innermost TRS: Rules: ISEMPTY(empty) -> c ISEMPTY(node(z0, z1)) -> c1 LEFT(empty) -> c2 LEFT(node(z0, z1)) -> c3 RIGHT(empty) -> c4 RIGHT(node(z0, z1)) -> c5 INC(0') -> c6 INC(s(z0)) -> c7(INC(z0)) COUNT(z0, z1) -> c8(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(z0)) COUNT(z0, z1) -> c9(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), ISEMPTY(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c10(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c11(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), LEFT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c12(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(left(z0)), LEFT(z0)) COUNT(z0, z1) -> c13(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), RIGHT(z0)) COUNT(z0, z1) -> c14(IF(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)), INC(z1)) IF(true, z0, z1, z2, z3, z4) -> c15 IF(false, false, z0, z1, z2, z3) -> c16(COUNT(z1, z2)) IF(false, true, z0, z1, z2, z3) -> c17(COUNT(z0, z3)) NROFNODES(z0) -> c18(COUNT(z0, 0')) isEmpty(empty) -> true isEmpty(node(z0, z1)) -> false left(empty) -> empty left(node(z0, z1)) -> z0 right(empty) -> empty right(node(z0, z1)) -> z1 inc(0') -> s(0') inc(s(z0)) -> s(inc(z0)) count(z0, z1) -> if(isEmpty(z0), isEmpty(left(z0)), right(z0), node(left(left(z0)), node(right(left(z0)), right(z0))), z1, inc(z1)) if(true, z0, z1, z2, z3, z4) -> z3 if(false, false, z0, z1, z2, z3) -> count(z1, z2) if(false, true, z0, z1, z2, z3) -> count(z0, z3) nrOfNodes(z0) -> count(z0, 0') Types: ISEMPTY :: empty:node -> c:c1 empty :: empty:node c :: c:c1 node :: empty:node -> empty:node -> empty:node c1 :: c:c1 LEFT :: empty:node -> c2:c3 c2 :: c2:c3 c3 :: c2:c3 RIGHT :: empty:node -> c4:c5 c4 :: c4:c5 c5 :: c4:c5 INC :: 0':s -> c6:c7 0' :: 0':s c6 :: c6:c7 s :: 0':s -> 0':s c7 :: c6:c7 -> c6:c7 COUNT :: empty:node -> 0':s -> c8:c9:c10:c11:c12:c13:c14 c8 :: c15:c16:c17 -> c:c1 -> c8:c9:c10:c11:c12:c13:c14 IF :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> c15:c16:c17 isEmpty :: empty:node -> true:false left :: empty:node -> empty:node right :: empty:node -> empty:node inc :: 0':s -> 0':s c9 :: c15:c16:c17 -> c:c1 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c10 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c11 :: c15:c16:c17 -> c2:c3 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c12 :: c15:c16:c17 -> c4:c5 -> c2:c3 -> c8:c9:c10:c11:c12:c13:c14 c13 :: c15:c16:c17 -> c4:c5 -> c8:c9:c10:c11:c12:c13:c14 c14 :: c15:c16:c17 -> c6:c7 -> c8:c9:c10:c11:c12:c13:c14 true :: true:false c15 :: c15:c16:c17 false :: true:false c16 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 c17 :: c8:c9:c10:c11:c12:c13:c14 -> c15:c16:c17 NROFNODES :: empty:node -> c18 c18 :: c8:c9:c10:c11:c12:c13:c14 -> c18 count :: empty:node -> 0':s -> 0':s if :: true:false -> true:false -> empty:node -> empty:node -> 0':s -> 0':s -> 0':s nrOfNodes :: empty:node -> 0':s hole_c:c11_19 :: c:c1 hole_empty:node2_19 :: empty:node hole_c2:c33_19 :: c2:c3 hole_c4:c54_19 :: c4:c5 hole_c6:c75_19 :: c6:c7 hole_0':s6_19 :: 0':s hole_c8:c9:c10:c11:c12:c13:c147_19 :: c8:c9:c10:c11:c12:c13:c14 hole_c15:c16:c178_19 :: c15:c16:c17 hole_true:false9_19 :: true:false hole_c1810_19 :: c18 gen_empty:node11_19 :: Nat -> empty:node gen_c6:c712_19 :: Nat -> c6:c7 gen_0':s13_19 :: Nat -> 0':s Lemmas: INC(gen_0':s13_19(n15_19)) -> gen_c6:c712_19(n15_19), rt in Omega(1 + n15_19) inc(gen_0':s13_19(n362_19)) -> gen_0':s13_19(+(1, n362_19)), rt in Omega(0) COUNT(gen_empty:node11_19(n768_19), gen_0':s13_19(b)) -> *14_19, rt in Omega(b*n768_19 + n768_19) Generator Equations: gen_empty:node11_19(0) <=> empty gen_empty:node11_19(+(x, 1)) <=> node(empty, gen_empty:node11_19(x)) gen_c6:c712_19(0) <=> c6 gen_c6:c712_19(+(x, 1)) <=> c7(gen_c6:c712_19(x)) gen_0':s13_19(0) <=> 0' gen_0':s13_19(+(x, 1)) <=> s(gen_0':s13_19(x)) The following defined symbols remain to be analysed: count ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: count(gen_empty:node11_19(n309708_19), gen_0':s13_19(b)) -> gen_0':s13_19(+(n309708_19, b)), rt in Omega(0) Induction Base: count(gen_empty:node11_19(0), gen_0':s13_19(b)) ->_R^Omega(0) if(isEmpty(gen_empty:node11_19(0)), isEmpty(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)), node(left(left(gen_empty:node11_19(0))), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, isEmpty(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)), node(left(left(gen_empty:node11_19(0))), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, isEmpty(empty), right(gen_empty:node11_19(0)), node(left(left(gen_empty:node11_19(0))), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, right(gen_empty:node11_19(0)), node(left(left(gen_empty:node11_19(0))), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(left(left(gen_empty:node11_19(0))), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(left(empty), node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(empty, node(right(left(gen_empty:node11_19(0))), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(empty, node(right(empty), right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(empty, node(empty, right(gen_empty:node11_19(0)))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(true, true, empty, node(empty, node(empty, empty)), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_L^Omega(0) if(true, true, empty, node(empty, node(empty, empty)), gen_0':s13_19(b), gen_0':s13_19(+(1, b))) ->_R^Omega(0) gen_0':s13_19(b) Induction Step: count(gen_empty:node11_19(+(n309708_19, 1)), gen_0':s13_19(b)) ->_R^Omega(0) if(isEmpty(gen_empty:node11_19(+(n309708_19, 1))), isEmpty(left(gen_empty:node11_19(+(n309708_19, 1)))), right(gen_empty:node11_19(+(n309708_19, 1))), node(left(left(gen_empty:node11_19(+(n309708_19, 1)))), node(right(left(gen_empty:node11_19(+(n309708_19, 1)))), right(gen_empty:node11_19(+(n309708_19, 1))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, isEmpty(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))), node(left(left(gen_empty:node11_19(+(1, n309708_19)))), node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, isEmpty(empty), right(gen_empty:node11_19(+(1, n309708_19))), node(left(left(gen_empty:node11_19(+(1, n309708_19)))), node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, right(gen_empty:node11_19(+(1, n309708_19))), node(left(left(gen_empty:node11_19(+(1, n309708_19)))), node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(left(left(gen_empty:node11_19(+(1, n309708_19)))), node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(left(empty), node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(empty, node(right(left(gen_empty:node11_19(+(1, n309708_19)))), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(empty, node(right(empty), right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(empty, node(empty, right(gen_empty:node11_19(+(1, n309708_19))))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_R^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(empty, node(empty, gen_empty:node11_19(n309708_19))), gen_0':s13_19(b), inc(gen_0':s13_19(b))) ->_L^Omega(0) if(false, true, gen_empty:node11_19(n309708_19), node(empty, node(empty, gen_empty:node11_19(n309708_19))), gen_0':s13_19(b), gen_0':s13_19(+(1, b))) ->_R^Omega(0) count(gen_empty:node11_19(n309708_19), gen_0':s13_19(+(1, b))) ->_IH gen_0':s13_19(+(+(1, b), c309709_19)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (26) BOUNDS(1, INF)