WORST_CASE(Omega(n^1),O(n^3)) proof of input_eK8TQN0rKu.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^3). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (4) CdtProblem (5) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxWeightedTrs (13) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxTypedWeightedTrs (15) CompletionProof [UPPER BOUND(ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxTypedWeightedCompleteTrs (19) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxRNTS (23) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 352 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 83 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 148 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 104 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 157 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 75 ms] (42) CpxRNTS (43) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (44) CpxRNTS (45) IntTrsBoundProof [UPPER BOUND(ID), 4606 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 994 ms] (48) CpxRNTS (49) FinalProof [FINISHED, 0 ms] (50) BOUNDS(1, n^3) (51) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CpxRelTRS (55) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CpxRelTRS (57) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (58) typed CpxTrs (59) OrderProof [LOWER BOUND(ID), 6 ms] (60) typed CpxTrs (61) RewriteLemmaProof [LOWER BOUND(ID), 335 ms] (62) BEST (63) proven lower bound (64) LowerBoundPropagationProof [FINISHED, 0 ms] (65) BOUNDS(n^1, INF) (66) typed CpxTrs (67) RewriteLemmaProof [LOWER BOUND(ID), 99 ms] (68) typed CpxTrs (69) RewriteLemmaProof [LOWER BOUND(ID), 82 ms] (70) typed CpxTrs (71) RewriteLemmaProof [LOWER BOUND(ID), 50 ms] (72) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^3). The TRS R consists of the following rules: minus(0, y) -> 0 minus(s(x), 0) -> s(x) minus(s(x), s(y)) -> minus(x, y) le(0, y) -> true le(s(x), 0) -> false le(s(x), s(y)) -> le(x, y) if(true, x, y) -> x if(false, x, y) -> y perfectp(0) -> false perfectp(s(x)) -> f(x, s(0), s(x), s(x)) f(0, y, 0, u) -> true f(0, y, s(z), u) -> false f(s(x), 0, z, u) -> f(x, u, minus(z, s(x)), u) f(s(x), s(y), z, u) -> if(le(x, y), f(s(x), minus(y, x), z, u), f(x, u, z, u)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: 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)) Tuples: 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)) S tuples: 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)) K tuples:none Defined Rule Symbols: minus_2, le_2, if_3, perfectp_1, f_4 Defined Pair Symbols: MINUS_2, LE_2, IF_3, PERFECTP_1, F_4 Compound Symbols: c, c1, c2_1, c3, c4, c5_1, c6, c7, c8, c9_1, c10, c11, c12_2, c13_2, c14_3, c15_2 ---------------------------------------- (3) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: PERFECTP(s(z0)) -> c9(F(z0, s(0), s(z0), s(z0))) Removed 9 trailing nodes: IF(true, z0, z1) -> c6 F(0, z0, s(z1), z2) -> c11 LE(s(z0), 0) -> c4 IF(false, z0, z1) -> c7 PERFECTP(0) -> c8 MINUS(0, z0) -> c F(0, z0, 0, z1) -> c10 LE(0, z0) -> c3 MINUS(s(z0), 0) -> c1 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem 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)) Tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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)) S tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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)) K tuples:none Defined Rule Symbols: minus_2, le_2, if_3, perfectp_1, f_4 Defined Pair Symbols: MINUS_2, LE_2, F_4 Compound Symbols: c2_1, c5_1, c12_2, c13_2, c14_3, c15_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem 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)) Tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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(LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) S tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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(LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: minus_2, le_2, if_3, perfectp_1, f_4 Defined Pair Symbols: MINUS_2, LE_2, F_4 Compound Symbols: c2_1, c5_1, c12_2, c13_1, c14_2, c15_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: 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)) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: minus(0, z0) -> 0 minus(s(z0), s(z1)) -> minus(z0, z1) minus(s(z0), 0) -> s(z0) Tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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(LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) S tuples: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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(LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: minus_2 Defined Pair Symbols: MINUS_2, LE_2, F_4 Compound Symbols: c2_1, c5_1, c12_2, c13_1, c14_2, c15_1 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, n^3). The TRS R consists of the following rules: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) LE(s(z0), s(z1)) -> c5(LE(z0, z1)) 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(LE(z0, z1)) F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: minus(0, z0) -> 0 minus(s(z0), s(z1)) -> minus(z0, z1) minus(s(z0), 0) -> s(z0) Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, n^3). The TRS R consists of the following rules: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [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(LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(s(z0), 0) -> s(z0) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (13) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (14) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [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(LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(s(z0), 0) -> s(z0) [0] The TRS has the following type information: MINUS :: s:0 -> s:0 -> c2 s :: s:0 -> s:0 c2 :: c2 -> c2 LE :: s:0 -> s:0 -> c5 c5 :: c5 -> c5 F :: s:0 -> s:0 -> s:0 -> s:0 -> c12:c13:c14:c15 0 :: s:0 c12 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 minus :: s:0 -> s:0 -> s:0 c13 :: c5 -> c12:c13:c14:c15 c14 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 c15 :: c12:c13:c14:c15 -> c12:c13:c14:c15 Rewrite Strategy: INNERMOST ---------------------------------------- (15) CompletionProof (UPPER BOUND(ID)) The transformation into a RNTS is sound, since: (a) The obligation is a constructor system where every type has a constant constructor, (b) The following defined symbols do not have to be completely defined, as they can never occur inside other defined symbols: MINUS_2 LE_2 F_4 (c) The following functions are completely defined: minus_2 Due to the following rules being added: minus(v0, v1) -> 0 [0] And the following fresh constants: const, const1, const2 ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [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(LE(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), minus(z1, z0), z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(s(z0), 0) -> s(z0) [0] minus(v0, v1) -> 0 [0] The TRS has the following type information: MINUS :: s:0 -> s:0 -> c2 s :: s:0 -> s:0 c2 :: c2 -> c2 LE :: s:0 -> s:0 -> c5 c5 :: c5 -> c5 F :: s:0 -> s:0 -> s:0 -> s:0 -> c12:c13:c14:c15 0 :: s:0 c12 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 minus :: s:0 -> s:0 -> s:0 c13 :: c5 -> c12:c13:c14:c15 c14 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 c15 :: c12:c13:c14:c15 -> c12:c13:c14:c15 const :: c2 const1 :: c5 const2 :: c12:c13:c14:c15 Rewrite Strategy: INNERMOST ---------------------------------------- (17) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (18) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: MINUS(s(z0), s(z1)) -> c2(MINUS(z0, z1)) [1] LE(s(z0), s(z1)) -> c5(LE(z0, z1)) [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(LE(z0, z1)) [1] F(s(z0), s(0), z2, z3) -> c14(F(s(z0), 0, z2, z3), MINUS(0, z0)) [1] F(s(s(z1')), s(s(z0'')), z2, z3) -> c14(F(s(s(z1')), minus(z0'', z1'), z2, z3), MINUS(s(z0''), s(z1'))) [1] F(s(0), s(s(z01)), z2, z3) -> c14(F(s(0), s(z01), z2, z3), MINUS(s(z01), 0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(s(z0), 0, z2, z3), MINUS(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c15(F(z0, z3, z2, z3)) [1] minus(0, z0) -> 0 [0] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(s(z0), 0) -> s(z0) [0] minus(v0, v1) -> 0 [0] The TRS has the following type information: MINUS :: s:0 -> s:0 -> c2 s :: s:0 -> s:0 c2 :: c2 -> c2 LE :: s:0 -> s:0 -> c5 c5 :: c5 -> c5 F :: s:0 -> s:0 -> s:0 -> s:0 -> c12:c13:c14:c15 0 :: s:0 c12 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 minus :: s:0 -> s:0 -> s:0 c13 :: c5 -> c12:c13:c14:c15 c14 :: c12:c13:c14:c15 -> c2 -> c12:c13:c14:c15 c15 :: c12:c13:c14:c15 -> c12:c13:c14:c15 const :: c2 const1 :: c5 const2 :: c12:c13:c14:c15 Rewrite Strategy: INNERMOST ---------------------------------------- (19) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: 0 => 0 const => 0 const1 => 0 const2 => 0 ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + 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 + 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 + F(1 + z0, 0, z2, z3) + MINUS(z1, z0) :|: 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(1 + z0, 0, z2, z3) + MINUS(0, z0) :|: z'' = z2, z = 1 + z0, z' = 1 + 0, z0 >= 0, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, 1 + z01, z2, z3) + MINUS(1 + z01, 0) :|: z'' = z2, z01 >= 0, z = 1 + 0, z' = 1 + (1 + z01), z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + z1'), minus(z0'', z1'), z2, z3) + MINUS(1 + z0'', 1 + z1') :|: z'' = z2, z' = 1 + (1 + z0''), z1' >= 0, z = 1 + (1 + z1'), z0'' >= 0, z4 = z3, z2 >= 0, z3 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 MINUS(z, z') -{ 1 }-> 1 + MINUS(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 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 ---------------------------------------- (21) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 ---------------------------------------- (23) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { minus } { LE } { MINUS } { F } ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {minus}, {LE}, {MINUS}, {F} ---------------------------------------- (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 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {minus}, {LE}, {MINUS}, {F} ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: minus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {minus}, {LE}, {MINUS}, {F} Previous analysis results are: minus: runtime: ?, size: O(n^1) [z] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: minus after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {LE}, {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (31) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {LE}, {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (33) 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: 0 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {LE}, {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: ?, size: O(1) [0] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: LE after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ 1 }-> 1 + LE(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (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) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: MINUS after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {MINUS}, {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] MINUS: runtime: ?, size: O(1) [0] ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: MINUS after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + 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, 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 + F(1 + 0, 1 + (z' - 2), z'', z4) + MINUS(1 + (z' - 2), 0) :|: z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(0, z - 1) :|: z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + MINUS(z' - 1, z - 1) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + MINUS(1 + (z' - 2), 1 + (z - 2)) :|: s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ 1 }-> 1 + MINUS(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] MINUS: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (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) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, s, z4) + s5 :|: s5 >= 0, s5 <= 0, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s4 :|: s4 >= 0, s4 <= 0, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s6 :|: s6 >= 0, s6 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, 1 + (z' - 2), z'', z4) + s9 :|: s9 >= 0, s9 <= 0, z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s7 :|: s7 >= 0, s7 <= 0, z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + s8 :|: s8 >= 0, s8 <= 0, s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ z' }-> 1 + s3 :|: s3 >= 0, s3 <= 0, z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] MINUS: runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (45) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using KoAT for: F after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 1 + 4*z + 16*z*z4 + 4*z' ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, s, z4) + s5 :|: s5 >= 0, s5 <= 0, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s4 :|: s4 >= 0, s4 <= 0, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s6 :|: s6 >= 0, s6 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, 1 + (z' - 2), z'', z4) + s9 :|: s9 >= 0, s9 <= 0, z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s7 :|: s7 >= 0, s7 <= 0, z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + s8 :|: s8 >= 0, s8 <= 0, s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ z' }-> 1 + s3 :|: s3 >= 0, s3 <= 0, z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: {F} Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] MINUS: runtime: O(n^1) [z'], size: O(1) [0] F: runtime: ?, size: O(n^2) [1 + 4*z + 16*z*z4 + 4*z'] ---------------------------------------- (47) 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: 4 + 5*z + z*z' + z*z4 + 3*z^2 + z^2*z4 + 2*z' + 2*z4 ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: F(z, z', z'', z4) -{ z' }-> 1 + s2 :|: s2 >= 0, s2 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(z - 1, z4, z'', z4) :|: z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, s, z4) + s5 :|: s5 >= 0, s5 <= 0, s >= 0, s <= z'' - 1, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s4 :|: s4 >= 0, s4 <= 0, z'' = 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s6 :|: s6 >= 0, s6 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, 1 + (z' - 2), z'', z4) + s9 :|: s9 >= 0, s9 <= 0, z' - 2 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s10 :|: s10 >= 0, s10 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (z - 1), 0, z'', z4) + s7 :|: s7 >= 0, s7 <= 0, z' = 1 + 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s', z'', z4) + s8 :|: s8 >= 0, s8 <= 0, s' >= 0, s' <= z' - 2, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 LE(z, z') -{ z' }-> 1 + s1 :|: s1 >= 0, s1 <= 0, z' - 1 >= 0, z - 1 >= 0 MINUS(z, z') -{ z' }-> 1 + s3 :|: s3 >= 0, s3 <= 0, z' - 1 >= 0, z - 1 >= 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 Function symbols to be analyzed: Previous analysis results are: minus: runtime: O(1) [0], size: O(n^1) [z] LE: runtime: O(n^1) [z'], size: O(1) [0] MINUS: runtime: O(n^1) [z'], size: O(1) [0] F: runtime: O(n^3) [4 + 5*z + z*z' + z*z4 + 3*z^2 + z^2*z4 + 2*z' + 2*z4], size: O(n^2) [1 + 4*z + 16*z*z4 + 4*z'] ---------------------------------------- (49) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (50) BOUNDS(1, n^3) ---------------------------------------- (51) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem 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)) Tuples: 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)) S tuples: 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)) K tuples:none Defined Rule Symbols: minus_2, le_2, if_3, perfectp_1, f_4 Defined Pair Symbols: MINUS_2, LE_2, IF_3, PERFECTP_1, F_4 Compound Symbols: c, c1, c2_1, c3, c4, c5_1, c6, c7, c8, c9_1, c10, c11, c12_2, c13_2, c14_3, c15_2 ---------------------------------------- (53) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (54) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: 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 ---------------------------------------- (55) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (56) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: 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 ---------------------------------------- (57) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (58) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 ---------------------------------------- (59) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: MINUS, LE, F, minus, le, f They will be analysed ascendingly in the following order: MINUS < F LE < F minus < F le < F f < F minus < f le < f ---------------------------------------- (60) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: MINUS, LE, F, minus, le, f They will be analysed ascendingly in the following order: MINUS < F LE < F minus < F le < F f < F minus < f le < f ---------------------------------------- (61) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16)) -> gen_c:c1:c28_16(n13_16), rt in Omega(1 + n13_16) Induction Base: MINUS(gen_0':s9_16(0), gen_0':s9_16(0)) ->_R^Omega(1) c Induction Step: MINUS(gen_0':s9_16(+(n13_16, 1)), gen_0':s9_16(+(n13_16, 1))) ->_R^Omega(1) c2(MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16))) ->_IH c2(gen_c:c1:c28_16(c14_16)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (62) Complex Obligation (BEST) ---------------------------------------- (63) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: MINUS, LE, F, minus, le, f They will be analysed ascendingly in the following order: MINUS < F LE < F minus < F le < F f < F minus < f le < f ---------------------------------------- (64) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (65) BOUNDS(n^1, INF) ---------------------------------------- (66) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Lemmas: MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16)) -> gen_c:c1:c28_16(n13_16), rt in Omega(1 + n13_16) Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: LE, F, minus, le, f They will be analysed ascendingly in the following order: LE < F minus < F le < F f < F minus < f le < f ---------------------------------------- (67) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: LE(gen_0':s9_16(n647_16), gen_0':s9_16(n647_16)) -> gen_c3:c4:c510_16(n647_16), rt in Omega(1 + n647_16) Induction Base: LE(gen_0':s9_16(0), gen_0':s9_16(0)) ->_R^Omega(1) c3 Induction Step: LE(gen_0':s9_16(+(n647_16, 1)), gen_0':s9_16(+(n647_16, 1))) ->_R^Omega(1) c5(LE(gen_0':s9_16(n647_16), gen_0':s9_16(n647_16))) ->_IH c5(gen_c3:c4:c510_16(c648_16)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (68) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Lemmas: MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16)) -> gen_c:c1:c28_16(n13_16), rt in Omega(1 + n13_16) LE(gen_0':s9_16(n647_16), gen_0':s9_16(n647_16)) -> gen_c3:c4:c510_16(n647_16), rt in Omega(1 + n647_16) Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: minus, F, le, f They will be analysed ascendingly in the following order: minus < F le < F f < F minus < f le < f ---------------------------------------- (69) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: minus(gen_0':s9_16(n1356_16), gen_0':s9_16(n1356_16)) -> gen_0':s9_16(0), rt in Omega(0) Induction Base: minus(gen_0':s9_16(0), gen_0':s9_16(0)) ->_R^Omega(0) 0' Induction Step: minus(gen_0':s9_16(+(n1356_16, 1)), gen_0':s9_16(+(n1356_16, 1))) ->_R^Omega(0) minus(gen_0':s9_16(n1356_16), gen_0':s9_16(n1356_16)) ->_IH gen_0':s9_16(0) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (70) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Lemmas: MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16)) -> gen_c:c1:c28_16(n13_16), rt in Omega(1 + n13_16) LE(gen_0':s9_16(n647_16), gen_0':s9_16(n647_16)) -> gen_c3:c4:c510_16(n647_16), rt in Omega(1 + n647_16) minus(gen_0':s9_16(n1356_16), gen_0':s9_16(n1356_16)) -> gen_0':s9_16(0), rt in Omega(0) Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: le, F, f They will be analysed ascendingly in the following order: le < F f < F le < f ---------------------------------------- (71) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: le(gen_0':s9_16(n2185_16), gen_0':s9_16(n2185_16)) -> true, rt in Omega(0) Induction Base: le(gen_0':s9_16(0), gen_0':s9_16(0)) ->_R^Omega(0) true Induction Step: le(gen_0':s9_16(+(n2185_16, 1)), gen_0':s9_16(+(n2185_16, 1))) ->_R^Omega(0) le(gen_0':s9_16(n2185_16), gen_0':s9_16(n2185_16)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (72) Obligation: Innermost TRS: 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)) 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)) Types: 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 hole_c:c1:c21_16 :: c:c1:c2 hole_0':s2_16 :: 0':s hole_c3:c4:c53_16 :: c3:c4:c5 hole_c6:c74_16 :: c6:c7 hole_true:false5_16 :: true:false hole_c8:c96_16 :: c8:c9 hole_c10:c11:c12:c13:c14:c157_16 :: c10:c11:c12:c13:c14:c15 gen_c:c1:c28_16 :: Nat -> c:c1:c2 gen_0':s9_16 :: Nat -> 0':s gen_c3:c4:c510_16 :: Nat -> c3:c4:c5 gen_c10:c11:c12:c13:c14:c1511_16 :: Nat -> c10:c11:c12:c13:c14:c15 Lemmas: MINUS(gen_0':s9_16(n13_16), gen_0':s9_16(n13_16)) -> gen_c:c1:c28_16(n13_16), rt in Omega(1 + n13_16) LE(gen_0':s9_16(n647_16), gen_0':s9_16(n647_16)) -> gen_c3:c4:c510_16(n647_16), rt in Omega(1 + n647_16) minus(gen_0':s9_16(n1356_16), gen_0':s9_16(n1356_16)) -> gen_0':s9_16(0), rt in Omega(0) le(gen_0':s9_16(n2185_16), gen_0':s9_16(n2185_16)) -> true, rt in Omega(0) Generator Equations: gen_c:c1:c28_16(0) <=> c gen_c:c1:c28_16(+(x, 1)) <=> c2(gen_c:c1:c28_16(x)) gen_0':s9_16(0) <=> 0' gen_0':s9_16(+(x, 1)) <=> s(gen_0':s9_16(x)) gen_c3:c4:c510_16(0) <=> c3 gen_c3:c4:c510_16(+(x, 1)) <=> c5(gen_c3:c4:c510_16(x)) gen_c10:c11:c12:c13:c14:c1511_16(0) <=> c10 gen_c10:c11:c12:c13:c14:c1511_16(+(x, 1)) <=> c12(gen_c10:c11:c12:c13:c14:c1511_16(x), c) The following defined symbols remain to be analysed: f, F They will be analysed ascendingly in the following order: f < F