WORST_CASE(Omega(n^1),O(n^2)) proof of input_vWrkm5EENP.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), 1659 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), 130 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 85 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 191 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 148 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 84 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 321 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 64 ms] (50) CpxRNTS (51) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 149 ms] (54) CpxRNTS (55) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 12.2 s] (60) CpxRNTS (61) IntTrsBoundProof [UPPER BOUND(ID), 5251 ms] (62) CpxRNTS (63) FinalProof [FINISHED, 0 ms] (64) BOUNDS(1, n^2) (65) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CpxRelTRS (69) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CpxRelTRS (71) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (72) typed CpxTrs (73) OrderProof [LOWER BOUND(ID), 4 ms] (74) typed CpxTrs (75) RewriteLemmaProof [LOWER BOUND(ID), 354 ms] (76) typed CpxTrs (77) RewriteLemmaProof [LOWER BOUND(ID), 119 ms] (78) BEST (79) proven lower bound (80) LowerBoundPropagationProof [FINISHED, 0 ms] (81) BOUNDS(n^1, INF) (82) typed CpxTrs (83) RewriteLemmaProof [LOWER BOUND(ID), 112 ms] (84) typed CpxTrs (85) RewriteLemmaProof [LOWER BOUND(ID), 58 ms] (86) 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: cond1(true, x, y) -> cond2(gr(x, 0), x, y) cond2(true, x, y) -> cond1(gr(add(x, y), 0), p(x), y) cond2(false, x, y) -> cond3(gr(y, 0), x, y) cond3(true, x, y) -> cond1(gr(add(x, y), 0), x, p(y)) cond3(false, x, y) -> cond1(gr(add(x, y), 0), x, y) gr(0, x) -> false gr(s(x), 0) -> true gr(s(x), s(y)) -> gr(x, y) add(0, x) -> x add(s(x), y) -> s(add(x, y)) 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: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(0, z0) -> false gr(s(z0), 0) -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(0, z0) -> c7 GR(s(z0), 0) -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0, z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0) -> c12 P(s(z0)) -> c13 S tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(0, z0) -> c7 GR(s(z0), 0) -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0, z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0) -> c12 P(s(z0)) -> c13 K tuples:none Defined Rule Symbols: cond1_3, cond2_3, cond3_3, gr_2, add_2, p_1 Defined Pair Symbols: COND1_3, COND2_3, COND3_3, GR_2, ADD_2, P_1 Compound Symbols: c_2, c1_3, c2_2, c3_2, c4_3, c5_2, c6_3, c7, c8, c9_1, c10, c11_1, c12, c13 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 5 trailing nodes: P(s(z0)) -> c13 GR(s(z0), 0) -> c8 ADD(0, z0) -> c10 GR(0, z0) -> c7 P(0) -> c12 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(0, z0) -> false gr(s(z0), 0) -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) S tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) K tuples:none Defined Rule Symbols: cond1_3, cond2_3, cond3_3, gr_2, add_2, p_1 Defined Pair Symbols: COND1_3, COND2_3, COND3_3, GR_2, ADD_2 Compound Symbols: c_2, c1_3, c2_2, c3_2, c4_3, c5_2, c6_3, c9_1, c11_1 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 7 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(0, z0) -> false gr(s(z0), 0) -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Tuples: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) S tuples: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) K tuples:none Defined Rule Symbols: cond1_3, cond2_3, cond3_3, gr_2, add_2, p_1 Defined Pair Symbols: GR_2, ADD_2, COND1_3, COND2_3, COND3_3 Compound Symbols: c9_1, c11_1, c_1, c1_2, c2_1, c3_1, c4_2, c5_1, c6_2 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(s(z0), s(z1)) -> gr(z0, z1) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: gr(0, z0) -> false gr(s(z0), 0) -> true add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Tuples: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) S tuples: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) K tuples:none Defined Rule Symbols: gr_2, add_2, p_1 Defined Pair Symbols: GR_2, ADD_2, COND1_3, COND2_3, COND3_3 Compound Symbols: c9_1, c11_1, c_1, c1_2, c2_1, c3_1, c4_2, c5_1, c6_2 ---------------------------------------- (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: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(s(z0), z1) -> c11(ADD(z0, z1)) COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) The (relative) TRS S consists of the following rules: gr(0, z0) -> false gr(s(z0), 0) -> true add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) 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: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) [1] ADD(s(z0), z1) -> c11(ADD(z0, z1)) [1] COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) [1] COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) [1] COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) [1] COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) [1] COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) [1] COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) [1] COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) [1] gr(0, z0) -> false [0] gr(s(z0), 0) -> true [0] add(0, z0) -> z0 [0] add(s(z0), z1) -> s(add(z0, z1)) [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: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) [1] ADD(s(z0), z1) -> c11(ADD(z0, z1)) [1] COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) [1] COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) [1] COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) [1] COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) [1] COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) [1] COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) [1] COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) [1] gr(0, z0) -> false [0] gr(s(z0), 0) -> true [0] add(0, z0) -> z0 [0] add(s(z0), z1) -> s(add(z0, z1)) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] The TRS has the following type information: GR :: s:0 -> s:0 -> c9 s :: s:0 -> s:0 c9 :: c9 -> c9 ADD :: s:0 -> s:0 -> c11 c11 :: c11 -> c11 COND1 :: true:false -> s:0 -> s:0 -> c true :: true:false c :: c1:c2:c3 -> c COND2 :: true:false -> s:0 -> s:0 -> c1:c2:c3 gr :: s:0 -> s:0 -> true:false 0 :: s:0 c1 :: c -> c11 -> c1:c2:c3 add :: s:0 -> s:0 -> s:0 p :: s:0 -> s:0 c2 :: c -> c1:c2:c3 false :: true:false c3 :: c4:c5:c6 -> c1:c2:c3 COND3 :: true:false -> s:0 -> s:0 -> c4:c5:c6 c4 :: c -> c11 -> c4:c5:c6 c5 :: c -> c4:c5:c6 c6 :: c -> c11 -> c4:c5:c6 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: GR_2 ADD_2 COND1_3 COND2_3 COND3_3 (c) The following functions are completely defined: gr_2 add_2 p_1 Due to the following rules being added: gr(v0, v1) -> null_gr [0] add(v0, v1) -> 0 [0] p(v0) -> 0 [0] And the following fresh constants: null_gr, const, const1, const2, const3, const4 ---------------------------------------- (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: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) [1] ADD(s(z0), z1) -> c11(ADD(z0, z1)) [1] COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1)) [1] COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), ADD(z0, z1)) [1] COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1)) [1] COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1)) [1] COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), ADD(z0, z1)) [1] COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1))) [1] COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), ADD(z0, z1)) [1] gr(0, z0) -> false [0] gr(s(z0), 0) -> true [0] add(0, z0) -> z0 [0] add(s(z0), z1) -> s(add(z0, z1)) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] gr(v0, v1) -> null_gr [0] add(v0, v1) -> 0 [0] p(v0) -> 0 [0] The TRS has the following type information: GR :: s:0 -> s:0 -> c9 s :: s:0 -> s:0 c9 :: c9 -> c9 ADD :: s:0 -> s:0 -> c11 c11 :: c11 -> c11 COND1 :: true:false:null_gr -> s:0 -> s:0 -> c true :: true:false:null_gr c :: c1:c2:c3 -> c COND2 :: true:false:null_gr -> s:0 -> s:0 -> c1:c2:c3 gr :: s:0 -> s:0 -> true:false:null_gr 0 :: s:0 c1 :: c -> c11 -> c1:c2:c3 add :: s:0 -> s:0 -> s:0 p :: s:0 -> s:0 c2 :: c -> c1:c2:c3 false :: true:false:null_gr c3 :: c4:c5:c6 -> c1:c2:c3 COND3 :: true:false:null_gr -> s:0 -> s:0 -> c4:c5:c6 c4 :: c -> c11 -> c4:c5:c6 c5 :: c -> c4:c5:c6 c6 :: c -> c11 -> c4:c5:c6 null_gr :: true:false:null_gr const :: c9 const1 :: c11 const2 :: c const3 :: c1:c2:c3 const4 :: c4:c5:c6 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: GR(s(z0), s(z1)) -> c9(GR(z0, z1)) [1] ADD(s(z0), z1) -> c11(ADD(z0, z1)) [1] COND1(true, 0, z1) -> c(COND2(false, 0, z1)) [1] COND1(true, s(z0'), z1) -> c(COND2(true, s(z0'), z1)) [1] COND1(true, z0, z1) -> c(COND2(null_gr, z0, z1)) [1] COND2(true, 0, z1) -> c1(COND1(gr(z1, 0), 0, z1), ADD(0, z1)) [1] COND2(true, 0, z1) -> c1(COND1(gr(z1, 0), 0, z1), ADD(0, z1)) [1] COND2(true, s(z0''), z1) -> c1(COND1(gr(s(add(z0'', z1)), 0), z0'', z1), ADD(s(z0''), z1)) [1] COND2(true, s(z0''), z1) -> c1(COND1(gr(s(add(z0'', z1)), 0), 0, z1), ADD(s(z0''), z1)) [1] COND2(true, 0, z1) -> c1(COND1(gr(0, 0), 0, z1), ADD(0, z1)) [1] COND2(true, s(z01), z1) -> c1(COND1(gr(0, 0), z01, z1), ADD(s(z01), z1)) [1] COND2(true, z0, z1) -> c1(COND1(gr(0, 0), 0, z1), ADD(z0, z1)) [1] COND2(true, 0, z1) -> c2(COND1(gr(z1, 0), 0, z1)) [1] COND2(true, 0, z1) -> c2(COND1(gr(z1, 0), 0, z1)) [1] COND2(true, s(z02), z1) -> c2(COND1(gr(s(add(z02, z1)), 0), z02, z1)) [1] COND2(true, s(z02), z1) -> c2(COND1(gr(s(add(z02, z1)), 0), 0, z1)) [1] COND2(true, 0, z1) -> c2(COND1(gr(0, 0), 0, z1)) [1] COND2(true, s(z03), z1) -> c2(COND1(gr(0, 0), z03, z1)) [1] COND2(true, z0, z1) -> c2(COND1(gr(0, 0), 0, z1)) [1] COND2(false, z0, 0) -> c3(COND3(false, z0, 0)) [1] COND2(false, z0, s(z04)) -> c3(COND3(true, z0, s(z04))) [1] COND2(false, z0, z1) -> c3(COND3(null_gr, z0, z1)) [1] COND3(true, 0, 0) -> c4(COND1(gr(0, 0), 0, 0), ADD(0, 0)) [1] COND3(true, 0, s(z06)) -> c4(COND1(gr(s(z06), 0), 0, z06), ADD(0, s(z06))) [1] COND3(true, 0, z1) -> c4(COND1(gr(z1, 0), 0, 0), ADD(0, z1)) [1] COND3(true, s(z05), 0) -> c4(COND1(gr(s(add(z05, 0)), 0), s(z05), 0), ADD(s(z05), 0)) [1] COND3(true, s(z05), s(z07)) -> c4(COND1(gr(s(add(z05, s(z07))), 0), s(z05), z07), ADD(s(z05), s(z07))) [1] COND3(true, s(z05), z1) -> c4(COND1(gr(s(add(z05, z1)), 0), s(z05), 0), ADD(s(z05), z1)) [1] COND3(true, z0, 0) -> c4(COND1(gr(0, 0), z0, 0), ADD(z0, 0)) [1] COND3(true, z0, s(z08)) -> c4(COND1(gr(0, 0), z0, z08), ADD(z0, s(z08))) [1] COND3(true, z0, z1) -> c4(COND1(gr(0, 0), z0, 0), ADD(z0, z1)) [1] COND3(true, 0, 0) -> c5(COND1(gr(0, 0), 0, 0)) [1] COND3(true, 0, s(z010)) -> c5(COND1(gr(s(z010), 0), 0, z010)) [1] COND3(true, 0, z1) -> c5(COND1(gr(z1, 0), 0, 0)) [1] COND3(true, s(z09), 0) -> c5(COND1(gr(s(add(z09, 0)), 0), s(z09), 0)) [1] COND3(true, s(z09), s(z011)) -> c5(COND1(gr(s(add(z09, s(z011))), 0), s(z09), z011)) [1] COND3(true, s(z09), z1) -> c5(COND1(gr(s(add(z09, z1)), 0), s(z09), 0)) [1] COND3(true, z0, 0) -> c5(COND1(gr(0, 0), z0, 0)) [1] COND3(true, z0, s(z012)) -> c5(COND1(gr(0, 0), z0, z012)) [1] COND3(true, z0, z1) -> c5(COND1(gr(0, 0), z0, 0)) [1] COND3(false, 0, z1) -> c6(COND1(gr(z1, 0), 0, z1), ADD(0, z1)) [1] COND3(false, s(z013), z1) -> c6(COND1(gr(s(add(z013, z1)), 0), s(z013), z1), ADD(s(z013), z1)) [1] COND3(false, z0, z1) -> c6(COND1(gr(0, 0), z0, z1), ADD(z0, z1)) [1] gr(0, z0) -> false [0] gr(s(z0), 0) -> true [0] add(0, z0) -> z0 [0] add(s(z0), z1) -> s(add(z0, z1)) [0] p(0) -> 0 [0] p(s(z0)) -> z0 [0] gr(v0, v1) -> null_gr [0] add(v0, v1) -> 0 [0] p(v0) -> 0 [0] The TRS has the following type information: GR :: s:0 -> s:0 -> c9 s :: s:0 -> s:0 c9 :: c9 -> c9 ADD :: s:0 -> s:0 -> c11 c11 :: c11 -> c11 COND1 :: true:false:null_gr -> s:0 -> s:0 -> c true :: true:false:null_gr c :: c1:c2:c3 -> c COND2 :: true:false:null_gr -> s:0 -> s:0 -> c1:c2:c3 gr :: s:0 -> s:0 -> true:false:null_gr 0 :: s:0 c1 :: c -> c11 -> c1:c2:c3 add :: s:0 -> s:0 -> s:0 p :: s:0 -> s:0 c2 :: c -> c1:c2:c3 false :: true:false:null_gr c3 :: c4:c5:c6 -> c1:c2:c3 COND3 :: true:false:null_gr -> s:0 -> s:0 -> c4:c5:c6 c4 :: c -> c11 -> c4:c5:c6 c5 :: c -> c4:c5:c6 c6 :: c -> c11 -> c4:c5:c6 null_gr :: true:false:null_gr const :: c9 const1 :: c11 const2 :: c const3 :: c1:c2:c3 const4 :: c4:c5:c6 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_gr => 0 const => 0 const1 => 0 const2 => 0 const3 => 0 const4 => 0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ 1 }-> 1 + ADD(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + z0', z1) :|: z = 2, z1 >= 0, z0' >= 0, z' = 1 + z0', z'' = z1 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z0, 1 + z04) :|: z'' = 1 + z04, z04 >= 0, z = 1, z0 >= 0, z' = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z0, 0) :|: z'' = 0, z = 1, z0 >= 0, z' = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z0, z1) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(z1, 0), 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z03, z1) :|: z = 2, z1 >= 0, z' = 1 + z03, z03 >= 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z02, z1), 0), z02, z1) :|: z = 2, z1 >= 0, z02 >= 0, z' = 1 + z02, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z02, z1), 0), 0, z1) :|: z = 2, z1 >= 0, z02 >= 0, z' = 1 + z02, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(z1, 0), 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z01, z1) + ADD(1 + z01, z1) :|: z = 2, z1 >= 0, z01 >= 0, z' = 1 + z01, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, z1) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z0'', z1), 0), z0'', z1) + ADD(1 + z0'', z1) :|: z = 2, z1 >= 0, z' = 1 + z0'', z0'' >= 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z0'', z1), 0), 0, z1) + ADD(1 + z0'', z1) :|: z = 2, z1 >= 0, z' = 1 + z0'', z0'' >= 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(z1, 0), 0, 0) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, z012) :|: z = 2, z'' = 1 + z012, z0 >= 0, z012 >= 0, z' = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, 0) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, 0) :|: z = 2, z'' = 0, z' = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + z010, 0), 0, z010) :|: z = 2, z'' = 1 + z010, z010 >= 0, z' = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, z1), 0), 1 + z09, 0) :|: z = 2, z1 >= 0, z' = 1 + z09, z09 >= 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, 0), 0), 1 + z09, 0) :|: z = 2, z'' = 0, z' = 1 + z09, z09 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, 1 + z011), 0), 1 + z09, z011) :|: z = 2, z011 >= 0, z' = 1 + z09, z'' = 1 + z011, z09 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(z1, 0), 0, z1) + ADD(0, z1) :|: z1 >= 0, z = 1, z' = 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(z1, 0), 0, 0) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, z08) + ADD(z0, 1 + z08) :|: z = 2, z08 >= 0, z'' = 1 + z08, z0 >= 0, z' = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, z1) + ADD(z0, z1) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, 0) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), z0, 0) + ADD(z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(0, 0), 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + z06, 0), 0, z06) + ADD(0, 1 + z06) :|: z = 2, z'' = 1 + z06, z06 >= 0, z' = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z013, z1), 0), 1 + z013, z1) + ADD(1 + z013, z1) :|: z1 >= 0, z = 1, z013 >= 0, z' = 1 + z013, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, z1), 0), 1 + z05, 0) + ADD(1 + z05, z1) :|: z = 2, z1 >= 0, z05 >= 0, z' = 1 + z05, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, 0), 0), 1 + z05, 0) + ADD(1 + z05, 0) :|: z = 2, z'' = 0, z05 >= 0, z' = 1 + z05 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, 1 + z07), 0), 1 + z05, z07) + ADD(1 + z05, 1 + z07) :|: z = 2, z07 >= 0, z'' = 1 + z07, z05 >= 0, z' = 1 + z05 GR(z, z') -{ 1 }-> 1 + GR(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 add(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 add(z, z') -{ 0 }-> 1 + add(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 gr(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z0 >= 0, z = 0, z' = z0 gr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 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: gr(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 gr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 gr(z, z') -{ 0 }-> 1 :|: z0 >= 0, z = 0, z' = z0 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ 1 }-> 1 + ADD(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + z0', z1) :|: z = 2, z1 >= 0, z0' >= 0, z' = 1 + z0', z'' = z1 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z0, 1 + z04) :|: z'' = 1 + z04, z04 >= 0, z = 1, z0 >= 0, z' = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z0, 0) :|: z'' = 0, z = 1, z0 >= 0, z' = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z0, z1) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z02, z1), 0), z02, z1) :|: z = 2, z1 >= 0, z02 >= 0, z' = 1 + z02, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z02, z1), 0), 0, z1) :|: z = 2, z1 >= 0, z02 >= 0, z' = 1 + z02, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z1 = 1 + z0, z0 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z03, z1) :|: z = 2, z1 >= 0, z' = 1 + z03, z03 >= 0, z'' = z1, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, z1 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z03, z1) :|: z = 2, z1 >= 0, z' = 1 + z03, z03 >= 0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, z1 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z0'', z1), 0), z0'', z1) + ADD(1 + z0'', z1) :|: z = 2, z1 >= 0, z' = 1 + z0'', z0'' >= 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z0'', z1), 0), 0, z1) + ADD(1 + z0'', z1) :|: z = 2, z1 >= 0, z' = 1 + z0'', z0'' >= 0, z'' = z1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z1 = 1 + z0, z0 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z01, z1) + ADD(1 + z01, z1) :|: z = 2, z1 >= 0, z01 >= 0, z' = 1 + z01, z'' = z1, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, z1 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z01, z1) + ADD(1 + z01, z1) :|: z = 2, z1 >= 0, z01 >= 0, z' = 1 + z01, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, z1 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, z1), 0), 1 + z09, 0) :|: z = 2, z1 >= 0, z' = 1 + z09, z09 >= 0, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, 0), 0), 1 + z09, 0) :|: z = 2, z'' = 0, z' = 1 + z09, z09 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z09, 1 + z011), 0), 1 + z09, z011) :|: z = 2, z011 >= 0, z' = 1 + z09, z'' = 1 + z011, z09 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z010) :|: z = 2, z'' = 1 + z010, z010 >= 0, z' = 0, 1 + z010 = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z1 = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, z012) :|: z = 2, z'' = 1 + z012, z0 >= 0, z012 >= 0, z' = z0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, 0) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, z1 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, z012) :|: z = 2, z'' = 1 + z012, z0 >= 0, z012 >= 0, z' = z0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, 0) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z010) :|: z = 2, z'' = 1 + z010, z010 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + z010 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, z1 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z013, z1), 0), 1 + z013, z1) + ADD(1 + z013, z1) :|: z1 >= 0, z = 1, z013 >= 0, z' = 1 + z013, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, z1), 0), 1 + z05, 0) + ADD(1 + z05, z1) :|: z = 2, z1 >= 0, z05 >= 0, z' = 1 + z05, z'' = z1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, 0), 0), 1 + z05, 0) + ADD(1 + z05, 0) :|: z = 2, z'' = 0, z05 >= 0, z' = 1 + z05 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z05, 1 + z07), 0), 1 + z05, z07) + ADD(1 + z05, 1 + z07) :|: z = 2, z07 >= 0, z'' = 1 + z07, z05 >= 0, z' = 1 + z05 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z06) + ADD(0, 1 + z06) :|: z = 2, z'' = 1 + z06, z06 >= 0, z' = 0, 1 + z06 = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z1) + ADD(0, z1) :|: z1 >= 0, z = 1, z' = 0, z'' = z1, z1 = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z1 = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, z08) + ADD(z0, 1 + z08) :|: z = 2, z08 >= 0, z'' = 1 + z08, z0 >= 0, z' = z0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, z1) + ADD(z0, z1) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, 0) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z0, 0) + ADD(z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z1) + ADD(0, z1) :|: z1 >= 0, z = 1, z' = 0, z'' = z1, z0 >= 0, z1 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, z0 >= 0, z1 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, z08) + ADD(z0, 1 + z08) :|: z = 2, z08 >= 0, z'' = 1 + z08, z0 >= 0, z' = z0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, z1) + ADD(z0, z1) :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, 0) + ADD(z0, z1) :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z0, 0) + ADD(z0, 0) :|: z = 2, z'' = 0, z0 >= 0, z' = z0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z06) + ADD(0, 1 + z06) :|: z = 2, z'' = 1 + z06, z06 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + z06 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z1) + ADD(0, z1) :|: z1 >= 0, z = 1, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, z1 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z1) :|: z = 2, z1 >= 0, z' = 0, z'' = z1, v0 >= 0, v1 >= 0, z1 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 add(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 add(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 add(z, z') -{ 0 }-> 1 + add(z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 gr(z, z') -{ 0 }-> 2 :|: z = 1 + z0, z0 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z0 >= 0, z = 0, z' = z0 gr(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: { GR } { gr } { ADD } { add } { p } { COND2, COND1, COND3 } ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {GR}, {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} ---------------------------------------- (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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {GR}, {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: GR 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {GR}, {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: ?, size: O(1) [0] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: GR 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ 1 }-> 1 + GR(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: gr 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {gr}, {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: ?, size: O(1) [2] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: gr 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: 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: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ADD after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {ADD}, {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: ?, size: O(1) [0] ---------------------------------------- (43) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: ADD after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ 1 }-> 1 + ADD(z - 1, z') :|: z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + ADD(1 + (z' - 1), z'') :|: z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + ADD(1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + ADD(1 + (z' - 1), 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'') + ADD(z', z'') :|: z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) + ADD(z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) + ADD(z', 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + ADD(0, z'') :|: z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + ADD(0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + ADD(0, 1 + (z'' - 1)) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (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: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + s4 :|: s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + s3 :|: s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + s30 :|: s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: add after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + s4 :|: s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + s3 :|: s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + s30 :|: s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {add}, {p}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (49) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: add after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 0, z'') + s4 :|: s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), z' - 1, z'') + s3 :|: s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) :|: z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) :|: z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) :|: z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), z'') + s30 :|: s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, z''), 0), 1 + (z' - 1), 0) + s20 :|: s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 0), 0), 1 + (z' - 1), 0) + s18 :|: s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(gr(1 + add(z' - 1, 1 + (z'' - 1)), 0), 1 + (z' - 1), z'' - 1) + s19 :|: s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + add(z - 1, z') :|: z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (51) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (53) 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 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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}, {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: ?, size: O(n^1) [z] ---------------------------------------- (55) 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 ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (57) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: COND2 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: COND1 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 Computed SIZE bound using CoFloCo for: COND3 after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: {COND2,COND1,COND3} Previous analysis results are: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] COND2: runtime: ?, size: O(1) [0] COND1: runtime: ?, size: O(1) [1] COND3: runtime: ?, size: O(1) [2] ---------------------------------------- (61) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: COND2 after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 202 + 187*z' + 29*z'*z'' + 29*z'^2 + 152*z'' Computed RUNTIME bound using KoAT for: COND1 after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 609 + 374*z' + 58*z'*z'' + 58*z'^2 + 456*z'' Computed RUNTIME bound using KoAT for: COND3 after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 18620 + 7518*z' + 522*z'*z'' + 1218*z'^2 + 7296*z'' ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: ADD(z, z') -{ z }-> 1 + s' :|: s' >= 0, s' <= 0, z' >= 0, z - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(2, 1 + (z' - 1), z'') :|: z = 2, z'' >= 0, z' - 1 >= 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0 COND1(z, z', z'') -{ 1 }-> 1 + COND2(0, z', z'') :|: z = 2, z'' >= 0, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(2, z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(1, z', 0) :|: z'' = 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND3(0, z', z'') :|: z'' >= 0, z = 1, z' >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s39, z' - 1, z'') :|: s38 >= 0, s38 <= z' - 1 + z'', s39 >= 0, s39 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(s41, 0, z'') :|: s40 >= 0, s40 <= z' - 1 + z'', s41 >= 0, s41 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, z' - 1, z'') :|: z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s35, z' - 1, z'') + s3 :|: s34 >= 0, s34 <= z' - 1 + z'', s35 >= 0, s35 <= 2, s3 >= 0, s3 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(s37, 0, z'') + s4 :|: s36 >= 0, s36 <= z' - 1 + z'', s37 >= 0, s37 <= 2, s4 >= 0, s4 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s'' :|: s'' >= 0, s'' <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, 0, z'') + s10 :|: s10 >= 0, s10 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s2 :|: s2 >= 0, s2 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s6 :|: s6 >= 0, s6 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z' - 1, z'') + s8 :|: s8 >= 0, s8 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, z0 >= 0, 0 = 0, 0 = z0 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s1 :|: s1 >= 0, s1 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND2(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s5 :|: s5 >= 0, s5 <= 0, z = 2, z'' >= 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, 0, z'') + s9 :|: s9 >= 0, s9 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND2(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z' - 1, z'') + s7 :|: s7 >= 0, s7 <= 0, z = 2, z'' >= 0, z' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s49, 1 + (z' - 1), 0) :|: s48 >= 0, s48 <= z' - 1 + 0, s49 >= 0, s49 <= 2, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s51, 1 + (z' - 1), z'' - 1) :|: s50 >= 0, s50 <= z' - 1 + (1 + (z'' - 1)), s51 >= 0, s51 <= 2, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(s53, 1 + (z' - 1), 0) :|: s52 >= 0, s52 <= z' - 1 + z'', s53 >= 0, s53 <= 2, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', 0) :|: z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) :|: z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', 0) :|: z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, z', z'' - 1) :|: z = 2, z' >= 0, z'' - 1 >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) :|: z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) :|: z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s43, 1 + (z' - 1), 0) + s18 :|: s42 >= 0, s42 <= z' - 1 + 0, s43 >= 0, s43 <= 2, s18 >= 0, s18 <= 0, z = 2, z'' = 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s45, 1 + (z' - 1), z'' - 1) + s19 :|: s44 >= 0, s44 <= z' - 1 + (1 + (z'' - 1)), s45 >= 0, s45 <= 2, s19 >= 0, s19 <= 0, z = 2, z'' - 1 >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s47, 1 + (z' - 1), 0) + s20 :|: s46 >= 0, s46 <= z' - 1 + z'', s47 >= 0, s47 <= 2, s20 >= 0, s20 <= 0, z = 2, z'' >= 0, z' - 1 >= 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(s55, 1 + (z' - 1), z'') + s30 :|: s54 >= 0, s54 <= z' - 1 + z'', s55 >= 0, s55 <= 2, s30 >= 0, s30 <= 0, z'' >= 0, z = 1, z' - 1 >= 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'') + s27 :|: s27 >= 0, s27 <= 0, z'' >= 0, z = 1, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, 0) + s15 :|: s15 >= 0, s15 <= 0, z = 2, z'' >= 0, z' = 0, z'' - 1 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(2, 0, z'' - 1) + s13 :|: s13 >= 0, s13 <= 0, z = 2, z'' - 1 >= 0, z' = 0, 1 + (z'' - 1) = 1 + z0, z0 >= 0, 0 = 0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'') + s32 :|: s32 >= 0, s32 <= 0, z'' >= 0, z = 1, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s22 :|: s22 >= 0, s22 <= 0, z = 2, z'' = 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', 0) + s26 :|: s26 >= 0, s26 <= 0, z = 2, z'' >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(1, z', z'' - 1) + s24 :|: s24 >= 0, s24 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, z0' >= 0, 0 = 0, 0 = z0' COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, z'') + s29 :|: s29 >= 0, s29 <= 0, z'' >= 0, z = 1, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s12 :|: s12 >= 0, s12 <= 0, z = 2, z'' = 0, z' = 0, z0 >= 0, 0 = 0, 0 = z0 COND3(z, z', z'') -{ 1 }-> 1 + COND1(1, 0, 0) + s17 :|: s17 >= 0, s17 <= 0, z = 2, z'' >= 0, z' = 0, z0 >= 0, z'' = 0, 0 = z0 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'') + s31 :|: s31 >= 0, s31 <= 0, z'' >= 0, z = 1, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s21 :|: s21 >= 0, s21 <= 0, z = 2, z'' = 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', 0) + s25 :|: s25 >= 0, s25 <= 0, z = 2, z'' >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 + z' }-> 1 + COND1(0, z', z'' - 1) + s23 :|: s23 >= 0, s23 <= 0, z = 2, z'' - 1 >= 0, z' >= 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'') + s28 :|: s28 >= 0, s28 <= 0, z'' >= 0, z = 1, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s11 :|: s11 >= 0, s11 <= 0, z = 2, z'' = 0, z' = 0, v0 >= 0, v1 >= 0, 0 = v0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, 0) + s16 :|: s16 >= 0, s16 <= 0, z = 2, z'' >= 0, z' = 0, v1 >= 0, 0 = v1 COND3(z, z', z'') -{ 1 }-> 1 + COND1(0, 0, z'' - 1) + s14 :|: s14 >= 0, s14 <= 0, z = 2, z'' - 1 >= 0, z' = 0, v0 >= 0, v1 >= 0, 1 + (z'' - 1) = v0, 0 = v1 GR(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 add(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 add(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 add(z, z') -{ 0 }-> 1 + s33 :|: s33 >= 0, s33 <= z - 1 + z', z' >= 0, z - 1 >= 0 gr(z, z') -{ 0 }-> 2 :|: z - 1 >= 0, z' = 0 gr(z, z') -{ 0 }-> 1 :|: z' >= 0, z = 0 gr(z, z') -{ 0 }-> 0 :|: z >= 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: GR: runtime: O(n^1) [z'], size: O(1) [0] gr: runtime: O(1) [0], size: O(1) [2] ADD: runtime: O(n^1) [z], size: O(1) [0] add: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] COND2: runtime: O(n^2) [202 + 187*z' + 29*z'*z'' + 29*z'^2 + 152*z''], size: O(1) [0] COND1: runtime: O(n^2) [609 + 374*z' + 58*z'*z'' + 58*z'^2 + 456*z''], size: O(1) [1] COND3: runtime: O(n^2) [18620 + 7518*z' + 522*z'*z'' + 1218*z'^2 + 7296*z''], size: O(1) [2] ---------------------------------------- (63) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (64) BOUNDS(1, n^2) ---------------------------------------- (65) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(0, z0) -> false gr(s(z0), 0) -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(0, z0) -> c7 GR(s(z0), 0) -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0, z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0) -> c12 P(s(z0)) -> c13 S tuples: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(0, z0) -> c7 GR(s(z0), 0) -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0, z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0) -> c12 P(s(z0)) -> c13 K tuples:none Defined Rule Symbols: cond1_3, cond2_3, cond3_3, gr_2, add_2, p_1 Defined Pair Symbols: COND1_3, COND2_3, COND3_3, GR_2, ADD_2, P_1 Compound Symbols: c_2, c1_3, c2_2, c3_2, c4_3, c5_2, c6_3, c7, c8, c9_1, c10, c11_1, c12, c13 ---------------------------------------- (67) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (68) 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: COND1(true, z0, z1) -> c(COND2(gr(z0, 0), z0, z1), GR(z0, 0)) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0), p(z0), z1), GR(add(z0, z1), 0), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0), z0, z1), GR(z1, 0)) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0), z0, p(z1)), GR(add(z0, z1), 0), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0), z0, z1), GR(add(z0, z1), 0), ADD(z0, z1)) GR(0, z0) -> c7 GR(s(z0), 0) -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0, z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0) -> c12 P(s(z0)) -> c13 The (relative) TRS S consists of the following rules: cond1(true, z0, z1) -> cond2(gr(z0, 0), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0), z0, z1) gr(0, z0) -> false gr(s(z0), 0) -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0, z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0) -> 0 p(s(z0)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (69) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (70) 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: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 The (relative) TRS S consists of the following rules: cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Rewrite Strategy: INNERMOST ---------------------------------------- (71) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (72) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 ---------------------------------------- (73) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: COND1, COND2, gr, GR, add, ADD, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 gr < COND1 GR < COND1 COND1 = COND3 gr < COND2 GR < COND2 add < COND2 ADD < COND2 COND2 = COND3 gr < COND3 gr < cond1 gr < cond2 gr < cond3 GR < COND3 add < COND3 add < cond2 add < cond3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (74) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: gr, COND1, COND2, GR, add, ADD, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 gr < COND1 GR < COND1 COND1 = COND3 gr < COND2 GR < COND2 add < COND2 ADD < COND2 COND2 = COND3 gr < COND3 gr < cond1 gr < cond2 gr < cond3 GR < COND3 add < COND3 add < cond2 add < cond3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (75) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) Induction Base: gr(gen_0':s10_14(0), gen_0':s10_14(0)) ->_R^Omega(0) false Induction Step: gr(gen_0':s10_14(+(n14_14, 1)), gen_0':s10_14(+(n14_14, 1))) ->_R^Omega(0) gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) ->_IH false We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (76) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Lemmas: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: GR, COND1, COND2, add, ADD, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 GR < COND1 COND1 = COND3 GR < COND2 add < COND2 ADD < COND2 COND2 = COND3 GR < COND3 add < COND3 add < cond2 add < cond3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (77) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: GR(gen_0':s10_14(n389_14), gen_0':s10_14(n389_14)) -> gen_c7:c8:c911_14(n389_14), rt in Omega(1 + n389_14) Induction Base: GR(gen_0':s10_14(0), gen_0':s10_14(0)) ->_R^Omega(1) c7 Induction Step: GR(gen_0':s10_14(+(n389_14, 1)), gen_0':s10_14(+(n389_14, 1))) ->_R^Omega(1) c9(GR(gen_0':s10_14(n389_14), gen_0':s10_14(n389_14))) ->_IH c9(gen_c7:c8:c911_14(c390_14)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (78) Complex Obligation (BEST) ---------------------------------------- (79) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Lemmas: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: GR, COND1, COND2, add, ADD, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 GR < COND1 COND1 = COND3 GR < COND2 add < COND2 ADD < COND2 COND2 = COND3 GR < COND3 add < COND3 add < cond2 add < cond3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (80) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (81) BOUNDS(n^1, INF) ---------------------------------------- (82) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Lemmas: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) GR(gen_0':s10_14(n389_14), gen_0':s10_14(n389_14)) -> gen_c7:c8:c911_14(n389_14), rt in Omega(1 + n389_14) Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: add, COND1, COND2, ADD, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 COND1 = COND3 add < COND2 ADD < COND2 COND2 = COND3 add < COND3 add < cond2 add < cond3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (83) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: add(gen_0':s10_14(n1032_14), gen_0':s10_14(b)) -> gen_0':s10_14(+(n1032_14, b)), rt in Omega(0) Induction Base: add(gen_0':s10_14(0), gen_0':s10_14(b)) ->_R^Omega(0) gen_0':s10_14(b) Induction Step: add(gen_0':s10_14(+(n1032_14, 1)), gen_0':s10_14(b)) ->_R^Omega(0) s(add(gen_0':s10_14(n1032_14), gen_0':s10_14(b))) ->_IH s(gen_0':s10_14(+(b, c1033_14))) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (84) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Lemmas: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) GR(gen_0':s10_14(n389_14), gen_0':s10_14(n389_14)) -> gen_c7:c8:c911_14(n389_14), rt in Omega(1 + n389_14) add(gen_0':s10_14(n1032_14), gen_0':s10_14(b)) -> gen_0':s10_14(+(n1032_14, b)), rt in Omega(0) Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: ADD, COND1, COND2, COND3, cond1, cond2, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 COND1 = COND3 ADD < COND2 COND2 = COND3 ADD < COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3 ---------------------------------------- (85) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: ADD(gen_0':s10_14(n2099_14), gen_0':s10_14(b)) -> gen_c10:c1112_14(n2099_14), rt in Omega(1 + n2099_14) Induction Base: ADD(gen_0':s10_14(0), gen_0':s10_14(b)) ->_R^Omega(1) c10 Induction Step: ADD(gen_0':s10_14(+(n2099_14, 1)), gen_0':s10_14(b)) ->_R^Omega(1) c11(ADD(gen_0':s10_14(n2099_14), gen_0':s10_14(b))) ->_IH c11(gen_c10:c1112_14(c2100_14)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (86) Obligation: Innermost TRS: Rules: COND1(true, z0, z1) -> c(COND2(gr(z0, 0'), z0, z1), GR(z0, 0')) COND2(true, z0, z1) -> c1(COND1(gr(add(z0, z1), 0'), p(z0), z1), GR(add(z0, z1), 0'), ADD(z0, z1)) COND2(true, z0, z1) -> c2(COND1(gr(add(z0, z1), 0'), p(z0), z1), P(z0)) COND2(false, z0, z1) -> c3(COND3(gr(z1, 0'), z0, z1), GR(z1, 0')) COND3(true, z0, z1) -> c4(COND1(gr(add(z0, z1), 0'), z0, p(z1)), GR(add(z0, z1), 0'), ADD(z0, z1)) COND3(true, z0, z1) -> c5(COND1(gr(add(z0, z1), 0'), z0, p(z1)), P(z1)) COND3(false, z0, z1) -> c6(COND1(gr(add(z0, z1), 0'), z0, z1), GR(add(z0, z1), 0'), ADD(z0, z1)) GR(0', z0) -> c7 GR(s(z0), 0') -> c8 GR(s(z0), s(z1)) -> c9(GR(z0, z1)) ADD(0', z0) -> c10 ADD(s(z0), z1) -> c11(ADD(z0, z1)) P(0') -> c12 P(s(z0)) -> c13 cond1(true, z0, z1) -> cond2(gr(z0, 0'), z0, z1) cond2(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), p(z0), z1) cond2(false, z0, z1) -> cond3(gr(z1, 0'), z0, z1) cond3(true, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, p(z1)) cond3(false, z0, z1) -> cond1(gr(add(z0, z1), 0'), z0, z1) gr(0', z0) -> false gr(s(z0), 0') -> true gr(s(z0), s(z1)) -> gr(z0, z1) add(0', z0) -> z0 add(s(z0), z1) -> s(add(z0, z1)) p(0') -> 0' p(s(z0)) -> z0 Types: COND1 :: true:false -> 0':s -> 0':s -> c true :: true:false c :: c1:c2:c3 -> c7:c8:c9 -> c COND2 :: true:false -> 0':s -> 0':s -> c1:c2:c3 gr :: 0':s -> 0':s -> true:false 0' :: 0':s GR :: 0':s -> 0':s -> c7:c8:c9 c1 :: c -> c7:c8:c9 -> c10:c11 -> c1:c2:c3 add :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s ADD :: 0':s -> 0':s -> c10:c11 c2 :: c -> c12:c13 -> c1:c2:c3 P :: 0':s -> c12:c13 false :: true:false c3 :: c4:c5:c6 -> c7:c8:c9 -> c1:c2:c3 COND3 :: true:false -> 0':s -> 0':s -> c4:c5:c6 c4 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c5 :: c -> c12:c13 -> c4:c5:c6 c6 :: c -> c7:c8:c9 -> c10:c11 -> c4:c5:c6 c7 :: c7:c8:c9 s :: 0':s -> 0':s c8 :: c7:c8:c9 c9 :: c7:c8:c9 -> c7:c8:c9 c10 :: c10:c11 c11 :: c10:c11 -> c10:c11 c12 :: c12:c13 c13 :: c12:c13 cond1 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond2 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 cond3 :: true:false -> 0':s -> 0':s -> cond1:cond2:cond3 hole_c1_14 :: c hole_true:false2_14 :: true:false hole_0':s3_14 :: 0':s hole_c1:c2:c34_14 :: c1:c2:c3 hole_c7:c8:c95_14 :: c7:c8:c9 hole_c10:c116_14 :: c10:c11 hole_c12:c137_14 :: c12:c13 hole_c4:c5:c68_14 :: c4:c5:c6 hole_cond1:cond2:cond39_14 :: cond1:cond2:cond3 gen_0':s10_14 :: Nat -> 0':s gen_c7:c8:c911_14 :: Nat -> c7:c8:c9 gen_c10:c1112_14 :: Nat -> c10:c11 Lemmas: gr(gen_0':s10_14(n14_14), gen_0':s10_14(n14_14)) -> false, rt in Omega(0) GR(gen_0':s10_14(n389_14), gen_0':s10_14(n389_14)) -> gen_c7:c8:c911_14(n389_14), rt in Omega(1 + n389_14) add(gen_0':s10_14(n1032_14), gen_0':s10_14(b)) -> gen_0':s10_14(+(n1032_14, b)), rt in Omega(0) ADD(gen_0':s10_14(n2099_14), gen_0':s10_14(b)) -> gen_c10:c1112_14(n2099_14), rt in Omega(1 + n2099_14) Generator Equations: gen_0':s10_14(0) <=> 0' gen_0':s10_14(+(x, 1)) <=> s(gen_0':s10_14(x)) gen_c7:c8:c911_14(0) <=> c7 gen_c7:c8:c911_14(+(x, 1)) <=> c9(gen_c7:c8:c911_14(x)) gen_c10:c1112_14(0) <=> c10 gen_c10:c1112_14(+(x, 1)) <=> c11(gen_c10:c1112_14(x)) The following defined symbols remain to be analysed: cond2, COND1, COND2, COND3, cond1, cond3 They will be analysed ascendingly in the following order: COND1 = COND2 COND1 = COND3 COND2 = COND3 cond1 = cond2 cond1 = cond3 cond2 = cond3