WORST_CASE(Omega(n^1),O(n^2)) proof of input_xxQgTi8Jy7.trs # AProVE Commit ID: 5b976082cb74a395683ed8cc7acf94bd611ab29f fuhs 20230524 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxWeightedTrs (13) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxTypedWeightedTrs (15) CompletionProof [UPPER BOUND(ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxTypedWeightedCompleteTrs (19) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxRNTS (23) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 118 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 52 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 290 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 179 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 1902 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 987 ms] (48) CpxRNTS (49) FinalProof [FINISHED, 0 ms] (50) BOUNDS(1, n^2) (51) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CpxRelTRS (55) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CpxRelTRS (57) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (58) typed CpxTrs (59) OrderProof [LOWER BOUND(ID), 10 ms] (60) typed CpxTrs (61) RewriteLemmaProof [LOWER BOUND(ID), 254 ms] (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 110 ms] (64) BEST (65) proven lower bound (66) LowerBoundPropagationProof [FINISHED, 0 ms] (67) BOUNDS(n^1, INF) (68) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: cond(true, x) -> cond(odd(x), p(x)) odd(0) -> false odd(s(0)) -> true odd(s(s(x))) -> odd(x) p(0) -> 0 p(s(x)) -> x S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0) -> c2 ODD(s(0)) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0) -> c5 P(s(z0)) -> c6 S tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0) -> c2 ODD(s(0)) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0) -> c5 P(s(z0)) -> c6 K tuples:none Defined Rule Symbols: cond_2, odd_1, p_1 Defined Pair Symbols: COND_2, ODD_1, P_1 Compound Symbols: c_2, c1_2, c2, c3, c4_1, c5, c6 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: ODD(0) -> c2 P(s(z0)) -> c6 P(0) -> c5 ODD(s(0)) -> c3 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) S tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) K tuples:none Defined Rule Symbols: cond_2, odd_1, p_1 Defined Pair Symbols: COND_2, ODD_1 Compound Symbols: c_2, c1_2, c4_1 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0))) S tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0))) K tuples:none Defined Rule Symbols: cond_2, odd_1, p_1 Defined Pair Symbols: COND_2, ODD_1 Compound Symbols: c_2, c4_1, c1_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: cond(true, z0) -> cond(odd(z0), p(z0)) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0))) S tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0))) K tuples:none Defined Rule Symbols: odd_1, p_1 Defined Pair Symbols: COND_2, ODD_1 Compound Symbols: c_2, c4_1, c1_1 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0))) The (relative) TRS S consists of the following rules: odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^2). The TRS R consists of the following rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(z0))) [1] odd(0) -> false [0] odd(s(0)) -> true [0] odd(s(s(z0))) -> odd(z0) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] Rewrite Strategy: INNERMOST ---------------------------------------- (13) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(z0))) [1] odd(0) -> false [0] odd(s(0)) -> true [0] odd(s(s(z0))) -> odd(z0) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] The TRS has the following type information: COND :: true:false -> s:0 -> c:c1 true :: true:false c :: c:c1 -> c4 -> c:c1 odd :: s:0 -> true:false p :: s:0 -> s:0 ODD :: s:0 -> c4 s :: s:0 -> s:0 c4 :: c4 -> c4 c1 :: c:c1 -> c:c1 0 :: s:0 false :: true:false Rewrite Strategy: INNERMOST ---------------------------------------- (15) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: COND_2 ODD_1 (c) The following functions are completely defined: odd_1 p_1 Due to the following rules being added: odd(v0) -> null_odd [0] p(v0) -> 0 [0] And the following fresh constants: null_odd, const, const1 ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(z0))) [1] odd(0) -> false [0] odd(s(0)) -> true [0] odd(s(s(z0))) -> odd(z0) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] odd(v0) -> null_odd [0] p(v0) -> 0 [0] The TRS has the following type information: COND :: true:false:null_odd -> s:0 -> c:c1 true :: true:false:null_odd c :: c:c1 -> c4 -> c:c1 odd :: s:0 -> true:false:null_odd p :: s:0 -> s:0 ODD :: s:0 -> c4 s :: s:0 -> s:0 c4 :: c4 -> c4 c1 :: c:c1 -> c:c1 0 :: s:0 false :: true:false:null_odd null_odd :: true:false:null_odd const :: c:c1 const1 :: c4 Rewrite Strategy: INNERMOST ---------------------------------------- (17) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (18) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: COND(true, 0) -> c(COND(false, 0), ODD(0)) [1] COND(true, 0) -> c(COND(false, 0), ODD(0)) [1] COND(true, s(0)) -> c(COND(true, 0), ODD(s(0))) [1] COND(true, s(0)) -> c(COND(true, 0), ODD(s(0))) [1] COND(true, s(s(z0'))) -> c(COND(odd(z0'), s(z0')), ODD(s(s(z0')))) [1] COND(true, s(s(z0'))) -> c(COND(odd(z0'), 0), ODD(s(s(z0')))) [1] COND(true, 0) -> c(COND(null_odd, 0), ODD(0)) [1] COND(true, s(z0'')) -> c(COND(null_odd, z0''), ODD(s(z0''))) [1] COND(true, z0) -> c(COND(null_odd, 0), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, 0) -> c1(COND(false, 0)) [1] COND(true, 0) -> c1(COND(false, 0)) [1] COND(true, s(0)) -> c1(COND(true, 0)) [1] COND(true, s(0)) -> c1(COND(true, 0)) [1] COND(true, s(s(z01))) -> c1(COND(odd(z01), s(z01))) [1] COND(true, s(s(z01))) -> c1(COND(odd(z01), 0)) [1] COND(true, 0) -> c1(COND(null_odd, 0)) [1] COND(true, s(z02)) -> c1(COND(null_odd, z02)) [1] COND(true, z0) -> c1(COND(null_odd, 0)) [1] odd(0) -> false [0] odd(s(0)) -> true [0] odd(s(s(z0))) -> odd(z0) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] odd(v0) -> null_odd [0] p(v0) -> 0 [0] The TRS has the following type information: COND :: true:false:null_odd -> s:0 -> c:c1 true :: true:false:null_odd c :: c:c1 -> c4 -> c:c1 odd :: s:0 -> true:false:null_odd p :: s:0 -> s:0 ODD :: s:0 -> c4 s :: s:0 -> s:0 c4 :: c4 -> c4 c1 :: c:c1 -> c:c1 0 :: s:0 false :: true:false:null_odd null_odd :: true:false:null_odd const :: c:c1 const1 :: c4 Rewrite Strategy: INNERMOST ---------------------------------------- (19) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: true => 2 0 => 0 false => 1 null_odd => 0 const => 0 const1 => 0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01) COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 1 + z01) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01) COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z02) :|: z = 2, z02 >= 0, z' = 1 + z02 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z0 >= 0, z' = z0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 1 + z0') + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z0'') + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z0) :|: z = 2, z0 >= 0, z' = z0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 ODD(z) -{ 1 }-> 1 + ODD(z0) :|: z0 >= 0, z = 1 + (1 + z0) odd(z) -{ 0 }-> odd(z0) :|: z0 >= 0, z = 1 + (1 + z0) odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 p(z) -{ 0 }-> z0 :|: z = 1 + z0, z0 >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (21) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0 ODD(z) -{ 1 }-> 1 + ODD(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 ---------------------------------------- (23) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { ODD } { odd } { p } { COND } ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0 ODD(z) -{ 1 }-> 1 + ODD(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {ODD}, {odd}, {p}, {COND} ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0 ODD(z) -{ 1 }-> 1 + ODD(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {ODD}, {odd}, {p}, {COND} ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ODD after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0 ODD(z) -{ 1 }-> 1 + ODD(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {ODD}, {odd}, {p}, {COND} Previous analysis results are: ODD: runtime: ?, size: O(1) [0] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ODD after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0 ODD(z) -{ 1 }-> 1 + ODD(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {odd}, {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {odd}, {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: odd after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {odd}, {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: ?, size: O(1) [2] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: odd after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) :|: z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 1 + (z' - 2)) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> odd(z - 2) :|: z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: p after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {p}, {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] p: runtime: ?, size: O(n^1) [z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: p after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: COND after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: {COND} Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] p: runtime: O(1) [0], size: O(n^1) [z] COND: runtime: ?, size: O(1) [0] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: COND after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 4 + 3*z' + z'^2 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s8, 1 + (z' - 2)) :|: s8 >= 0, s8 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(s9, 0) :|: s9 >= 0, s9 <= 2, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, z' - 1) :|: z = 2, z' - 1 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s6, 1 + (z' - 2)) + s'' :|: s6 >= 0, s6 <= 2, s'' >= 0, s'' <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s7, 0) + s1 :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= 0, z = 2, z' - 2 >= 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s :|: s >= 0, s <= 0, z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, z' - 1) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' - 1 >= 0 ODD(z) -{ -1 + z }-> 1 + s5 :|: s5 >= 0, s5 <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s10 :|: s10 >= 0, s10 <= 2, z - 2 >= 0 odd(z) -{ 0 }-> 2 :|: z = 1 + 0 odd(z) -{ 0 }-> 1 :|: z = 0 odd(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 Function symbols to be analyzed: Previous analysis results are: ODD: runtime: O(n^1) [z], size: O(1) [0] odd: runtime: O(1) [0], size: O(1) [2] p: runtime: O(1) [0], size: O(n^1) [z] COND: runtime: O(n^2) [4 + 3*z' + z'^2], size: O(1) [0] ---------------------------------------- (49) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (50) BOUNDS(1, n^2) ---------------------------------------- (51) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0) -> c2 ODD(s(0)) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0) -> c5 P(s(z0)) -> c6 S tuples: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0) -> c2 ODD(s(0)) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0) -> c5 P(s(z0)) -> c6 K tuples:none Defined Rule Symbols: cond_2, odd_1, p_1 Defined Pair Symbols: COND_2, ODD_1, P_1 Compound Symbols: c_2, c1_2, c2, c3, c4_1, c5, c6 ---------------------------------------- (53) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (54) 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: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0) -> c2 ODD(s(0)) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0) -> c5 P(s(z0)) -> c6 The (relative) TRS S consists of the following rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0) -> false odd(s(0)) -> true odd(s(s(z0))) -> odd(z0) p(0) -> 0 p(s(z0)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (55) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (56) 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: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 The (relative) TRS S consists of the following rules: cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (57) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (58) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Types: COND :: true:false -> 0':s -> c:c1 true :: true:false c :: c:c1 -> c2:c3:c4 -> c:c1 odd :: 0':s -> true:false p :: 0':s -> 0':s ODD :: 0':s -> c2:c3:c4 c1 :: c:c1 -> c5:c6 -> c:c1 P :: 0':s -> c5:c6 0' :: 0':s c2 :: c2:c3:c4 s :: 0':s -> 0':s c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 cond :: true:false -> 0':s -> cond false :: true:false hole_c:c11_7 :: c:c1 hole_true:false2_7 :: true:false hole_0':s3_7 :: 0':s hole_c2:c3:c44_7 :: c2:c3:c4 hole_c5:c65_7 :: c5:c6 hole_cond6_7 :: cond gen_c:c17_7 :: Nat -> c:c1 gen_0':s8_7 :: Nat -> 0':s gen_c2:c3:c49_7 :: Nat -> c2:c3:c4 ---------------------------------------- (59) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: COND, odd, ODD, cond They will be analysed ascendingly in the following order: odd < COND ODD < COND odd < cond ---------------------------------------- (60) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Types: COND :: true:false -> 0':s -> c:c1 true :: true:false c :: c:c1 -> c2:c3:c4 -> c:c1 odd :: 0':s -> true:false p :: 0':s -> 0':s ODD :: 0':s -> c2:c3:c4 c1 :: c:c1 -> c5:c6 -> c:c1 P :: 0':s -> c5:c6 0' :: 0':s c2 :: c2:c3:c4 s :: 0':s -> 0':s c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 cond :: true:false -> 0':s -> cond false :: true:false hole_c:c11_7 :: c:c1 hole_true:false2_7 :: true:false hole_0':s3_7 :: 0':s hole_c2:c3:c44_7 :: c2:c3:c4 hole_c5:c65_7 :: c5:c6 hole_cond6_7 :: cond gen_c:c17_7 :: Nat -> c:c1 gen_0':s8_7 :: Nat -> 0':s gen_c2:c3:c49_7 :: Nat -> c2:c3:c4 Generator Equations: gen_c:c17_7(0) <=> hole_c:c11_7 gen_c:c17_7(+(x, 1)) <=> c(gen_c:c17_7(x), c2) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c2:c3:c49_7(0) <=> c2 gen_c2:c3:c49_7(+(x, 1)) <=> c4(gen_c2:c3:c49_7(x)) The following defined symbols remain to be analysed: odd, COND, ODD, cond They will be analysed ascendingly in the following order: odd < COND ODD < COND odd < cond ---------------------------------------- (61) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: odd(gen_0':s8_7(*(2, n11_7))) -> false, rt in Omega(0) Induction Base: odd(gen_0':s8_7(*(2, 0))) ->_R^Omega(0) false Induction Step: odd(gen_0':s8_7(*(2, +(n11_7, 1)))) ->_R^Omega(0) odd(gen_0':s8_7(*(2, n11_7))) ->_IH false We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (62) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Types: COND :: true:false -> 0':s -> c:c1 true :: true:false c :: c:c1 -> c2:c3:c4 -> c:c1 odd :: 0':s -> true:false p :: 0':s -> 0':s ODD :: 0':s -> c2:c3:c4 c1 :: c:c1 -> c5:c6 -> c:c1 P :: 0':s -> c5:c6 0' :: 0':s c2 :: c2:c3:c4 s :: 0':s -> 0':s c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 cond :: true:false -> 0':s -> cond false :: true:false hole_c:c11_7 :: c:c1 hole_true:false2_7 :: true:false hole_0':s3_7 :: 0':s hole_c2:c3:c44_7 :: c2:c3:c4 hole_c5:c65_7 :: c5:c6 hole_cond6_7 :: cond gen_c:c17_7 :: Nat -> c:c1 gen_0':s8_7 :: Nat -> 0':s gen_c2:c3:c49_7 :: Nat -> c2:c3:c4 Lemmas: odd(gen_0':s8_7(*(2, n11_7))) -> false, rt in Omega(0) Generator Equations: gen_c:c17_7(0) <=> hole_c:c11_7 gen_c:c17_7(+(x, 1)) <=> c(gen_c:c17_7(x), c2) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c2:c3:c49_7(0) <=> c2 gen_c2:c3:c49_7(+(x, 1)) <=> c4(gen_c2:c3:c49_7(x)) The following defined symbols remain to be analysed: ODD, COND, cond They will be analysed ascendingly in the following order: ODD < COND ---------------------------------------- (63) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: ODD(gen_0':s8_7(*(2, n171_7))) -> gen_c2:c3:c49_7(n171_7), rt in Omega(1 + n171_7) Induction Base: ODD(gen_0':s8_7(*(2, 0))) ->_R^Omega(1) c2 Induction Step: ODD(gen_0':s8_7(*(2, +(n171_7, 1)))) ->_R^Omega(1) c4(ODD(gen_0':s8_7(*(2, n171_7)))) ->_IH c4(gen_c2:c3:c49_7(c172_7)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (64) Complex Obligation (BEST) ---------------------------------------- (65) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Types: COND :: true:false -> 0':s -> c:c1 true :: true:false c :: c:c1 -> c2:c3:c4 -> c:c1 odd :: 0':s -> true:false p :: 0':s -> 0':s ODD :: 0':s -> c2:c3:c4 c1 :: c:c1 -> c5:c6 -> c:c1 P :: 0':s -> c5:c6 0' :: 0':s c2 :: c2:c3:c4 s :: 0':s -> 0':s c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 cond :: true:false -> 0':s -> cond false :: true:false hole_c:c11_7 :: c:c1 hole_true:false2_7 :: true:false hole_0':s3_7 :: 0':s hole_c2:c3:c44_7 :: c2:c3:c4 hole_c5:c65_7 :: c5:c6 hole_cond6_7 :: cond gen_c:c17_7 :: Nat -> c:c1 gen_0':s8_7 :: Nat -> 0':s gen_c2:c3:c49_7 :: Nat -> c2:c3:c4 Lemmas: odd(gen_0':s8_7(*(2, n11_7))) -> false, rt in Omega(0) Generator Equations: gen_c:c17_7(0) <=> hole_c:c11_7 gen_c:c17_7(+(x, 1)) <=> c(gen_c:c17_7(x), c2) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c2:c3:c49_7(0) <=> c2 gen_c2:c3:c49_7(+(x, 1)) <=> c4(gen_c2:c3:c49_7(x)) The following defined symbols remain to be analysed: ODD, COND, cond They will be analysed ascendingly in the following order: ODD < COND ---------------------------------------- (66) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (67) BOUNDS(n^1, INF) ---------------------------------------- (68) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(z0)), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(z0)), P(z0)) ODD(0') -> c2 ODD(s(0')) -> c3 ODD(s(s(z0))) -> c4(ODD(z0)) P(0') -> c5 P(s(z0)) -> c6 cond(true, z0) -> cond(odd(z0), p(z0)) odd(0') -> false odd(s(0')) -> true odd(s(s(z0))) -> odd(z0) p(0') -> 0' p(s(z0)) -> z0 Types: COND :: true:false -> 0':s -> c:c1 true :: true:false c :: c:c1 -> c2:c3:c4 -> c:c1 odd :: 0':s -> true:false p :: 0':s -> 0':s ODD :: 0':s -> c2:c3:c4 c1 :: c:c1 -> c5:c6 -> c:c1 P :: 0':s -> c5:c6 0' :: 0':s c2 :: c2:c3:c4 s :: 0':s -> 0':s c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 c5 :: c5:c6 c6 :: c5:c6 cond :: true:false -> 0':s -> cond false :: true:false hole_c:c11_7 :: c:c1 hole_true:false2_7 :: true:false hole_0':s3_7 :: 0':s hole_c2:c3:c44_7 :: c2:c3:c4 hole_c5:c65_7 :: c5:c6 hole_cond6_7 :: cond gen_c:c17_7 :: Nat -> c:c1 gen_0':s8_7 :: Nat -> 0':s gen_c2:c3:c49_7 :: Nat -> c2:c3:c4 Lemmas: odd(gen_0':s8_7(*(2, n11_7))) -> false, rt in Omega(0) ODD(gen_0':s8_7(*(2, n171_7))) -> gen_c2:c3:c49_7(n171_7), rt in Omega(1 + n171_7) Generator Equations: gen_c:c17_7(0) <=> hole_c:c11_7 gen_c:c17_7(+(x, 1)) <=> c(gen_c:c17_7(x), c2) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c2:c3:c49_7(0) <=> c2 gen_c2:c3:c49_7(+(x, 1)) <=> c4(gen_c2:c3:c49_7(x)) The following defined symbols remain to be analysed: COND, cond