WORST_CASE(Omega(n^1),O(n^3)) 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^3). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 506 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), 1 ms] (8) CpxTypedWeightedCompleteTrs (9) NarrowingProof [BOTH BOUNDS(ID, ID), 153 ms] (10) CpxTypedWeightedCompleteTrs (11) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) InliningProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 339 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 139 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 404 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 105 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 302 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 113 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 149 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 73 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 101 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] (48) CpxRNTS (49) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (50) CpxRNTS (51) IntTrsBoundProof [UPPER BOUND(ID), 281 ms] (52) CpxRNTS (53) IntTrsBoundProof [UPPER BOUND(ID), 113 ms] (54) CpxRNTS (55) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (56) CpxRNTS (57) IntTrsBoundProof [UPPER BOUND(ID), 2450 ms] (58) CpxRNTS (59) IntTrsBoundProof [UPPER BOUND(ID), 698 ms] (60) CpxRNTS (61) ResultPropagationProof [UPPER BOUND(ID), 2 ms] (62) CpxRNTS (63) IntTrsBoundProof [UPPER BOUND(ID), 532 ms] (64) CpxRNTS (65) IntTrsBoundProof [UPPER BOUND(ID), 53 ms] (66) CpxRNTS (67) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (68) CpxRNTS (69) IntTrsBoundProof [UPPER BOUND(ID), 4964 ms] (70) CpxRNTS (71) IntTrsBoundProof [UPPER BOUND(ID), 896 ms] (72) CpxRNTS (73) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (74) CpxRNTS (75) IntTrsBoundProof [UPPER BOUND(ID), 500 ms] (76) CpxRNTS (77) IntTrsBoundProof [UPPER BOUND(ID), 0 ms] (78) CpxRNTS (79) FinalProof [FINISHED, 0 ms] (80) BOUNDS(1, n^3) (81) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (82) TRS for Loop Detection (83) DecreasingLoopProof [LOWER BOUND(ID), 1 ms] (84) BEST (85) proven lower bound (86) LowerBoundPropagationProof [FINISHED, 0 ms] (87) BOUNDS(n^1, INF) (88) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(s(z0), 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(0, z0) -> c3 LE(s(z0), 0) -> c4 LE(s(z0), s(z1)) -> c5(LE(z0, z1)) IF(true, z0, z1) -> c6 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c10 F(0, z0, s(z1), z2) -> c11 F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), 0) -> s(z0) minus(s(z0), s(z1)) -> minus(z0, z1) le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) 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^3). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(s(z0), 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(0, z0) -> c3 LE(s(z0), 0) -> c4 LE(s(z0), s(z1)) -> c5(LE(z0, z1)) IF(true, z0, z1) -> c6 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c10 F(0, z0, s(z1), z2) -> c11 F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), 0) -> s(z0) minus(s(z0), s(z1)) -> minus(z0, z1) le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) 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^3). The TRS R consists of the following rules: MINUS(0, z0) -> c [1] MINUS(s(z0), 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(0, z0) -> c3 [1] LE(s(z0), 0) -> c4 [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [1] IF(true, z0, z1) -> c6 [1] IF(false, z0, z1) -> c7 [1] PERFECTP(0) -> c8 [1] PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) [1] F(0, z0, 0, z1) -> c10 [1] F(0, z0, s(z1), z2) -> c11 [1] F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), 0) -> s(z0) [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] le(0, z0) -> true [0] le(s(z0), 0) -> false [0] le(s(z0), s(z1)) -> le(z0, z1) [0] if(true, z0, z1) -> z0 [0] if(false, z0, z1) -> z1 [0] perfectp(0) -> false [0] perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) [0] f(0, z0, 0, z1) -> true [0] f(0, z0, s(z1), z2) -> false [0] f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) [0] f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) [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(s(z0), 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(0, z0) -> c3 [1] LE(s(z0), 0) -> c4 [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [1] IF(true, z0, z1) -> c6 [1] IF(false, z0, z1) -> c7 [1] PERFECTP(0) -> c8 [1] PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) [1] F(0, z0, 0, z1) -> c10 [1] F(0, z0, s(z1), z2) -> c11 [1] F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), 0) -> s(z0) [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] le(0, z0) -> true [0] le(s(z0), 0) -> false [0] le(s(z0), s(z1)) -> le(z0, z1) [0] if(true, z0, z1) -> z0 [0] if(false, z0, z1) -> z1 [0] perfectp(0) -> false [0] perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) [0] f(0, z0, 0, z1) -> true [0] f(0, z0, s(z1), z2) -> false [0] f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) [0] f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 s :: 0:s -> 0:s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 LE :: 0:s -> 0:s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 IF :: true:false -> true:false -> true:false -> c6:c7 true :: true:false c6 :: c6:c7 false :: true:false c7 :: c6:c7 PERFECTP :: 0:s -> c8:c9 c8 :: c8:c9 c9 :: c10:c11:c12:c13:c14:c15 -> c8:c9 F :: 0:s -> 0:s -> 0:s -> 0:s -> c10:c11:c12:c13:c14:c15 c10 :: c10:c11:c12:c13:c14:c15 c11 :: c10:c11:c12:c13:c14:c15 c12 :: c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 minus :: 0:s -> 0:s -> 0:s c13 :: c6:c7 -> c3:c4:c5 -> c10:c11:c12:c13:c14:c15 le :: 0:s -> 0:s -> true:false f :: 0:s -> 0:s -> 0:s -> 0:s -> true:false c14 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 c15 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c10:c11:c12:c13:c14:c15 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0:s -> true:false 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 LE_2 IF_3 PERFECTP_1 F_4 (c) The following functions are completely defined: minus_2 le_2 if_3 perfectp_1 f_4 Due to the following rules being added: minus(v0, v1) -> 0 [0] le(v0, v1) -> null_le [0] if(v0, v1, v2) -> null_if [0] perfectp(v0) -> null_perfectp [0] f(v0, v1, v2, v3) -> null_f [0] And the following fresh constants: null_le, null_if, null_perfectp, null_f ---------------------------------------- (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(s(z0), 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(0, z0) -> c3 [1] LE(s(z0), 0) -> c4 [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [1] IF(true, z0, z1) -> c6 [1] IF(false, z0, z1) -> c7 [1] PERFECTP(0) -> c8 [1] PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) [1] F(0, z0, 0, z1) -> c10 [1] F(0, z0, s(z1), z2) -> c11 [1] F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), 0) -> s(z0) [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] le(0, z0) -> true [0] le(s(z0), 0) -> false [0] le(s(z0), s(z1)) -> le(z0, z1) [0] if(true, z0, z1) -> z0 [0] if(false, z0, z1) -> z1 [0] perfectp(0) -> false [0] perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) [0] f(0, z0, 0, z1) -> true [0] f(0, z0, s(z1), z2) -> false [0] f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) [0] f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) [0] minus(v0, v1) -> 0 [0] le(v0, v1) -> null_le [0] if(v0, v1, v2) -> null_if [0] perfectp(v0) -> null_perfectp [0] f(v0, v1, v2, v3) -> null_f [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 s :: 0:s -> 0:s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 LE :: 0:s -> 0:s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 IF :: true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> c6:c7 true :: true:false:null_le:null_if:null_perfectp:null_f c6 :: c6:c7 false :: true:false:null_le:null_if:null_perfectp:null_f c7 :: c6:c7 PERFECTP :: 0:s -> c8:c9 c8 :: c8:c9 c9 :: c10:c11:c12:c13:c14:c15 -> c8:c9 F :: 0:s -> 0:s -> 0:s -> 0:s -> c10:c11:c12:c13:c14:c15 c10 :: c10:c11:c12:c13:c14:c15 c11 :: c10:c11:c12:c13:c14:c15 c12 :: c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 minus :: 0:s -> 0:s -> 0:s c13 :: c6:c7 -> c3:c4:c5 -> c10:c11:c12:c13:c14:c15 le :: 0:s -> 0:s -> true:false:null_le:null_if:null_perfectp:null_f f :: 0:s -> 0:s -> 0:s -> 0:s -> true:false:null_le:null_if:null_perfectp:null_f c14 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 c15 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c10:c11:c12:c13:c14:c15 if :: true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f perfectp :: 0:s -> true:false:null_le:null_if:null_perfectp:null_f null_le :: true:false:null_le:null_if:null_perfectp:null_f null_if :: true:false:null_le:null_if:null_perfectp:null_f null_perfectp :: true:false:null_le:null_if:null_perfectp:null_f null_f :: true:false:null_le:null_if:null_perfectp:null_f 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(s(z0), 0) -> c1 [1] MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(0, z0) -> c3 [1] LE(s(z0), 0) -> c4 [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [1] IF(true, z0, z1) -> c6 [1] IF(false, z0, z1) -> c7 [1] PERFECTP(0) -> c8 [1] PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) [1] F(0, z0, 0, z1) -> c10 [1] F(0, z0, s(z1), z2) -> c11 [1] F(s(z0), 0, 0, z2) -> c12(F(z0, z2, 0, z2), MINUS(0, s(z0))) [1] F(s(z0), 0, s(z0'), z2) -> c12(F(z0, z2, minus(z0', z0), z2), MINUS(s(z0'), s(z0))) [1] F(s(z0), 0, z1, z2) -> c12(F(z0, z2, 0, z2), MINUS(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), 0) -> s(z0) [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] le(0, z0) -> true [0] le(s(z0), 0) -> false [0] le(s(z0), s(z1)) -> le(z0, z1) [0] if(true, z0, z1) -> z0 [0] if(false, z0, z1) -> z1 [0] perfectp(0) -> false [0] perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) [0] f(0, z0, 0, z1) -> true [0] f(0, z0, s(z1), z2) -> false [0] f(s(z0), 0, 0, z2) -> f(z0, z2, 0, z2) [0] f(s(z0), 0, s(z036), z2) -> f(z0, z2, minus(z036, z0), z2) [0] f(s(z0), 0, z1, z2) -> f(z0, z2, 0, z2) [0] f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) [0] minus(v0, v1) -> 0 [0] le(v0, v1) -> null_le [0] if(v0, v1, v2) -> null_if [0] perfectp(v0) -> null_perfectp [0] f(v0, v1, v2, v3) -> null_f [0] The TRS has the following type information: MINUS :: 0:s -> 0:s -> c:c1:c2 0 :: 0:s c :: c:c1:c2 s :: 0:s -> 0:s c1 :: c:c1:c2 c2 :: c:c1:c2 -> c:c1:c2 LE :: 0:s -> 0:s -> c3:c4:c5 c3 :: c3:c4:c5 c4 :: c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 IF :: true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> c6:c7 true :: true:false:null_le:null_if:null_perfectp:null_f c6 :: c6:c7 false :: true:false:null_le:null_if:null_perfectp:null_f c7 :: c6:c7 PERFECTP :: 0:s -> c8:c9 c8 :: c8:c9 c9 :: c10:c11:c12:c13:c14:c15 -> c8:c9 F :: 0:s -> 0:s -> 0:s -> 0:s -> c10:c11:c12:c13:c14:c15 c10 :: c10:c11:c12:c13:c14:c15 c11 :: c10:c11:c12:c13:c14:c15 c12 :: c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 minus :: 0:s -> 0:s -> 0:s c13 :: c6:c7 -> c3:c4:c5 -> c10:c11:c12:c13:c14:c15 le :: 0:s -> 0:s -> true:false:null_le:null_if:null_perfectp:null_f f :: 0:s -> 0:s -> 0:s -> 0:s -> true:false:null_le:null_if:null_perfectp:null_f c14 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c:c1:c2 -> c10:c11:c12:c13:c14:c15 c15 :: c6:c7 -> c10:c11:c12:c13:c14:c15 -> c10:c11:c12:c13:c14:c15 if :: true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f -> true:false:null_le:null_if:null_perfectp:null_f perfectp :: 0:s -> true:false:null_le:null_if:null_perfectp:null_f null_le :: true:false:null_le:null_if:null_perfectp:null_f null_if :: true:false:null_le:null_if:null_perfectp:null_f null_perfectp :: true:false:null_le:null_if:null_perfectp:null_f null_f :: true:false:null_le:null_if:null_perfectp:null_f 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 c4 => 1 true => 2 c6 => 0 false => 1 c7 => 1 c8 => 0 c10 => 0 c11 => 1 null_le => 0 null_if => 0 null_perfectp => 0 null_f => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z1 >= 0, z0 >= 0, z'' = 1 + z1, z = 0, z' = z0, z2 >= 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z1 >= 0, z0 >= 0, z = 0, z4 = z1, z' = z0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + LE(z0, z1) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + F(z0, z3, z2, z3) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, minus(z0', z0), z2) + MINUS(1 + z0', 1 + z0) :|: z0' >= 0, z = 1 + z0, z0 >= 0, z'' = 1 + z0', z2 >= 0, z' = 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, 0, z2) + MINUS(z1, 1 + z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z'' = z1, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, 0, z2) + MINUS(0, 1 + z0) :|: z'' = 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + F(1 + z0, minus(z1, z0), z2, z3) + MINUS(z1, z0) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 LE(z, z') -{ 1 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 LE(z, z') -{ 1 }-> 1 + LE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 MINUS(z, z') -{ 1 }-> 1 :|: z = 1 + 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z0, 1 + 0, 1 + z0, 1 + z0) :|: z = 1 + z0, z0 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, minus(z036, z0), z2) :|: z036 >= 0, z'' = 1 + z036, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, 0, z2) :|: z'' = 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, 0, z2) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z'' = z1, z4 = z2 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z1 >= 0, z0 >= 0, z = 0, z4 = z1, z' = z0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z'' = 1 + z1, z = 0, z' = z0, z2 >= 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 if(z, z', z'') -{ 0 }-> z0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 le(z, z') -{ 0 }-> le(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 le(z, z') -{ 0 }-> 2 :|: z0 >= 0, z = 0, z' = z0 le(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 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 minus(z, z') -{ 0 }-> 1 + z0 :|: z = 1 + z0, z0 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z0, 1 + 0, 1 + z0, 1 + z0) :|: z = 1 + z0, z0 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 ---------------------------------------- (13) InliningProof (UPPER BOUND(ID)) Inlined the following terminating rules on right-hand sides where appropriate: IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> z0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z1 >= 0, z0 >= 0, z'' = 1 + z1, z = 0, z' = z0, z2 >= 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z1 >= 0, z0 >= 0, z = 0, z4 = z1, z' = z0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + LE(z0, z1) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + F(z0, z3, z2, z3) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, minus(z0', z0), z2) + MINUS(1 + z0', 1 + z0) :|: z0' >= 0, z = 1 + z0, z0 >= 0, z'' = 1 + z0', z2 >= 0, z' = 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, 0, z2) + MINUS(z1, 1 + z0) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z'' = z1, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + F(z0, z2, 0, z2) + MINUS(0, 1 + z0) :|: z'' = 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) + F(1 + z0, minus(z1, z0), z2, z3) + MINUS(z1, z0) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 LE(z, z') -{ 1 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z0 >= 0, z = 0, z' = z0 LE(z, z') -{ 1 }-> 1 + LE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 MINUS(z, z') -{ 1 }-> 1 :|: z = 1 + 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z0, 1 + 0, 1 + z0, 1 + z0) :|: z = 1 + z0, z0 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z0, z1), f(1 + z0, minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) :|: z'' = z2, z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, minus(z036, z0), z2) :|: z036 >= 0, z'' = 1 + z036, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, 0, z2) :|: z'' = 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> f(z0, z2, 0, z2) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z2 >= 0, z' = 0, z'' = z1, z4 = z2 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z1 >= 0, z0 >= 0, z = 0, z4 = z1, z' = z0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z1 >= 0, z0 >= 0, z'' = 1 + z1, z = 0, z' = z0, z2 >= 0, z4 = z2 f(z, z', z'', z4) -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, z4 = v3, v2 >= 0, v3 >= 0 if(z, z', z'') -{ 0 }-> z0 :|: z = 2, z1 >= 0, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> z1 :|: z1 >= 0, z = 1, z0 >= 0, z' = z0, z'' = z1 if(z, z', z'') -{ 0 }-> 0 :|: v0 >= 0, z'' = v2, v1 >= 0, z = v0, z' = v1, v2 >= 0 le(z, z') -{ 0 }-> le(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 le(z, z') -{ 0 }-> 2 :|: z0 >= 0, z = 0, z' = z0 le(z, z') -{ 0 }-> 1 :|: z = 1 + z0, z0 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 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 minus(z, z') -{ 0 }-> 1 + z0 :|: z = 1 + z0, z0 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z0, 1 + 0, 1 + z0, 1 + z0) :|: z = 1 + z0, z0 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, minus(z'' - 1, z - 1), z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), minus(z' - 1, z - 1), z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, minus(z'' - 1, z - 1), z4) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { minus } { le } { LE } { IF } { if } { MINUS } { f } { perfectp } { F } { PERFECTP } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, minus(z'' - 1, z - 1), z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), minus(z' - 1, z - 1), z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, minus(z'' - 1, z - 1), z4) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, minus(z'' - 1, z - 1), z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), minus(z' - 1, z - 1), z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, minus(z'' - 1, z - 1), z4) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} ---------------------------------------- (21) 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 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, minus(z'' - 1, z - 1), z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), minus(z' - 1, z - 1), z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, minus(z'' - 1, z - 1), z4) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {minus}, {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: ?, size: O(n^1) [z] ---------------------------------------- (23) 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 ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, minus(z'' - 1, z - 1), z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), minus(z' - 1, z - 1), z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), minus(z' - 1, z - 1), z'', z4), f(z - 1, z4, z'', z4)) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, minus(z'' - 1, z - 1), z4) :|: z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: le after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 2 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {le}, {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: ?, size: O(1) [2] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: le 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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(le(z - 1, z' - 1), f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(le(z - 1, z' - 1), f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> le(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: LE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {LE}, {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: ?, size: O(n^1) [1 + z'] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: LE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z' ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + LE(z - 1, z' - 1) :|: s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: IF after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {IF}, {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: ?, size: O(1) [1] ---------------------------------------- (41) 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: 1 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] ---------------------------------------- (45) 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: z' + z'' ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {if}, {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: ?, size: O(n^1) [z' + z''] ---------------------------------------- (47) 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 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] ---------------------------------------- (51) 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' ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {MINUS}, {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: ?, size: O(n^1) [1 + z'] ---------------------------------------- (53) 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' ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, s, z4) + MINUS(1 + (z'' - 1), 1 + (z - 1)) :|: s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, 0, z4) + MINUS(0, 1 + (z - 1)) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + MINUS(z' - 1, z - 1) :|: s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 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 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + 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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 2 + z }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + s17 :|: s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] ---------------------------------------- (57) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: f after applying outer abstraction to obtain an ITS, resulting in: EXP with polynomial bound: ? ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 2 + z }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + s17 :|: s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {f}, {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: ?, size: EXP ---------------------------------------- (59) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: f 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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 2 + z' }-> 1 + IF(s7, f(1 + (z - 1), s1, z'', z4), f(z - 1, z4, z'', z4)) + s12 :|: s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + IF(s9, f(1 + (z - 1), s4, z'', z4), f(z - 1, z4, z'', z4)) + F(z - 1, z4, z'', z4) :|: s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 2 + z }-> 1 + IF(s8, f(1 + (z - 1), s2, z'', z4), f(z - 1, z4, z'', z4)) + F(1 + (z - 1), s3, z'', z4) + s17 :|: s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> if(s10, f(1 + (z - 1), s5, z'', z4), f(z - 1, z4, z'', z4)) :|: s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, s'', z4) :|: s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> f(z - 1, z4, 0, z4) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> f(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP ---------------------------------------- (63) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: perfectp after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (64) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {perfectp}, {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: ?, size: INF ---------------------------------------- (65) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: perfectp after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF ---------------------------------------- (69) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: F after applying outer abstraction to obtain an ITS, resulting in: O(n^3) with polynomial bound: 3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4 ---------------------------------------- (70) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {F}, {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF F: runtime: ?, size: O(n^3) [3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4] ---------------------------------------- (71) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: O(n^3) with polynomial bound: 13 + 14*z + z*z' + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z' + 4*z4 ---------------------------------------- (72) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 2 }-> 1 + s30 + F(z - 1, z4, z'', z4) :|: s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, s, z4) + s15 :|: s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s14 :|: s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + F(z - 1, z4, 0, z4) + s16 :|: s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 3 + z }-> 1 + s27 + F(1 + (z - 1), s3, z'', z4) + s17 :|: s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 1 }-> 1 + F(z - 1, 1 + 0, 1 + (z - 1), 1 + (z - 1)) :|: z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF F: runtime: O(n^3) [13 + 14*z + z*z' + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z' + 4*z4], size: O(n^3) [3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4] ---------------------------------------- (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: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 4 + 8*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s30 + s39 :|: s39 >= 0, s39 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s35 + s14 :|: s35 >= 0, s35 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s36 + s15 :|: s36 >= 0, s36 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s37 + s16 :|: s37 >= 0, s37 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 16 + 4*s3 + s3*z + 15*z + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s27 + s38 + s17 :|: s38 >= 0, s38 <= 3 * ((1 + (z - 1)) * (1 + (z - 1))) + 8 * (1 + (z - 1)) + 3 * s3 + z4 + s3 * (1 + (z - 1)) + 4 * (z4 * ((1 + (z - 1)) * (1 + (z - 1)))) + 8 * (z4 * (1 + (z - 1))) + 3, s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 6 + 10*z + 5*z^2 + z^3 }-> 1 + s34 :|: s34 >= 0, s34 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * (1 + 0) + (1 + (z - 1)) + (1 + 0) * (z - 1) + 4 * ((1 + (z - 1)) * ((z - 1) * (z - 1))) + 8 * ((1 + (z - 1)) * (z - 1)) + 3, z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF F: runtime: O(n^3) [13 + 14*z + z*z' + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z' + 4*z4], size: O(n^3) [3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4] ---------------------------------------- (75) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: PERFECTP after applying outer abstraction to obtain an ITS, resulting in: O(n^3) with polynomial bound: 1 + 3*z^2 + 4*z^3 ---------------------------------------- (76) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 4 + 8*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s30 + s39 :|: s39 >= 0, s39 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s35 + s14 :|: s35 >= 0, s35 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s36 + s15 :|: s36 >= 0, s36 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s37 + s16 :|: s37 >= 0, s37 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 16 + 4*s3 + s3*z + 15*z + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s27 + s38 + s17 :|: s38 >= 0, s38 <= 3 * ((1 + (z - 1)) * (1 + (z - 1))) + 8 * (1 + (z - 1)) + 3 * s3 + z4 + s3 * (1 + (z - 1)) + 4 * (z4 * ((1 + (z - 1)) * (1 + (z - 1)))) + 8 * (z4 * (1 + (z - 1))) + 3, s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 6 + 10*z + 5*z^2 + z^3 }-> 1 + s34 :|: s34 >= 0, s34 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * (1 + 0) + (1 + (z - 1)) + (1 + 0) * (z - 1) + 4 * ((1 + (z - 1)) * ((z - 1) * (z - 1))) + 8 * ((1 + (z - 1)) * (z - 1)) + 3, z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: {PERFECTP} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF F: runtime: O(n^3) [13 + 14*z + z*z' + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z' + 4*z4], size: O(n^3) [3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4] PERFECTP: runtime: ?, size: O(n^3) [1 + 3*z^2 + 4*z^3] ---------------------------------------- (77) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: PERFECTP after applying outer abstraction to obtain an ITS, resulting in: O(n^3) with polynomial bound: 7 + 10*z + 5*z^2 + z^3 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 0 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 F(z, z', z'', z4) -{ 3 + z' }-> 1 + s24 + s12 :|: s22 >= 0, s22 <= inf2, s23 >= 0, s23 <= inf3, s24 >= 0, s24 <= 1, s12 >= 0, s12 <= z' - 1 + 1, s7 >= 0, s7 <= 2, s1 >= 0, s1 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 4 + 8*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s30 + s39 :|: s39 >= 0, s39 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s28 >= 0, s28 <= inf6, s29 >= 0, s29 <= inf7, s30 >= 0, s30 <= 1, s9 >= 0, s9 <= 2, s4 >= 0, s4 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s35 + s14 :|: s35 >= 0, s35 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s14 >= 0, s14 <= 1 + (z - 1) + 1, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s36 + s15 :|: s36 >= 0, s36 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s15 >= 0, s15 <= 1 + (z - 1) + 1, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 5 + 9*z + 3*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s37 + s16 :|: s37 >= 0, s37 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * z4 + z4 + z4 * (z - 1) + 4 * (z4 * ((z - 1) * (z - 1))) + 8 * (z4 * (z - 1)) + 3, s16 >= 0, s16 <= 1 + (z - 1) + 1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 16 + 4*s3 + s3*z + 15*z + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z4 }-> 1 + s27 + s38 + s17 :|: s38 >= 0, s38 <= 3 * ((1 + (z - 1)) * (1 + (z - 1))) + 8 * (1 + (z - 1)) + 3 * s3 + z4 + s3 * (1 + (z - 1)) + 4 * (z4 * ((1 + (z - 1)) * (1 + (z - 1)))) + 8 * (z4 * (1 + (z - 1))) + 3, s25 >= 0, s25 <= inf4, s26 >= 0, s26 <= inf5, s27 >= 0, s27 <= 1, s17 >= 0, s17 <= z - 1 + 1, s8 >= 0, s8 <= 2, s2 >= 0, s2 <= z' - 1, s3 >= 0, s3 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 IF(z, z', z'') -{ 1 }-> 1 :|: z'' >= 0, z = 1, z' >= 0 IF(z, z', z'') -{ 1 }-> 0 :|: z = 2, z'' >= 0, z' >= 0 LE(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 LE(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 LE(z, z') -{ 2 + z' }-> 1 + s11 :|: s11 >= 0, s11 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 :|: z - 1 >= 0, z' = 0 MINUS(z, z') -{ 1 }-> 0 :|: z' >= 0, z = 0 MINUS(z, z') -{ 2 + z' }-> 1 + s13 :|: s13 >= 0, s13 <= z' - 1 + 1, z' - 1 >= 0, z - 1 >= 0 PERFECTP(z) -{ 1 }-> 0 :|: z = 0 PERFECTP(z) -{ 6 + 10*z + 5*z^2 + z^3 }-> 1 + s34 :|: s34 >= 0, s34 <= 3 * ((z - 1) * (z - 1)) + 8 * (z - 1) + 3 * (1 + 0) + (1 + (z - 1)) + (1 + 0) * (z - 1) + 4 * ((1 + (z - 1)) * ((z - 1) * (z - 1))) + 8 * ((1 + (z - 1)) * (z - 1)) + 3, z - 1 >= 0 f(z, z', z'', z4) -{ 0 }-> s19 :|: s19 >= 0, s19 <= inf', z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s20 :|: s20 >= 0, s20 <= inf'', s'' >= 0, s'' <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s21 :|: s21 >= 0, s21 <= inf1, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 f(z, z', z'', z4) -{ 0 }-> s33 :|: s31 >= 0, s31 <= inf8, s32 >= 0, s32 <= inf9, s33 >= 0, s33 <= s32 + s31, s10 >= 0, s10 <= 2, s5 >= 0, s5 <= z' - 1, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 2 :|: z'' = 0, z4 >= 0, z' >= 0, z = 0 f(z, z', z'', z4) -{ 0 }-> 1 :|: z'' - 1 >= 0, z' >= 0, z = 0, z4 >= 0 f(z, z', z'', z4) -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0, z4 >= 0 if(z, z', z'') -{ 0 }-> z' :|: z = 2, z'' >= 0, z' >= 0 if(z, z', z'') -{ 0 }-> z'' :|: z'' >= 0, z = 1, z' >= 0 if(z, z', z'') -{ 0 }-> 0 :|: z >= 0, z' >= 0, z'' >= 0 le(z, z') -{ 0 }-> s6 :|: s6 >= 0, s6 <= 2, z' - 1 >= 0, z - 1 >= 0 le(z, z') -{ 0 }-> 2 :|: z' >= 0, z = 0 le(z, z') -{ 0 }-> 1 :|: z - 1 >= 0, z' = 0 le(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 minus(z, z') -{ 0 }-> s' :|: s' >= 0, s' <= 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 minus(z, z') -{ 0 }-> 1 + (z - 1) :|: z - 1 >= 0, z' = 0 perfectp(z) -{ 0 }-> s18 :|: s18 >= 0, s18 <= inf, z - 1 >= 0 perfectp(z) -{ 0 }-> 1 :|: z = 0 perfectp(z) -{ 0 }-> 0 :|: z >= 0 Function symbols to be analyzed: Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] le: runtime: O(1) [0], size: O(1) [2] LE: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] IF: runtime: O(1) [1], size: O(1) [1] if: runtime: O(1) [0], size: O(n^1) [z' + z''] MINUS: runtime: O(n^1) [2 + z'], size: O(n^1) [1 + z'] f: runtime: O(1) [0], size: EXP perfectp: runtime: O(1) [0], size: INF F: runtime: O(n^3) [13 + 14*z + z*z' + 4*z*z4 + 3*z^2 + z^2*z4 + 4*z' + 4*z4], size: O(n^3) [3 + 8*z + z*z' + 8*z*z4 + 3*z^2 + 4*z^2*z4 + 3*z' + z4] PERFECTP: runtime: O(n^3) [7 + 10*z + 5*z^2 + z^3], size: O(n^3) [1 + 3*z^2 + 4*z^3] ---------------------------------------- (79) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (80) BOUNDS(1, n^3) ---------------------------------------- (81) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (82) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(s(z0), 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(0, z0) -> c3 LE(s(z0), 0) -> c4 LE(s(z0), s(z1)) -> c5(LE(z0, z1)) IF(true, z0, z1) -> c6 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c10 F(0, z0, s(z1), z2) -> c11 F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), 0) -> s(z0) minus(s(z0), s(z1)) -> minus(z0, z1) le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) Rewrite Strategy: INNERMOST ---------------------------------------- (83) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence LE(s(z0), s(z1)) ->^+ c5(LE(z0, z1)) gives rise to a decreasing loop by considering the right hand sides subterm at position [0]. The pumping substitution is [z0 / s(z0), z1 / s(z1)]. The result substitution is [ ]. ---------------------------------------- (84) Complex Obligation (BEST) ---------------------------------------- (85) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(s(z0), 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(0, z0) -> c3 LE(s(z0), 0) -> c4 LE(s(z0), s(z1)) -> c5(LE(z0, z1)) IF(true, z0, z1) -> c6 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c10 F(0, z0, s(z1), z2) -> c11 F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), 0) -> s(z0) minus(s(z0), s(z1)) -> minus(z0, z1) le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) Rewrite Strategy: INNERMOST ---------------------------------------- (86) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (87) BOUNDS(n^1, INF) ---------------------------------------- (88) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). The TRS R consists of the following rules: MINUS(0, z0) -> c MINUS(s(z0), 0) -> c1 MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(0, z0) -> c3 LE(s(z0), 0) -> c4 LE(s(z0), s(z1)) -> c5(LE(z0, z1)) IF(true, z0, z1) -> c6 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c10 F(0, z0, s(z1), z2) -> c11 F(s(z0), 0, z1, z2) -> c12(F(z0, z2, minus(z1, s(z0)), z2), MINUS(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c13(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(IF(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), 0) -> s(z0) minus(s(z0), s(z1)) -> minus(z0, z1) le(0, z0) -> true le(s(z0), 0) -> false le(s(z0), s(z1)) -> le(z0, z1) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 perfectp(0) -> false perfectp(s(z0)) -> f(z0, s(0), s(z0), s(z0)) f(0, z0, 0, z1) -> true f(0, z0, s(z1), z2) -> false f(s(z0), 0, z1, z2) -> f(z0, z2, minus(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(le(z0, z1), f(s(z0), minus(z1, z0), z2, z3), f(z0, z3, z2, z3)) Rewrite Strategy: INNERMOST