WORST_CASE(Omega(n^1),O(n^2)) proof of input_Nd7nYhy6XK.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) InliningProof [UPPER BOUND(ID), 3401 ms] (22) CpxRNTS (23) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 59 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 67 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 212 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 95 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 141 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 9915 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 4851 ms] (50) CpxRNTS (51) FinalProof [FINISHED, 0 ms] (52) BOUNDS(1, n^2) (53) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CpxRelTRS (57) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CpxRelTRS (59) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (60) typed CpxTrs (61) OrderProof [LOWER BOUND(ID), 1 ms] (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 215 ms] (64) typed CpxTrs (65) RewriteLemmaProof [LOWER BOUND(ID), 130 ms] (66) BEST (67) proven lower bound (68) LowerBoundPropagationProof [FINISHED, 0 ms] (69) BOUNDS(n^1, INF) (70) 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(p(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(p(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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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_4, c2, c3, c4_1, c5, c6 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: ODD(s(0)) -> c3 ODD(0) -> c2 P(s(z0)) -> c6 P(0) -> c5 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(p(z0)), P(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) S tuples: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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_4, c4_1 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0))))) S tuples: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(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(p(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(p(p(z0)))), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0))))) S tuples: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) ODD(s(s(z0))) -> c4(ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, z0) -> c1(COND(odd(z0), p(p(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, p(p(0))), ODD(0)) [1] COND(true, 0) -> c(COND(false, p(p(0))), ODD(0)) [1] COND(true, s(0)) -> c(COND(true, p(p(0))), ODD(s(0))) [1] COND(true, s(0)) -> c(COND(true, p(p(0))), ODD(s(0))) [1] COND(true, s(s(z0'))) -> c(COND(odd(z0'), p(p(s(z0')))), ODD(s(s(z0')))) [1] COND(true, s(s(z0'))) -> c(COND(odd(z0'), p(p(0))), ODD(s(s(z0')))) [1] COND(true, 0) -> c(COND(null_odd, p(p(0))), ODD(0)) [1] COND(true, s(z0'')) -> c(COND(null_odd, p(p(z0''))), ODD(s(z0''))) [1] COND(true, z0) -> c(COND(null_odd, p(p(0))), ODD(z0)) [1] ODD(s(s(z0))) -> c4(ODD(z0)) [1] COND(true, 0) -> c1(COND(false, p(p(0)))) [1] COND(true, 0) -> c1(COND(false, p(p(0)))) [1] COND(true, s(0)) -> c1(COND(true, p(p(0)))) [1] COND(true, s(0)) -> c1(COND(true, p(p(0)))) [1] COND(true, s(s(z01))) -> c1(COND(odd(z01), p(p(s(z01))))) [1] COND(true, s(s(z01))) -> c1(COND(odd(z01), p(p(0)))) [1] COND(true, 0) -> c1(COND(null_odd, p(p(0)))) [1] COND(true, s(z02)) -> c1(COND(null_odd, p(p(z02)))) [1] COND(true, z0) -> c1(COND(null_odd, p(p(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), p(p(0))) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01) COND(z, z') -{ 1 }-> 1 + COND(odd(z01), p(p(1 + z01))) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01) COND(z, z') -{ 1 }-> 1 + COND(2, p(p(0))) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, p(p(0))) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(z02))) :|: z = 2, z02 >= 0, z' = 1 + z02 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(0))) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(0))) :|: z = 2, z0 >= 0, z' = z0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), p(p(0))) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), p(p(1 + z0'))) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(2, p(p(0))) + ODD(1 + 0) :|: z = 2, z' = 1 + 0 COND(z, z') -{ 1 }-> 1 + COND(1, p(p(0))) + ODD(0) :|: z = 2, z' = 0 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(z0''))) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(0))) + ODD(z0) :|: z = 2, z0 >= 0, z' = z0 COND(z, z') -{ 1 }-> 1 + COND(0, p(p(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) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: p(z) -{ 0 }-> z0 :|: z = 1 + z0, z0 >= 0 p(z) -{ 0 }-> 0 :|: z = 0 p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z01), z0') :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), 1 + z01 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), 1 + z01 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), 1 + z01 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), v0 >= 0, 1 + z01 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), v0 >= 0, 1 + z01 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z01), 0) :|: z = 2, z01 >= 0, z' = 1 + (1 + z01), v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z02 >= 0, z' = 1 + z02, z02 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, z02 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, z02 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, z02 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, z02 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, v0 >= 0, z02 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z02 >= 0, z' = 1 + z02, v0 >= 0, z02 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z0 >= 0, z' = z0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z0 >= 0, z' = z0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z0 >= 0, z' = z0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), z0'') + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, 1 + z0' = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, 1 + z0' = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, 1 + z0' = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, v0 >= 0, 1 + z0' = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, v0 >= 0, 1 + z0' = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z0'), 0) + ODD(1 + (1 + z0')) :|: z = 2, z' = 1 + (1 + z0'), z0' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, z0'' = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z0) :|: z = 2, z0 >= 0, z' = z0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z0) :|: z = 2, z0 >= 0, z' = z0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z0) :|: z = 2, z0 >= 0, z' = z0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, z0'' = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, z0'' = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, z0'' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, z0'' = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, v0 >= 0, z0'' = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + z0'') :|: z = 2, z' = 1 + z0'', z0'' >= 0, v0 >= 0, z0'' = v0, v0' >= 0, 0 = v0' 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 ---------------------------------------- (23) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0'') + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' 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 ---------------------------------------- (25) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { ODD } { odd } { p } { COND } ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0'') + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' 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) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0'') + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' 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} ---------------------------------------- (29) 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 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0'') + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' 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] ---------------------------------------- (31) 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 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0'') + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) + ODD(1 + (1 + (z' - 2))) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) + ODD(1 + 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(z') :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + ODD(1 + (z' - 1)) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' 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] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), z0'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s10 :|: s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s6 :|: s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s7 :|: s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s8 :|: s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s9 :|: s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 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] ---------------------------------------- (35) 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 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), z0'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s10 :|: s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s6 :|: s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s7 :|: s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s8 :|: s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s9 :|: s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 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] ---------------------------------------- (37) 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 ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), z0') :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(odd(z' - 2), 0) :|: z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), z0'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s10 :|: s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s6 :|: s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s7 :|: s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s8 :|: s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(odd(z' - 2), 0) + s9 :|: s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 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] ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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] ---------------------------------------- (41) 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 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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] ---------------------------------------- (43) 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 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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] ---------------------------------------- (47) 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 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: COND after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 57*z + 18*z*z' + 57*z' + 18*z'^2 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: COND(z, z') -{ 1 }-> 1 + COND(s35, z0') :|: s35 >= 0, s35 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(s36, 0) :|: s36 >= 0, s36 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s37, 0) :|: s37 >= 0, s37 <= 2, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s38, 0) :|: s38 >= 0, s38 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s39, 0) :|: s39 >= 0, s39 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(s40, 0) :|: s40 >= 0, s40 <= 2, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(s41, 0) :|: s41 >= 0, s41 <= 2, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(s42, 0) :|: s42 >= 0, s42 <= 2, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(2, 0) :|: z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, z0') :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) :|: z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s27, z0'') + s5 :|: s27 >= 0, s27 <= 2, s5 >= 0, s5 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 1 + z0'', z0'' >= 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s28, 0) + s6 :|: s28 >= 0, s28 <= 2, s6 >= 0, s6 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s29, 0) + s7 :|: s29 >= 0, s29 <= 2, s7 >= 0, s7 <= 0, z = 2, z' - 2 >= 0, 1 + (z' - 2) = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s30, 0) + s8 :|: s30 >= 0, s30 <= 2, s8 >= 0, s8 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s31, 0) + s9 :|: s31 >= 0, s31 <= 2, s9 >= 0, s9 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 1 + (z' - 2) = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(s32, 0) + s10 :|: s32 >= 0, s32 <= 2, s10 >= 0, s10 <= 0, z = 2, z' - 2 >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(s33, 0) + s11 :|: s33 >= 0, s33 <= 2, s11 >= 0, s11 <= 0, z = 2, z' - 2 >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(s34, 0) + s12 :|: s34 >= 0, s34 <= 2, s12 >= 0, s12 <= 0, z = 2, z' - 2 >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s2 :|: s2 >= 0, s2 <= 0, z = 2, z' = 1 + 0, 0 = 0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s3 :|: s3 >= 0, s3 <= 0, z = 2, z' = 1 + 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 2 }-> 1 + COND(2, 0) + s4 :|: s4 >= 0, s4 <= 0, z = 2, z' = 1 + 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s' :|: s' >= 0, s' <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s'' :|: s'' >= 0, s'' <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(1, 0) + s1 :|: s1 >= 0, s1 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, z0') + s16 :|: s16 >= 0, s16 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 1 + z0', z0' >= 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z' = 0, 0 = 0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z' = 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 }-> 1 + COND(0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z' = 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, z0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 1 + z0, z0 >= 0, v0 >= 0, z0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z' - 1 >= 0, z' - 1 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z' - 1 >= 0, v0 >= 0, z' - 1 = v0, v0' >= 0, 0 = v0' COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z' >= 0, 0 = 0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z' >= 0, 0 = 0, v0 >= 0, 0 = v0 COND(z, z') -{ 1 + z' }-> 1 + COND(0, 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z' >= 0, v0 >= 0, 0 = v0, v0' >= 0, 0 = v0' ODD(z) -{ -1 + z }-> 1 + s :|: s >= 0, s <= 0, z - 2 >= 0 odd(z) -{ 0 }-> s26 :|: s26 >= 0, s26 <= 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) [57*z + 18*z*z' + 57*z' + 18*z'^2], size: O(1) [0] ---------------------------------------- (51) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (52) BOUNDS(1, n^2) ---------------------------------------- (53) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: cond(true, z0) -> cond(odd(z0), p(p(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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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_4, c2, c3, c4_1, c5, c6 ---------------------------------------- (55) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (58) 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(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 ---------------------------------------- (59) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (60) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 -> c5:c6 -> 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 ---------------------------------------- (61) 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 ---------------------------------------- (62) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 -> c5:c6 -> 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 ---------------------------------------- (63) 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). ---------------------------------------- (64) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 -> c5:c6 -> 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 ---------------------------------------- (65) 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). ---------------------------------------- (66) Complex Obligation (BEST) ---------------------------------------- (67) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 -> c5:c6 -> 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 ---------------------------------------- (68) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (69) BOUNDS(n^1, INF) ---------------------------------------- (70) Obligation: Innermost TRS: Rules: COND(true, z0) -> c(COND(odd(z0), p(p(p(z0)))), ODD(z0)) COND(true, z0) -> c1(COND(odd(z0), p(p(p(z0)))), P(p(p(z0))), P(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(p(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 -> c5:c6 -> 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