WORST_CASE(Omega(n^1),O(n^2)) proof of /export/starexec/sandbox/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 641 ms] (2) CpxRelTRS (3) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CpxWeightedTrs (5) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxTypedWeightedTrs (7) CompletionProof [UPPER BOUND(ID), 0 ms] (8) CpxTypedWeightedCompleteTrs (9) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) InliningProof [UPPER BOUND(ID), 594 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 15 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 4 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 96 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 17 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 377 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 106 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 89 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 55 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 231 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 95 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 3 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 129 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 4 ms] (48) CpxRNTS (49) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 309 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 115 ms] (54) CpxRNTS (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 180 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 22 ms] (60) CpxRNTS (61) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 360 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 113 ms] (66) CpxRNTS (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 4984 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 1102 ms] (72) CpxRNTS (73) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 8324 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 3338 ms] (78) CpxRNTS (79) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (80) CpxRNTS (81) IntTrsBoundProof [UPPER BOUND(ID), 58 ms] (82) CpxRNTS (83) IntTrsBoundProof [UPPER BOUND(ID), 13 ms] (84) CpxRNTS (85) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 627 ms] (88) CpxRNTS (89) IntTrsBoundProof [UPPER BOUND(ID), 2 ms] (90) CpxRNTS (91) FinalProof [FINISHED, 0 ms] (92) BOUNDS(1, n^2) (93) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CpxRelTRS (95) SlicingProof [LOWER BOUND(ID), 0 ms] (96) CpxRelTRS (97) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (98) typed CpxTrs (99) OrderProof [LOWER BOUND(ID), 6 ms] (100) typed CpxTrs (101) RewriteLemmaProof [LOWER BOUND(ID), 324 ms] (102) BEST (103) proven lower bound (104) LowerBoundPropagationProof [FINISHED, 0 ms] (105) BOUNDS(n^1, INF) (106) typed CpxTrs (107) RewriteLemmaProof [LOWER BOUND(ID), 38 ms] (108) typed CpxTrs (109) RewriteLemmaProof [LOWER BOUND(ID), 34 ms] (110) typed CpxTrs (111) RewriteLemmaProof [LOWER BOUND(ID), 55 ms] (112) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(z0, 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0, z0) -> c3 PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) ZERO(s(z0)) -> c5 ZERO(0) -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0))), PLUS(z2, s(0))) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(z0, 0) -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0) -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0) quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(z0, 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0, z0) -> c3 PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) ZERO(s(z0)) -> c5 ZERO(0) -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0))), PLUS(z2, s(0))) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(z0, 0) -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0, z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0) -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0) quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Rewrite Strategy: INNERMOST ---------------------------------------- (3) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (4) 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: MINUS(0, z0) -> c [1] MINUS(z0, 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] PLUS(0, z0) -> c3 [1] PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) [1] ZERO(s(z0)) -> c5 [1] ZERO(0) -> c6 [1] P(s(z0)) -> c7 [1] DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) [1] QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0))), ZERO(z0)) [1] QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0))), PLUS(z2, s(0))) [1] IF(true, z0, z1, z2) -> c11(P(z2)) [1] IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) [1] minus(0, z0) -> 0 [0] minus(z0, 0) -> z0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> plus(z0, s(z1)) [0] zero(s(z0)) -> false [0] zero(0) -> true [0] p(s(z0)) -> z0 [0] div(z0, z1) -> quot(z0, z1, 0) [0] quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0))) [0] if(true, z0, z1, z2) -> p(z2) [0] if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (5) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (6) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MINUS(0, z0) -> c [1] MINUS(z0, 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] PLUS(0, z0) -> c3 [1] PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) [1] ZERO(s(z0)) -> c5 [1] ZERO(0) -> c6 [1] P(s(z0)) -> c7 [1] DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) [1] QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0))), ZERO(z0)) [1] QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0))), PLUS(z2, s(0))) [1] IF(true, z0, z1, z2) -> c11(P(z2)) [1] IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) [1] minus(0, z0) -> 0 [0] minus(z0, 0) -> z0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> plus(z0, s(z1)) [0] zero(s(z0)) -> false [0] zero(0) -> true [0] p(s(z0)) -> z0 [0] div(z0, z1) -> quot(z0, z1, 0) [0] quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0))) [0] if(true, z0, z1, z2) -> p(z2) [0] if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0:s -> 0:s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0:s -> 0:s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0:s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0:s -> c7 c7 :: c7 DIV :: 0:s -> 0:s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0:s -> 0:s -> 0:s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0:s -> 0:s -> 0:s -> c11:c12 zero :: 0:s -> true:false plus :: 0:s -> 0:s -> 0:s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0:s -> 0:s -> 0:s p :: 0:s -> 0:s div :: 0:s -> 0:s -> 0:s quot :: 0:s -> 0:s -> 0:s -> 0:s if :: true:false -> 0:s -> 0:s -> 0:s -> 0:s Rewrite Strategy: INNERMOST ---------------------------------------- (7) 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: MINUS_2 PLUS_2 ZERO_1 P_1 DIV_2 QUOT_3 IF_4 (c) The following functions are completely defined: minus_2 plus_2 zero_1 p_1 div_2 quot_3 if_4 Due to the following rules being added: minus(v0, v1) -> 0 [0] plus(v0, v1) -> 0 [0] zero(v0) -> null_zero [0] p(v0) -> 0 [0] div(v0, v1) -> 0 [0] quot(v0, v1, v2) -> 0 [0] if(v0, v1, v2, v3) -> 0 [0] And the following fresh constants: null_zero, const, const1, const2 ---------------------------------------- (8) 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: MINUS(0, z0) -> c [1] MINUS(z0, 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] PLUS(0, z0) -> c3 [1] PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) [1] ZERO(s(z0)) -> c5 [1] ZERO(0) -> c6 [1] P(s(z0)) -> c7 [1] DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) [1] QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0))), ZERO(z0)) [1] QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0))), PLUS(z2, s(0))) [1] IF(true, z0, z1, z2) -> c11(P(z2)) [1] IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) [1] minus(0, z0) -> 0 [0] minus(z0, 0) -> z0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> plus(z0, s(z1)) [0] zero(s(z0)) -> false [0] zero(0) -> true [0] p(s(z0)) -> z0 [0] div(z0, z1) -> quot(z0, z1, 0) [0] quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0))) [0] if(true, z0, z1, z2) -> p(z2) [0] if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) [0] minus(v0, v1) -> 0 [0] plus(v0, v1) -> 0 [0] zero(v0) -> null_zero [0] p(v0) -> 0 [0] div(v0, v1) -> 0 [0] quot(v0, v1, v2) -> 0 [0] if(v0, v1, v2, v3) -> 0 [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0:s -> 0:s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0:s -> 0:s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0:s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0:s -> c7 c7 :: c7 DIV :: 0:s -> 0:s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0:s -> 0:s -> 0:s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false:null_zero -> 0:s -> 0:s -> 0:s -> c11:c12 zero :: 0:s -> true:false:null_zero plus :: 0:s -> 0:s -> 0:s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false:null_zero c11 :: c7 -> c11:c12 false :: true:false:null_zero c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0:s -> 0:s -> 0:s p :: 0:s -> 0:s div :: 0:s -> 0:s -> 0:s quot :: 0:s -> 0:s -> 0:s -> 0:s if :: true:false:null_zero -> 0:s -> 0:s -> 0:s -> 0:s null_zero :: true:false:null_zero const :: c8 const1 :: c9:c10 const2 :: c11:c12 Rewrite Strategy: INNERMOST ---------------------------------------- (9) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (10) 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: MINUS(0, z0) -> c [1] MINUS(z0, 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] PLUS(0, z0) -> c3 [1] PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) [1] ZERO(s(z0)) -> c5 [1] ZERO(0) -> c6 [1] P(s(z0)) -> c7 [1] DIV(z0, z1) -> c8(QUOT(z0, z1, 0)) [1] QUOT(s(z0'), z1, 0) -> c9(IF(false, s(z0'), z1, s(0)), ZERO(s(z0'))) [1] QUOT(s(z0'), z1, s(z0'')) -> c9(IF(false, s(z0'), z1, plus(z0'', s(s(0)))), ZERO(s(z0'))) [1] QUOT(s(z0'), z1, z2) -> c9(IF(false, s(z0'), z1, 0), ZERO(s(z0'))) [1] QUOT(0, z1, 0) -> c9(IF(true, 0, z1, s(0)), ZERO(0)) [1] QUOT(0, z1, s(z01)) -> c9(IF(true, 0, z1, plus(z01, s(s(0)))), ZERO(0)) [1] QUOT(0, z1, z2) -> c9(IF(true, 0, z1, 0), ZERO(0)) [1] QUOT(z0, z1, 0) -> c9(IF(null_zero, z0, z1, s(0)), ZERO(z0)) [1] QUOT(z0, z1, s(z02)) -> c9(IF(null_zero, z0, z1, plus(z02, s(s(0)))), ZERO(z0)) [1] QUOT(z0, z1, z2) -> c9(IF(null_zero, z0, z1, 0), ZERO(z0)) [1] QUOT(s(z03), z1, 0) -> c10(IF(false, s(z03), z1, s(0)), PLUS(0, s(0))) [1] QUOT(s(z03), z1, s(z04)) -> c10(IF(false, s(z03), z1, plus(z04, s(s(0)))), PLUS(s(z04), s(0))) [1] QUOT(s(z03), z1, z2) -> c10(IF(false, s(z03), z1, 0), PLUS(z2, s(0))) [1] QUOT(0, z1, 0) -> c10(IF(true, 0, z1, s(0)), PLUS(0, s(0))) [1] QUOT(0, z1, s(z05)) -> c10(IF(true, 0, z1, plus(z05, s(s(0)))), PLUS(s(z05), s(0))) [1] QUOT(0, z1, z2) -> c10(IF(true, 0, z1, 0), PLUS(z2, s(0))) [1] QUOT(z0, z1, 0) -> c10(IF(null_zero, z0, z1, s(0)), PLUS(0, s(0))) [1] QUOT(z0, z1, s(z06)) -> c10(IF(null_zero, z0, z1, plus(z06, s(s(0)))), PLUS(s(z06), s(0))) [1] QUOT(z0, z1, z2) -> c10(IF(null_zero, z0, z1, 0), PLUS(z2, s(0))) [1] IF(true, z0, z1, z2) -> c11(P(z2)) [1] IF(false, 0, s(z1), z2) -> c12(QUOT(0, s(z1), z2), MINUS(0, s(z1))) [1] IF(false, s(z07), s(z1), z2) -> c12(QUOT(minus(z07, z1), s(z1), z2), MINUS(s(z07), s(z1))) [1] IF(false, z0, s(z1), z2) -> c12(QUOT(0, s(z1), z2), MINUS(z0, s(z1))) [1] minus(0, z0) -> 0 [0] minus(z0, 0) -> z0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] plus(0, z0) -> z0 [0] plus(s(z0), z1) -> plus(z0, s(z1)) [0] zero(s(z0)) -> false [0] zero(0) -> true [0] p(s(z0)) -> z0 [0] div(z0, z1) -> quot(z0, z1, 0) [0] quot(s(z08), z1, 0) -> if(false, s(z08), z1, s(0)) [0] quot(s(z08), z1, s(z09)) -> if(false, s(z08), z1, plus(z09, s(s(0)))) [0] quot(s(z08), z1, z2) -> if(false, s(z08), z1, 0) [0] quot(0, z1, 0) -> if(true, 0, z1, s(0)) [0] quot(0, z1, s(z010)) -> if(true, 0, z1, plus(z010, s(s(0)))) [0] quot(0, z1, z2) -> if(true, 0, z1, 0) [0] quot(z0, z1, 0) -> if(null_zero, z0, z1, s(0)) [0] quot(z0, z1, s(z011)) -> if(null_zero, z0, z1, plus(z011, s(s(0)))) [0] quot(z0, z1, z2) -> if(null_zero, z0, z1, 0) [0] if(true, z0, z1, z2) -> p(z2) [0] if(false, 0, s(z1), z2) -> quot(0, s(z1), z2) [0] if(false, s(z012), s(z1), z2) -> quot(minus(z012, z1), s(z1), z2) [0] if(false, z0, s(z1), z2) -> quot(0, s(z1), z2) [0] minus(v0, v1) -> 0 [0] plus(v0, v1) -> 0 [0] zero(v0) -> null_zero [0] p(v0) -> 0 [0] div(v0, v1) -> 0 [0] quot(v0, v1, v2) -> 0 [0] if(v0, v1, v2, v3) -> 0 [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0:s -> 0:s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0:s -> 0:s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0:s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0:s -> c7 c7 :: c7 DIV :: 0:s -> 0:s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0:s -> 0:s -> 0:s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false:null_zero -> 0:s -> 0:s -> 0:s -> c11:c12 zero :: 0:s -> true:false:null_zero plus :: 0:s -> 0:s -> 0:s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false:null_zero c11 :: c7 -> c11:c12 false :: true:false:null_zero c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0:s -> 0:s -> 0:s p :: 0:s -> 0:s div :: 0:s -> 0:s -> 0:s quot :: 0:s -> 0:s -> 0:s -> 0:s if :: true:false:null_zero -> 0:s -> 0:s -> 0:s -> 0:s null_zero :: true:false:null_zero const :: c8 const1 :: c9:c10 const2 :: c11:c12 Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 c => 0 c1 => 1 c3 => 0 c5 => 0 c6 => 1 c7 => 0 true => 2 false => 1 null_zero => 0 const => 0 const1 => 0 const2 => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z0, z1, 0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + P(z2) :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z07, z1), 1 + z1, z2) + MINUS(1 + z07, 1 + z1) :|: z1 >= 0, z07 >= 0, z = 1, z' = 1 + z07, z'' = 1 + z1, z3 = z2, z2 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + z1, z2) + MINUS(z0, 1 + z1) :|: z1 >= 0, z = 1, z0 >= 0, z'' = 1 + z1, z3 = z2, z' = z0, z2 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + z1, z2) + MINUS(0, 1 + z1) :|: z1 >= 0, z = 1, z'' = 1 + z1, z3 = z2, z2 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z = z0, z0 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 P(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, plus(z01, 1 + (1 + 0))) + ZERO(0) :|: z1 >= 0, z01 >= 0, z' = z1, z = 0, z'' = 1 + z01 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, plus(z05, 1 + (1 + 0))) + PLUS(1 + z05, 1 + 0) :|: z1 >= 0, z'' = 1 + z05, z' = z1, z05 >= 0, z = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 0) + ZERO(0) :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 1 + 0) + ZERO(0) :|: z'' = 0, z1 >= 0, z' = z1, z = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z0', z1, plus(z0'', 1 + (1 + 0))) + ZERO(1 + z0') :|: z1 >= 0, z'' = 1 + z0'', z0' >= 0, z' = z1, z0'' >= 0, z = 1 + z0' QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z0', z1, 0) + ZERO(1 + z0') :|: z'' = z2, z1 >= 0, z0' >= 0, z' = z1, z = 1 + z0', z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z0', z1, 1 + 0) + ZERO(1 + z0') :|: z'' = 0, z1 >= 0, z0' >= 0, z' = z1, z = 1 + z0' QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, plus(z04, 1 + (1 + 0))) + PLUS(1 + z04, 1 + 0) :|: z'' = 1 + z04, z04 >= 0, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, plus(z02, 1 + (1 + 0))) + ZERO(z0) :|: z = z0, z1 >= 0, z02 >= 0, z' = z1, z0 >= 0, z'' = 1 + z02 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, plus(z06, 1 + (1 + 0))) + PLUS(1 + z06, 1 + 0) :|: z'' = 1 + z06, z = z0, z1 >= 0, z06 >= 0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 0) + ZERO(z0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 1 + 0) + ZERO(z0) :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 div(z, z') -{ 0 }-> quot(z0, z1, 0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 if(z, z', z'', z3) -{ 0 }-> quot(minus(z012, z1), 1 + z1, z2) :|: z1 >= 0, z = 1, z' = 1 + z012, z012 >= 0, z'' = 1 + z1, z3 = z2, z2 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + z1, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1, z3 = z2, z2 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + z1, z2) :|: z1 >= 0, z = 1, z0 >= 0, z'' = 1 + z1, z3 = z2, z' = z0, z2 >= 0 if(z, z', z'', z3) -{ 0 }-> p(z2) :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1 if(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 minus(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 minus(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 minus(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 :|: v0 >= 0, z = v0 plus(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 plus(z, z') -{ 0 }-> plus(z0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, plus(z010, 1 + (1 + 0))) :|: z1 >= 0, z'' = 1 + z010, z' = z1, z = 0, z010 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, plus(z09, 1 + (1 + 0))) :|: z08 >= 0, z1 >= 0, z'' = 1 + z09, z = 1 + z08, z' = z1, z09 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, 0) :|: z08 >= 0, z'' = z2, z1 >= 0, z = 1 + z08, z' = z1, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, 1 + 0) :|: z'' = 0, z08 >= 0, z1 >= 0, z = 1 + z08, z' = z1 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, plus(z011, 1 + (1 + 0))) :|: z = z0, z1 >= 0, z011 >= 0, z'' = 1 + z011, z' = z1, z0 >= 0 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, 0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, 1 + 0) :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0 zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (13) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 P(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 p(z) -{ 0 }-> z0 :|: z = 1 + z0, z0 >= 0 p(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z0, z1, 0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1, z2 = 1 + z0', z0' >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z07, z1), 1 + z1, z2) + MINUS(1 + z07, 1 + z1) :|: z1 >= 0, z07 >= 0, z = 1, z' = 1 + z07, z'' = 1 + z1, z3 = z2, z2 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + z1, z2) + MINUS(z0, 1 + z1) :|: z1 >= 0, z = 1, z0 >= 0, z'' = 1 + z1, z3 = z2, z' = z0, z2 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + z1, z2) + MINUS(0, 1 + z1) :|: z1 >= 0, z = 1, z'' = 1 + z1, z3 = z2, z2 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z = z0, z0 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 P(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z1, plus(z01, 1 + (1 + 0))) + 1 :|: z1 >= 0, z01 >= 0, z' = z1, z = 0, z'' = 1 + z01, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, plus(z05, 1 + (1 + 0))) + PLUS(1 + z05, 1 + 0) :|: z1 >= 0, z'' = 1 + z05, z' = z1, z05 >= 0, z = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z1, 0) + 1 :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z1, 1 + 0) + 1 :|: z'' = 0, z1 >= 0, z' = z1, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + z0', z1, plus(z0'', 1 + (1 + 0))) + 0 :|: z1 >= 0, z'' = 1 + z0'', z0' >= 0, z' = z1, z0'' >= 0, z = 1 + z0', 1 + z0' = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + z0', z1, 0) + 0 :|: z'' = z2, z1 >= 0, z0' >= 0, z' = z1, z = 1 + z0', z2 >= 0, 1 + z0' = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + z0', z1, 1 + 0) + 0 :|: z'' = 0, z1 >= 0, z0' >= 0, z' = z1, z = 1 + z0', 1 + z0' = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, plus(z04, 1 + (1 + 0))) + PLUS(1 + z04, 1 + 0) :|: z'' = 1 + z04, z04 >= 0, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0, z2 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + z03, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 1 + z03, z03 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, plus(z02, 1 + (1 + 0))) + 1 :|: z = z0, z1 >= 0, z02 >= 0, z' = z1, z0 >= 0, z'' = 1 + z02, z0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, plus(z02, 1 + (1 + 0))) + 0 :|: z = z0, z1 >= 0, z02 >= 0, z' = z1, z0 >= 0, z'' = 1 + z02, z0 = 1 + z0', z0' >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, plus(z06, 1 + (1 + 0))) + PLUS(1 + z06, 1 + 0) :|: z'' = 1 + z06, z = z0, z1 >= 0, z06 >= 0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 0) + PLUS(z2, 1 + 0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, 0) + 1 :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0, z0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, 0) + 0 :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0, z0 = 1 + z0', z0' >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z0, z1, 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, 1 + 0) + 1 :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z0, z1, 1 + 0) + 0 :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0, z0 = 1 + z0', z0' >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z = 1 + z0, z0 >= 0 div(z, z') -{ 0 }-> quot(z0, z1, 0) :|: z = z0, z1 >= 0, z' = z1, z0 >= 0 div(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 if(z, z', z'', z3) -{ 0 }-> z0' :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1, z2 = 1 + z0', z0' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z012, z1), 1 + z1, z2) :|: z1 >= 0, z = 1, z' = 1 + z012, z012 >= 0, z'' = 1 + z1, z3 = z2, z2 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + z1, z2) :|: z1 >= 0, z = 1, z'' = 1 + z1, z3 = z2, z2 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + z1, z2) :|: z1 >= 0, z = 1, z0 >= 0, z'' = 1 + z1, z3 = z2, z' = z0, z2 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z3 = v3, v2 >= 0, v3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z1 >= 0, z0 >= 0, z3 = z2, z' = z0, z2 >= 0, z'' = z1, v0 >= 0, z2 = v0 minus(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 minus(z, z') -{ 0 }-> 0 :|: z0 >= 0, z = 0, z' = z0 minus(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 :|: v0 >= 0, z = v0 plus(z, z') -{ 0 }-> z0 :|: z0 >= 0, z = 0, z' = z0 plus(z, z') -{ 0 }-> plus(z0, 1 + z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 plus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, plus(z010, 1 + (1 + 0))) :|: z1 >= 0, z'' = 1 + z010, z' = z1, z = 0, z010 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, 0) :|: z'' = z2, z1 >= 0, z' = z1, z = 0, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z1, 1 + 0) :|: z'' = 0, z1 >= 0, z' = z1, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, plus(z09, 1 + (1 + 0))) :|: z08 >= 0, z1 >= 0, z'' = 1 + z09, z = 1 + z08, z' = z1, z09 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, 0) :|: z08 >= 0, z'' = z2, z1 >= 0, z = 1 + z08, z' = z1, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + z08, z1, 1 + 0) :|: z'' = 0, z08 >= 0, z1 >= 0, z = 1 + z08, z' = z1 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, plus(z011, 1 + (1 + 0))) :|: z = z0, z1 >= 0, z011 >= 0, z'' = 1 + z011, z' = z1, z0 >= 0 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, 0) :|: z'' = z2, z = z0, z1 >= 0, z' = z1, z0 >= 0, z2 >= 0 quot(z, z', z'') -{ 0 }-> if(0, z0, z1, 1 + 0) :|: z'' = 0, z = z0, z1 >= 0, z' = z1, z0 >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0 zero(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { P } { minus } { ZERO } { PLUS } { zero } { plus } { p } { MINUS } { if, quot } { QUOT, IF } { div } { DIV } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {P}, {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {P}, {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: P after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {P}, {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: ?, size: O(1) [0] ---------------------------------------- (23) 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: 1 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] ---------------------------------------- (25) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: minus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: ?, size: O(n^1) [z] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: minus 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: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(minus(z' - 1, z'' - 1), 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ZERO after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {ZERO}, {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: ?, size: O(1) [1] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: ZERO after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: PLUS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PLUS}, {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: ?, size: O(n^1) [z] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: PLUS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 }-> 1 + PLUS(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(2, 0, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + PLUS(1 + (z'' - 1), 1 + 0) :|: z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 0) + PLUS(z'', 1 + 0) :|: z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 1 }-> 1 + IF(0, z, z', 1 + 0) + PLUS(0, 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] ---------------------------------------- (43) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: zero after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {zero}, {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: ?, size: O(1) [2] ---------------------------------------- (47) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: zero after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (49) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (51) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z + z' ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {plus}, {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: ?, size: O(n^1) [z + z'] ---------------------------------------- (53) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + s6 :|: s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + s3 :|: s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + s9 :|: s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 1 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', plus(z'' - 1, 1 + (1 + 0))) + 0 :|: z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> plus(z - 1, 1 + z') :|: z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', plus(z'' - 1, 1 + (1 + 0))) :|: z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', plus(z'' - 1, 1 + (1 + 0))) :|: z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (55) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (56) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] ---------------------------------------- (57) 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 ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {p}, {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: ?, size: O(n^1) [z] ---------------------------------------- (59) 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 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (61) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (63) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: MINUS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: ?, size: O(n^1) [1 + z] ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: MINUS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z' ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + MINUS(1 + (z' - 1), 1 + (z'' - 1)) :|: s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(z', 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 IF(z, z', z'', z3) -{ 1 }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + MINUS(0, 1 + (z'' - 1)) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] ---------------------------------------- (67) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (68) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] ---------------------------------------- (69) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: if after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' + z3 Computed SIZE bound using CoFloCo for: quot after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z + z'' ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if,quot}, {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: ?, size: O(n^1) [1 + z' + z3] quot: runtime: ?, size: O(n^1) [2 + z + z''] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: if after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed RUNTIME bound using CoFloCo for: quot after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> quot(z, z', 0) :|: z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> quot(s'', 1 + (z'' - 1), z3) :|: s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> quot(0, 1 + (z'' - 1), z3) :|: z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', s16) :|: s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 0) :|: z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(2, 0, z', 1 + 0) :|: z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', s15) :|: s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 0) :|: z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(1, 1 + (z - 1), z', 1 + 0) :|: z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', s17) :|: s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 0) :|: z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> if(0, z, z', 1 + 0) :|: z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] ---------------------------------------- (73) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (74) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] ---------------------------------------- (75) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: QUOT after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 265 + 69*z + 6*z*z'' + 7*z^2 + 10*z'' Computed SIZE bound using KoAT for: IF after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3 ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {QUOT,IF}, {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: ?, size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: ?, size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: QUOT after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z'' Computed RUNTIME bound using KoAT for: IF after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 1 }-> 1 + QUOT(z, z', 0) :|: z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(s, 1 + (z'' - 1), z3) + s24 :|: s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s23 :|: s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 3 + z'' }-> 1 + QUOT(0, 1 + (z'' - 1), z3) + s25 :|: s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', s12) + s6 :|: s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', s19) + 1 :|: s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(2, 0, z', 0) + s7 :|: s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 0) + 1 :|: z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + s5 :|: s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(2, 0, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', s11) + s3 :|: s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', s18) + 0 :|: s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(1, 1 + (z - 1), z', 0) + s4 :|: s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 0) + 0 :|: z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + s2 :|: s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(1, 1 + (z - 1), z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', s13) + s9 :|: s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s20) + 1 :|: s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', s21) + 0 :|: s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 + z'' }-> 1 + IF(0, z, z', 0) + s10 :|: s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 1 :|: z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 0) + 0 :|: z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + s8 :|: s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 1 :|: z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 2 }-> 1 + IF(0, z, z', 1 + 0) + 0 :|: z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] ---------------------------------------- (79) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] ---------------------------------------- (81) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: div after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {div}, {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] div: runtime: ?, size: O(n^1) [2 + z] ---------------------------------------- (83) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: div after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] div: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (85) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] div: runtime: O(1) [0], size: O(n^1) [2 + z] ---------------------------------------- (87) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: DIV after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {DIV} Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] div: runtime: O(1) [0], size: O(n^1) [2 + z] DIV: runtime: ?, size: INF ---------------------------------------- (89) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: DIV after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' ---------------------------------------- (90) Obligation: Complexity RNTS consisting of the following rules: DIV(z, z') -{ 2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z' }-> 1 + s39 :|: s39 >= 0, s39 <= 69 * z + 10 * 0 + 7 * (z * z) + 6 * (0 * z) + 265, z' >= 0, z >= 0 IF(z, z', z'', z3) -{ 2 }-> 1 + 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s49 + s23 :|: s49 >= 0, s49 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s23 >= 0, s23 <= 0 + 1, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 IF(z, z', z'', z3) -{ 2699 + 2787*s + 7*s*z'' + 90*s*z3 + 90*s^2 + 7*z'' + 90*z3 }-> 1 + s50 + s24 :|: s50 >= 0, s50 <= 69 * s + 10 * z3 + 7 * (s * s) + 6 * (z3 * s) + 265, s24 >= 0, s24 <= 1 + (z' - 1) + 1, s >= 0, s <= z' - 1, z'' - 1 >= 0, z' - 1 >= 0, z = 1, z3 >= 0 IF(z, z', z'', z3) -{ 2699 + 7*z'' + 90*z3 }-> 1 + s51 + s25 :|: s51 >= 0, s51 <= 69 * 0 + 10 * z3 + 7 * (0 * 0) + 6 * (z3 * 0) + 265, s25 >= 0, s25 <= z' + 1, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s22 :|: s22 >= 0, s22 <= z - 1 + 1, z' - 1 >= 0, z - 1 >= 0 P(z) -{ 1 }-> 0 :|: z - 1 >= 0 PLUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 PLUS(z, z') -{ 1 + z }-> 1 + s1 :|: s1 >= 0, s1 <= z - 1, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s40 + s2 :|: s40 >= 0, s40 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s2 >= 0, s2 <= 0, z'' = 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s11 + 90*s11*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s41 + s3 :|: s41 >= 0, s41 <= 71 * (1 + (z - 1)) + 30 * s11 + 6 * (s11 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s11 >= 0, s11 <= z'' - 1 + (1 + (1 + 0)), s3 >= 0, s3 <= 1 + (z'' - 1), z'' - 1 >= 0, z' >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s42 + s4 :|: s42 >= 0, s42 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s4 >= 0, s4 <= z'', z' >= 0, z - 1 >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s43 + s5 :|: s43 >= 0, s43 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, s5 >= 0, s5 <= 0, z'' = 0, z' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s12 + 14*z' + z'' }-> 1 + s44 + s6 :|: s44 >= 0, s44 <= 71 * 0 + 30 * s12 + 6 * (s12 * 0) + 7 * (0 * 0) + 802, s12 >= 0, s12 <= z'' - 1 + (1 + (1 + 0)), s6 >= 0, s6 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 14*z' + z'' }-> 1 + s45 + s7 :|: s45 >= 0, s45 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, s7 >= 0, s7 <= z'', z' >= 0, z = 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s46 + s8 :|: s46 >= 0, s46 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, s8 >= 0, s8 <= 0, z'' = 0, z' >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 180*s13 + 90*s13*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s47 + s9 :|: s47 >= 0, s47 <= 71 * z + 30 * s13 + 6 * (s13 * z) + 7 * (z * z) + 802, s13 >= 0, s13 <= z'' - 1 + (1 + (1 + 0)), s9 >= 0, s9 <= 1 + (z'' - 1), z' >= 0, z'' - 1 >= 0, z >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' + z'' }-> 1 + s48 + s10 :|: s48 >= 0, s48 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, s10 >= 0, s10 <= z'', z' >= 0, z >= 0, z'' >= 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s52 + 0 :|: s52 >= 0, s52 <= 71 * (1 + (z - 1)) + 30 * (1 + 0) + 6 * ((1 + 0) * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z'' = 0, z' >= 0, z - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s18 + 90*s18*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s53 + 0 :|: s53 >= 0, s53 <= 71 * (1 + (z - 1)) + 30 * s18 + 6 * (s18 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, s18 >= 0, s18 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z - 1 >= 0, z'' - 1 >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s54 + 0 :|: s54 >= 0, s54 <= 71 * (1 + (z - 1)) + 30 * 0 + 6 * (0 * (1 + (z - 1))) + 7 * ((1 + (z - 1)) * (1 + (z - 1))) + 802, z' >= 0, z - 1 >= 0, z'' >= 0, 1 + (z - 1) = 1 + z0, z0 >= 0 QUOT(z, z', z'') -{ 5584 + 14*z' }-> 1 + s55 + 1 :|: s55 >= 0, s55 <= 71 * 0 + 30 * (1 + 0) + 6 * ((1 + 0) * 0) + 7 * (0 * 0) + 802, z'' = 0, z' >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 180*s19 + 14*z' }-> 1 + s56 + 1 :|: s56 >= 0, s56 <= 71 * 0 + 30 * s19 + 6 * (s19 * 0) + 7 * (0 * 0) + 802, s19 >= 0, s19 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z = 0, 0 = 0 QUOT(z, z', z'') -{ 5404 + 14*z' }-> 1 + s57 + 1 :|: s57 >= 0, s57 <= 71 * 0 + 30 * 0 + 6 * (0 * 0) + 7 * (0 * 0) + 802, z' >= 0, z = 0, z'' >= 0, 0 = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s58 + 1 :|: s58 >= 0, s58 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5584 + 2697*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s59 + 0 :|: s59 >= 0, s59 <= 71 * z + 30 * (1 + 0) + 6 * ((1 + 0) * z) + 7 * (z * z) + 802, z'' = 0, z' >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 180*s20 + 90*s20*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s60 + 1 :|: s60 >= 0, s60 <= 71 * z + 30 * s20 + 6 * (s20 * z) + 7 * (z * z) + 802, s20 >= 0, s20 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 180*s21 + 90*s21*z + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s61 + 0 :|: s61 >= 0, s61 <= 71 * z + 30 * s21 + 6 * (s21 * z) + 7 * (z * z) + 802, s21 >= 0, s21 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0, z - 1 >= 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s62 + 1 :|: s62 >= 0, s62 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z = 0 QUOT(z, z', z'') -{ 5404 + 2607*z + 7*z*z' + 90*z^2 + 14*z' }-> 1 + s63 + 0 :|: s63 >= 0, s63 <= 71 * z + 30 * 0 + 6 * (0 * z) + 7 * (z * z) + 802, z' >= 0, z >= 0, z'' >= 0, z - 1 >= 0 ZERO(z) -{ 1 }-> 1 :|: z = 0 ZERO(z) -{ 1 }-> 0 :|: z - 1 >= 0 div(z, z') -{ 0 }-> s26 :|: s26 >= 0, s26 <= z + 0 + 2, z' >= 0, z >= 0 div(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 if(z, z', z'', z3) -{ 0 }-> s36 :|: s36 >= 0, s36 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z3 >= 0, z' = 0 if(z, z', z'', z3) -{ 0 }-> s37 :|: s37 >= 0, s37 <= s'' + z3 + 2, s'' >= 0, s'' <= z' - 1, z'' - 1 >= 0, z = 1, z' - 1 >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> s38 :|: s38 >= 0, s38 <= 0 + z3 + 2, z'' - 1 >= 0, z = 1, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> 0 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0 if(z, z', z'', z3) -{ 0 }-> z3 - 1 :|: z = 2, z'' >= 0, z' >= 0, z3 >= 0, z3 - 1 >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z' >= 0, z = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 p(z) -{ 0 }-> 0 :|: z >= 0 p(z) -{ 0 }-> z - 1 :|: z - 1 >= 0 plus(z, z') -{ 0 }-> s14 :|: s14 >= 0, s14 <= z - 1 + (1 + z'), z' >= 0, z - 1 >= 0 plus(z, z') -{ 0 }-> z' :|: z' >= 0, z = 0 plus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s27 :|: s27 >= 0, s27 <= 1 + 0 + 1 + (1 + (z - 1)), z'' = 0, z - 1 >= 0, z' >= 0 quot(z, z', z'') -{ 0 }-> s28 :|: s28 >= 0, s28 <= s15 + 1 + (1 + (z - 1)), s15 >= 0, s15 <= z'' - 1 + (1 + (1 + 0)), z - 1 >= 0, z' >= 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s29 :|: s29 >= 0, s29 <= 0 + 1 + (1 + (z - 1)), z - 1 >= 0, z' >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s30 :|: s30 >= 0, s30 <= 1 + 0 + 1 + 0, z'' = 0, z' >= 0, z = 0 quot(z, z', z'') -{ 0 }-> s31 :|: s31 >= 0, s31 <= s16 + 1 + 0, s16 >= 0, s16 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z = 0, z'' - 1 >= 0 quot(z, z', z'') -{ 0 }-> s32 :|: s32 >= 0, s32 <= 0 + 1 + 0, z' >= 0, z = 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> s33 :|: s33 >= 0, s33 <= 1 + 0 + 1 + z, z'' = 0, z' >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s34 :|: s34 >= 0, s34 <= s17 + 1 + z, s17 >= 0, s17 <= z'' - 1 + (1 + (1 + 0)), z' >= 0, z'' - 1 >= 0, z >= 0 quot(z, z', z'') -{ 0 }-> s35 :|: s35 >= 0, s35 <= 0 + 1 + z, z' >= 0, z >= 0, z'' >= 0 quot(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 zero(z) -{ 0 }-> 2 :|: z = 0 zero(z) -{ 0 }-> 1 :|: z - 1 >= 0 zero(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: Previous analysis results are: P: runtime: O(1) [1], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ZERO: runtime: O(1) [1], size: O(1) [1] PLUS: runtime: O(n^1) [1 + z], size: O(n^1) [z] zero: runtime: O(1) [0], size: O(1) [2] plus: runtime: O(1) [0], size: O(n^1) [z + z'] p: runtime: O(1) [0], size: O(n^1) [z] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z] if: runtime: O(1) [0], size: O(n^1) [1 + z' + z3] quot: runtime: O(1) [0], size: O(n^1) [2 + z + z''] QUOT: runtime: O(n^2) [2696 + 2787*z + 7*z*z' + 90*z*z'' + 90*z^2 + 6*z' + 90*z''], size: O(n^2) [265 + 69*z + 6*z*z'' + 7*z^2 + 10*z''] IF: runtime: O(n^2) [5402 + 2607*z' + 7*z'*z'' + 90*z'*z3 + 90*z'^2 + 14*z'' + 180*z3], size: O(n^2) [802 + 71*z' + 6*z'*z3 + 7*z'^2 + 30*z3] div: runtime: O(1) [0], size: O(n^1) [2 + z] DIV: runtime: O(n^2) [2697 + 2787*z + 7*z*z' + 90*z^2 + 6*z'], size: INF ---------------------------------------- (91) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (92) BOUNDS(1, n^2) ---------------------------------------- (93) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (94) 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: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0', z0) -> c3 PLUS(s(z0), z1) -> c4(PLUS(z0, s(z1))) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2, s(0'))) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) The (relative) TRS S consists of the following rules: minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Rewrite Strategy: INNERMOST ---------------------------------------- (95) SlicingProof (LOWER BOUND(ID)) Sliced the following arguments: PLUS/1 ---------------------------------------- (96) 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: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) The (relative) TRS S consists of the following rules: minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Rewrite Strategy: INNERMOST ---------------------------------------- (97) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (98) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 ---------------------------------------- (99) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: MINUS, PLUS, QUOT, plus, minus, quot They will be analysed ascendingly in the following order: MINUS < QUOT PLUS < QUOT plus < QUOT minus < QUOT plus < quot minus < quot ---------------------------------------- (100) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: MINUS, PLUS, QUOT, plus, minus, quot They will be analysed ascendingly in the following order: MINUS < QUOT PLUS < QUOT plus < QUOT minus < QUOT plus < quot minus < quot ---------------------------------------- (101) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13)) -> gen_c:c1:c210_13(n14_13), rt in Omega(1 + n14_13) Induction Base: MINUS(gen_0':s11_13(0), gen_0':s11_13(0)) ->_R^Omega(1) c Induction Step: MINUS(gen_0':s11_13(+(n14_13, 1)), gen_0':s11_13(+(n14_13, 1))) ->_R^Omega(1) c2(MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13))) ->_IH c2(gen_c:c1:c210_13(c15_13)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (102) Complex Obligation (BEST) ---------------------------------------- (103) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: MINUS, PLUS, QUOT, plus, minus, quot They will be analysed ascendingly in the following order: MINUS < QUOT PLUS < QUOT plus < QUOT minus < QUOT plus < quot minus < quot ---------------------------------------- (104) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (105) BOUNDS(n^1, INF) ---------------------------------------- (106) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Lemmas: MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13)) -> gen_c:c1:c210_13(n14_13), rt in Omega(1 + n14_13) Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: PLUS, QUOT, plus, minus, quot They will be analysed ascendingly in the following order: PLUS < QUOT plus < QUOT minus < QUOT plus < quot minus < quot ---------------------------------------- (107) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: PLUS(gen_0':s11_13(n491_13)) -> gen_c3:c412_13(n491_13), rt in Omega(1 + n491_13) Induction Base: PLUS(gen_0':s11_13(0)) ->_R^Omega(1) c3 Induction Step: PLUS(gen_0':s11_13(+(n491_13, 1))) ->_R^Omega(1) c4(PLUS(gen_0':s11_13(n491_13))) ->_IH c4(gen_c3:c412_13(c492_13)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (108) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Lemmas: MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13)) -> gen_c:c1:c210_13(n14_13), rt in Omega(1 + n14_13) PLUS(gen_0':s11_13(n491_13)) -> gen_c3:c412_13(n491_13), rt in Omega(1 + n491_13) Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: plus, QUOT, minus, quot They will be analysed ascendingly in the following order: plus < QUOT minus < QUOT plus < quot minus < quot ---------------------------------------- (109) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: plus(gen_0':s11_13(n857_13), gen_0':s11_13(b)) -> gen_0':s11_13(+(n857_13, b)), rt in Omega(0) Induction Base: plus(gen_0':s11_13(0), gen_0':s11_13(b)) ->_R^Omega(0) gen_0':s11_13(b) Induction Step: plus(gen_0':s11_13(+(n857_13, 1)), gen_0':s11_13(b)) ->_R^Omega(0) plus(gen_0':s11_13(n857_13), s(gen_0':s11_13(b))) ->_IH gen_0':s11_13(+(+(b, 1), c858_13)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (110) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Lemmas: MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13)) -> gen_c:c1:c210_13(n14_13), rt in Omega(1 + n14_13) PLUS(gen_0':s11_13(n491_13)) -> gen_c3:c412_13(n491_13), rt in Omega(1 + n491_13) plus(gen_0':s11_13(n857_13), gen_0':s11_13(b)) -> gen_0':s11_13(+(n857_13, b)), rt in Omega(0) Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: minus, QUOT, quot They will be analysed ascendingly in the following order: minus < QUOT minus < quot ---------------------------------------- (111) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: minus(gen_0':s11_13(n2079_13), gen_0':s11_13(n2079_13)) -> gen_0':s11_13(0), rt in Omega(0) Induction Base: minus(gen_0':s11_13(0), gen_0':s11_13(0)) ->_R^Omega(0) 0' Induction Step: minus(gen_0':s11_13(+(n2079_13, 1)), gen_0':s11_13(+(n2079_13, 1))) ->_R^Omega(0) minus(gen_0':s11_13(n2079_13), gen_0':s11_13(n2079_13)) ->_IH gen_0':s11_13(0) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (112) Obligation: Innermost TRS: Rules: MINUS(0', z0) -> c MINUS(z0, 0') -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) PLUS(0') -> c3 PLUS(s(z0)) -> c4(PLUS(z0)) ZERO(s(z0)) -> c5 ZERO(0') -> c6 P(s(z0)) -> c7 DIV(z0, z1) -> c8(QUOT(z0, z1, 0')) QUOT(z0, z1, z2) -> c9(IF(zero(z0), z0, z1, plus(z2, s(0'))), ZERO(z0)) QUOT(z0, z1, z2) -> c10(IF(zero(z0), z0, z1, plus(z2, s(0'))), PLUS(z2)) IF(true, z0, z1, z2) -> c11(P(z2)) IF(false, z0, s(z1), z2) -> c12(QUOT(minus(z0, s(z1)), s(z1), z2), MINUS(z0, s(z1))) minus(0', z0) -> 0' minus(z0, 0') -> z0 minus(s(z0), s(z1)) -> minus(z0, z1) plus(0', z0) -> z0 plus(s(z0), z1) -> plus(z0, s(z1)) zero(s(z0)) -> false zero(0') -> true p(s(z0)) -> z0 div(z0, z1) -> quot(z0, z1, 0') quot(z0, z1, z2) -> if(zero(z0), z0, z1, plus(z2, s(0'))) if(true, z0, z1, z2) -> p(z2) if(false, z0, s(z1), z2) -> quot(minus(z0, s(z1)), s(z1), z2) Types: MINUS :: 0':s -> 0':s -> c:c1:c2 0' :: 0':s c :: c:c1:c2 c1 :: c:c1:c2 s :: 0':s -> 0':s c2 :: c:c1:c2 -> c:c1:c2 PLUS :: 0':s -> c3:c4 c3 :: c3:c4 c4 :: c3:c4 -> c3:c4 ZERO :: 0':s -> c5:c6 c5 :: c5:c6 c6 :: c5:c6 P :: 0':s -> c7 c7 :: c7 DIV :: 0':s -> 0':s -> c8 c8 :: c9:c10 -> c8 QUOT :: 0':s -> 0':s -> 0':s -> c9:c10 c9 :: c11:c12 -> c5:c6 -> c9:c10 IF :: true:false -> 0':s -> 0':s -> 0':s -> c11:c12 zero :: 0':s -> true:false plus :: 0':s -> 0':s -> 0':s c10 :: c11:c12 -> c3:c4 -> c9:c10 true :: true:false c11 :: c7 -> c11:c12 false :: true:false c12 :: c9:c10 -> c:c1:c2 -> c11:c12 minus :: 0':s -> 0':s -> 0':s p :: 0':s -> 0':s div :: 0':s -> 0':s -> 0':s quot :: 0':s -> 0':s -> 0':s -> 0':s if :: true:false -> 0':s -> 0':s -> 0':s -> 0':s hole_c:c1:c21_13 :: c:c1:c2 hole_0':s2_13 :: 0':s hole_c3:c43_13 :: c3:c4 hole_c5:c64_13 :: c5:c6 hole_c75_13 :: c7 hole_c86_13 :: c8 hole_c9:c107_13 :: c9:c10 hole_c11:c128_13 :: c11:c12 hole_true:false9_13 :: true:false gen_c:c1:c210_13 :: Nat -> c:c1:c2 gen_0':s11_13 :: Nat -> 0':s gen_c3:c412_13 :: Nat -> c3:c4 Lemmas: MINUS(gen_0':s11_13(n14_13), gen_0':s11_13(n14_13)) -> gen_c:c1:c210_13(n14_13), rt in Omega(1 + n14_13) PLUS(gen_0':s11_13(n491_13)) -> gen_c3:c412_13(n491_13), rt in Omega(1 + n491_13) plus(gen_0':s11_13(n857_13), gen_0':s11_13(b)) -> gen_0':s11_13(+(n857_13, b)), rt in Omega(0) minus(gen_0':s11_13(n2079_13), gen_0':s11_13(n2079_13)) -> gen_0':s11_13(0), rt in Omega(0) Generator Equations: gen_c:c1:c210_13(0) <=> c gen_c:c1:c210_13(+(x, 1)) <=> c2(gen_c:c1:c210_13(x)) gen_0':s11_13(0) <=> 0' gen_0':s11_13(+(x, 1)) <=> s(gen_0':s11_13(x)) gen_c3:c412_13(0) <=> c3 gen_c3:c412_13(+(x, 1)) <=> c4(gen_c3:c412_13(x)) The following defined symbols remain to be analysed: QUOT, quot