WORST_CASE(Omega(n^1),O(n^3)) proof of input_2CzBQ3REYT.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) CpxWeightedTrsRenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CpxWeightedTrs (15) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxTypedWeightedTrs (17) CompletionProof [UPPER BOUND(ID), 0 ms] (18) CpxTypedWeightedCompleteTrs (19) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxTypedWeightedCompleteTrs (21) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (22) CpxRNTS (23) SimplificationProof [BOTH BOUNDS(ID, ID), 3 ms] (24) CpxRNTS (25) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxRNTS (27) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 160 ms] (30) CpxRNTS (31) IntTrsBoundProof [UPPER BOUND(ID), 74 ms] (32) CpxRNTS (33) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 167 ms] (36) CpxRNTS (37) IntTrsBoundProof [UPPER BOUND(ID), 94 ms] (38) CpxRNTS (39) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 268 ms] (42) CpxRNTS (43) IntTrsBoundProof [UPPER BOUND(ID), 114 ms] (44) CpxRNTS (45) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) IntTrsBoundProof [UPPER BOUND(ID), 3749 ms] (48) CpxRNTS (49) IntTrsBoundProof [UPPER BOUND(ID), 812 ms] (50) CpxRNTS (51) FinalProof [FINISHED, 0 ms] (52) BOUNDS(1, n^3) (53) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CpxRelTRS (57) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CpxRelTRS (59) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (60) typed CpxTrs (61) OrderProof [LOWER BOUND(ID), 13 ms] (62) typed CpxTrs (63) RewriteLemmaProof [LOWER BOUND(ID), 323 ms] (64) BEST (65) proven lower bound (66) LowerBoundPropagationProof [FINISHED, 0 ms] (67) BOUNDS(n^1, INF) (68) typed CpxTrs (69) RewriteLemmaProof [LOWER BOUND(ID), 99 ms] (70) typed CpxTrs (71) RewriteLemmaProof [LOWER BOUND(ID), 28 ms] (72) typed CpxTrs (73) RewriteLemmaProof [LOWER BOUND(ID), 37 ms] (74) 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: -(x, 0) -> x -(s(x), s(y)) -> -(x, y) <=(0, y) -> true <=(s(x), 0) -> false <=(s(x), s(y)) -> <=(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, -(z, s(x)), u) f(s(x), s(y), z, u) -> if(<=(x, y), f(s(x), -(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: -(z0, 0) -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: -'(z0, 0) -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0, z0) -> c2 <='(s(z0), 0) -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0) -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c9 F(0, z0, s(z1), z2) -> c10 F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) S tuples: -'(z0, 0) -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0, z0) -> c2 <='(s(z0), 0) -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0) -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c9 F(0, z0, s(z1), z2) -> c10 F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: -_2, <=_2, if_3, perfectp_1, f_4 Defined Pair Symbols: -'_2, <='_2, IF_3, PERFECTP_1, F_4 Compound Symbols: c, c1_1, c2, c3, c4_1, c5, c6, c7, c8_1, c9, c10, c11_2, c12_2, c13_3, c14_2 ---------------------------------------- (3) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) Removed 8 trailing nodes: F(0, z0, s(z1), z2) -> c10 IF(true, z0, z1) -> c5 <='(s(z0), 0) -> c3 IF(false, z0, z1) -> c6 -'(z0, 0) -> c F(0, z0, 0, z1) -> c9 <='(0, z0) -> c2 PERFECTP(0) -> c7 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: -(z0, 0) -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) S tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: -_2, <=_2, if_3, perfectp_1, f_4 Defined Pair Symbols: -'_2, <='_2, F_4 Compound Symbols: c1_1, c4_1, c11_2, c12_2, c13_3, c14_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: -(z0, 0) -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) S tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: -_2, <=_2, if_3, perfectp_1, f_4 Defined Pair Symbols: -'_2, <='_2, F_4 Compound Symbols: c1_1, c4_1, c11_2, c12_1, c13_2, c14_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: -(s(z0), s(z1)) -> -(z0, z1) -(z0, 0) -> z0 Tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) S tuples: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: -_2 Defined Pair Symbols: -'_2, <='_2, F_4 Compound Symbols: c1_1, c4_1, c11_2, c12_1, c13_2, c14_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: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(s(z0), s(z1)) -> c4(<='(z0, z1)) F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: -(s(z0), s(z1)) -> -(z0, z1) -(z0, 0) -> 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: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) [1] <='(s(z0), s(z1)) -> c4(<='(z0, z1)) [1] F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) [1] -(s(z0), s(z1)) -> -(z0, z1) [0] -(z0, 0) -> z0 [0] Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxWeightedTrsRenamingProof (BOTH BOUNDS(ID, ID)) Renamed defined symbols to avoid conflicts with arithmetic symbols: - => minus ---------------------------------------- (14) 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: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) [1] <='(s(z0), s(z1)) -> c4(<='(z0, z1)) [1] F(s(z0), 0, z1, z2) -> c11(F(z0, z2, minus(z1, s(z0)), z2), -'(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), minus(z1, z0), z2, z3), -'(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) [1] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(z0, 0) -> z0 [0] Rewrite Strategy: INNERMOST ---------------------------------------- (15) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) [1] <='(s(z0), s(z1)) -> c4(<='(z0, z1)) [1] F(s(z0), 0, z1, z2) -> c11(F(z0, z2, minus(z1, s(z0)), z2), -'(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), minus(z1, z0), z2, z3), -'(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) [1] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(z0, 0) -> z0 [0] The TRS has the following type information: -' :: s:0 -> s:0 -> c1 s :: s:0 -> s:0 c1 :: c1 -> c1 <=' :: s:0 -> s:0 -> c4 c4 :: c4 -> c4 F :: s:0 -> s:0 -> s:0 -> s:0 -> c11:c12:c13:c14 0 :: s:0 c11 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 minus :: s:0 -> s:0 -> s:0 c12 :: c4 -> c11:c12:c13:c14 c13 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 c14 :: c11:c12:c13:c14 -> c11:c12:c13:c14 Rewrite Strategy: INNERMOST ---------------------------------------- (17) 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: -'_2 <='_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 ---------------------------------------- (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: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) [1] <='(s(z0), s(z1)) -> c4(<='(z0, z1)) [1] F(s(z0), 0, z1, z2) -> c11(F(z0, z2, minus(z1, s(z0)), z2), -'(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) [1] F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), minus(z1, z0), z2, z3), -'(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) [1] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(z0, 0) -> z0 [0] minus(v0, v1) -> 0 [0] The TRS has the following type information: -' :: s:0 -> s:0 -> c1 s :: s:0 -> s:0 c1 :: c1 -> c1 <=' :: s:0 -> s:0 -> c4 c4 :: c4 -> c4 F :: s:0 -> s:0 -> s:0 -> s:0 -> c11:c12:c13:c14 0 :: s:0 c11 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 minus :: s:0 -> s:0 -> s:0 c12 :: c4 -> c11:c12:c13:c14 c13 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 c14 :: c11:c12:c13:c14 -> c11:c12:c13:c14 const :: c1 const1 :: c4 const2 :: c11:c12:c13:c14 Rewrite Strategy: INNERMOST ---------------------------------------- (19) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (20) 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: -'(s(z0), s(z1)) -> c1(-'(z0, z1)) [1] <='(s(z0), s(z1)) -> c4(<='(z0, z1)) [1] F(s(z0), 0, s(z0'), z2) -> c11(F(z0, z2, minus(z0', z0), z2), -'(s(z0'), s(z0))) [1] F(s(z0), 0, z1, z2) -> c11(F(z0, z2, 0, z2), -'(z1, s(z0))) [1] F(s(z0), s(z1), z2, z3) -> c12(<='(z0, z1)) [1] F(s(s(z1')), s(s(z0'')), z2, z3) -> c13(F(s(s(z1')), minus(z0'', z1'), z2, z3), -'(s(z0''), s(z1'))) [1] F(s(0), s(z1), z2, z3) -> c13(F(s(0), z1, z2, z3), -'(z1, 0)) [1] F(s(z0), s(z1), z2, z3) -> c13(F(s(z0), 0, z2, z3), -'(z1, z0)) [1] F(s(z0), s(z1), z2, z3) -> c14(F(z0, z3, z2, z3)) [1] minus(s(z0), s(z1)) -> minus(z0, z1) [0] minus(z0, 0) -> z0 [0] minus(v0, v1) -> 0 [0] The TRS has the following type information: -' :: s:0 -> s:0 -> c1 s :: s:0 -> s:0 c1 :: c1 -> c1 <=' :: s:0 -> s:0 -> c4 c4 :: c4 -> c4 F :: s:0 -> s:0 -> s:0 -> s:0 -> c11:c12:c13:c14 0 :: s:0 c11 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 minus :: s:0 -> s:0 -> s:0 c12 :: c4 -> c11:c12:c13:c14 c13 :: c11:c12:c13:c14 -> c1 -> c11:c12:c13:c14 c14 :: c11:c12:c13:c14 -> c11:c12:c13:c14 const :: c1 const1 :: c4 const2 :: c11:c12:c13:c14 Rewrite Strategy: INNERMOST ---------------------------------------- (21) 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 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 <='(z, z') -{ 1 }-> 1 + <='(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 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 + <='(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, z2, minus(z0', z0), z2) + -'(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) + -'(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(1 + z0, 0, z2, z3) + -'(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 + 0, z1, z2, z3) + -'(z1, 0) :|: z'' = z2, z1 >= 0, z = 1 + 0, z' = 1 + z1, z4 = z3, z2 >= 0, z3 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (1 + z1'), minus(z0'', z1'), z2, z3) + -'(1 + z0'', 1 + z1') :|: z'' = z2, z' = 1 + (1 + z0''), z1' >= 0, z = 1 + (1 + z1'), z0'' >= 0, z4 = z3, z2 >= 0, z3 >= 0 minus(z, z') -{ 0 }-> z0 :|: z = z0, z0 >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z0, z1) :|: z1 >= 0, z = 1 + z0, z0 >= 0, z' = 1 + z1 minus(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (23) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ 1 }-> 1 + <='(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 + <='(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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (25) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { <=' } { -' } { minus } { F } ---------------------------------------- (26) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ 1 }-> 1 + <='(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 + <='(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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {<='}, {-'}, {minus}, {F} ---------------------------------------- (27) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ 1 }-> 1 + <='(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 + <='(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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {<='}, {-'}, {minus}, {F} ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: <=' 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: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ 1 }-> 1 + <='(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 + <='(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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {<='}, {-'}, {minus}, {F} Previous analysis results are: <=': runtime: ?, size: O(1) [0] ---------------------------------------- (31) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: <=' after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ 1 }-> 1 + <='(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 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 + <='(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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (33) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: -' after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {-'}, {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: ?, size: O(1) [0] ---------------------------------------- (37) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: -' after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ 1 }-> 1 + -'(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + -'(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) + -'(z'', 1 + (z - 1)) :|: z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + -'(z' - 1, 0) :|: z' - 1 >= 0, z = 1 + 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + (z - 1), 0, z'', z4) + -'(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) + -'(1 + (z' - 2), 1 + (z - 2)) :|: z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (39) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + s1 :|: s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + s3 :|: s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] ---------------------------------------- (41) 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 ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + s1 :|: s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + s3 :|: s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {minus}, {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] minus: runtime: ?, size: O(n^1) [z] ---------------------------------------- (43) 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 ---------------------------------------- (44) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, minus(z'' - 1, z - 1), z4) + s1 :|: s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), minus(z' - 2, z - 2), z'', z4) + s3 :|: s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> minus(z - 1, z' - 1) :|: z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (45) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, s6, z4) + s1 :|: s6 >= 0, s6 <= z'' - 1, s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s7, z'', z4) + s3 :|: s7 >= 0, s7 <= z' - 2, s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> s8 :|: s8 >= 0, s8 <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] ---------------------------------------- (47) 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 + 3*z + 9*z*z4 + 3*z' ---------------------------------------- (48) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, s6, z4) + s1 :|: s6 >= 0, s6 <= z'' - 1, s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s7, z'', z4) + s3 :|: s7 >= 0, s7 <= z' - 2, s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> s8 :|: s8 >= 0, s8 <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: {F} Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] F: runtime: ?, size: O(n^2) [1 + 3*z + 9*z*z4 + 3*z'] ---------------------------------------- (49) 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 ---------------------------------------- (50) Obligation: Complexity RNTS consisting of the following rules: -'(z, z') -{ z' }-> 1 + s'' :|: s'' >= 0, s'' <= 0, z' - 1 >= 0, z - 1 >= 0 <='(z, z') -{ z' }-> 1 + s :|: s >= 0, s <= 0, z' - 1 >= 0, z - 1 >= 0 F(z, z', z'', z4) -{ z' }-> 1 + s' :|: s' >= 0, s' <= 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, s6, z4) + s1 :|: s6 >= 0, s6 <= z'' - 1, s1 >= 0, s1 <= 0, z'' - 1 >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 + z }-> 1 + F(z - 1, z4, 0, z4) + s2 :|: s2 >= 0, s2 <= 0, z'' >= 0, z - 1 >= 0, z4 >= 0, z' = 0 F(z, z', z'', z4) -{ 1 }-> 1 + F(1 + 0, z' - 1, z'', z4) + s4 :|: s4 >= 0, s4 <= 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) + s5 :|: s5 >= 0, s5 <= 0, z' - 1 >= 0, z - 1 >= 0, z'' >= 0, z4 >= 0 F(z, z', z'', z4) -{ z }-> 1 + F(1 + (1 + (z - 2)), s7, z'', z4) + s3 :|: s7 >= 0, s7 <= z' - 2, s3 >= 0, s3 <= 0, z - 2 >= 0, z' - 2 >= 0, z'' >= 0, z4 >= 0 minus(z, z') -{ 0 }-> s8 :|: s8 >= 0, s8 <= z - 1, z' - 1 >= 0, z - 1 >= 0 minus(z, z') -{ 0 }-> z :|: z >= 0, z' = 0 minus(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 Function symbols to be analyzed: Previous analysis results are: <=': runtime: O(n^1) [z'], size: O(1) [0] -': runtime: O(n^1) [z'], size: O(1) [0] minus: runtime: O(1) [0], size: O(n^1) [z] 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 + 3*z + 9*z*z4 + 3*z'] ---------------------------------------- (51) FinalProof (FINISHED) Computed overall runtime complexity ---------------------------------------- (52) BOUNDS(1, n^3) ---------------------------------------- (53) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: -(z0, 0) -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Tuples: -'(z0, 0) -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0, z0) -> c2 <='(s(z0), 0) -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0) -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c9 F(0, z0, s(z1), z2) -> c10 F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) S tuples: -'(z0, 0) -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0, z0) -> c2 <='(s(z0), 0) -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0) -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c9 F(0, z0, s(z1), z2) -> c10 F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) K tuples:none Defined Rule Symbols: -_2, <=_2, if_3, perfectp_1, f_4 Defined Pair Symbols: -'_2, <='_2, IF_3, PERFECTP_1, F_4 Compound Symbols: c, c1_1, c2, c3, c4_1, c5, c6, c7, c8_1, c9, c10, c11_2, c12_2, c13_3, c14_2 ---------------------------------------- (55) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (56) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: -'(z0, 0) -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0, z0) -> c2 <='(s(z0), 0) -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0) -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0), s(z0), s(z0))) F(0, z0, 0, z1) -> c9 F(0, z0, s(z1), z2) -> c10 F(s(z0), 0, z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: -(z0, 0) -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0, z0) -> true <=(s(z0), 0) -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Rewrite Strategy: INNERMOST ---------------------------------------- (57) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (58) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) The (relative) TRS S consists of the following rules: -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Rewrite Strategy: INNERMOST ---------------------------------------- (59) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (60) Obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 ---------------------------------------- (61) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: -', <=', F, -, <=, f They will be analysed ascendingly in the following order: -' < F <=' < F - < F <= < F f < F - < f <= < f ---------------------------------------- (62) Obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: -', <=', F, -, <=, f They will be analysed ascendingly in the following order: -' < F <=' < F - < F <= < F f < F - < f <= < f ---------------------------------------- (63) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: -'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15)) -> gen_c:c18_15(n13_15), rt in Omega(1 + n13_15) Induction Base: -'(gen_0':s9_15(0), gen_0':s9_15(0)) ->_R^Omega(1) c Induction Step: -'(gen_0':s9_15(+(n13_15, 1)), gen_0':s9_15(+(n13_15, 1))) ->_R^Omega(1) c1(-'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15))) ->_IH c1(gen_c:c18_15(c14_15)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (64) Complex Obligation (BEST) ---------------------------------------- (65) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: -', <=', F, -, <=, f They will be analysed ascendingly in the following order: -' < F <=' < F - < F <= < F f < F - < f <= < f ---------------------------------------- (66) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (67) BOUNDS(n^1, INF) ---------------------------------------- (68) Obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Lemmas: -'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15)) -> gen_c:c18_15(n13_15), rt in Omega(1 + n13_15) Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: <=', F, -, <=, f They will be analysed ascendingly in the following order: <=' < F - < F <= < F f < F - < f <= < f ---------------------------------------- (69) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: <='(gen_0':s9_15(n442_15), gen_0':s9_15(n442_15)) -> gen_c2:c3:c410_15(n442_15), rt in Omega(1 + n442_15) Induction Base: <='(gen_0':s9_15(0), gen_0':s9_15(0)) ->_R^Omega(1) c2 Induction Step: <='(gen_0':s9_15(+(n442_15, 1)), gen_0':s9_15(+(n442_15, 1))) ->_R^Omega(1) c4(<='(gen_0':s9_15(n442_15), gen_0':s9_15(n442_15))) ->_IH c4(gen_c2:c3:c410_15(c443_15)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (70) Obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Lemmas: -'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15)) -> gen_c:c18_15(n13_15), rt in Omega(1 + n13_15) <='(gen_0':s9_15(n442_15), gen_0':s9_15(n442_15)) -> gen_c2:c3:c410_15(n442_15), rt in Omega(1 + n442_15) Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: -, F, <=, f They will be analysed ascendingly in the following order: - < F <= < F f < F - < f <= < f ---------------------------------------- (71) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: -(gen_0':s9_15(n1131_15), gen_0':s9_15(n1131_15)) -> gen_0':s9_15(0), rt in Omega(0) Induction Base: -(gen_0':s9_15(0), gen_0':s9_15(0)) ->_R^Omega(0) gen_0':s9_15(0) Induction Step: -(gen_0':s9_15(+(n1131_15, 1)), gen_0':s9_15(+(n1131_15, 1))) ->_R^Omega(0) -(gen_0':s9_15(n1131_15), gen_0':s9_15(n1131_15)) ->_IH gen_0':s9_15(0) 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: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Lemmas: -'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15)) -> gen_c:c18_15(n13_15), rt in Omega(1 + n13_15) <='(gen_0':s9_15(n442_15), gen_0':s9_15(n442_15)) -> gen_c2:c3:c410_15(n442_15), rt in Omega(1 + n442_15) -(gen_0':s9_15(n1131_15), gen_0':s9_15(n1131_15)) -> gen_0':s9_15(0), rt in Omega(0) Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: <=, F, f They will be analysed ascendingly in the following order: <= < F f < F <= < f ---------------------------------------- (73) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: <=(gen_0':s9_15(n1779_15), gen_0':s9_15(n1779_15)) -> true, rt in Omega(0) Induction Base: <=(gen_0':s9_15(0), gen_0':s9_15(0)) ->_R^Omega(0) true Induction Step: <=(gen_0':s9_15(+(n1779_15, 1)), gen_0':s9_15(+(n1779_15, 1))) ->_R^Omega(0) <=(gen_0':s9_15(n1779_15), gen_0':s9_15(n1779_15)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (74) Obligation: Innermost TRS: Rules: -'(z0, 0') -> c -'(s(z0), s(z1)) -> c1(-'(z0, z1)) <='(0', z0) -> c2 <='(s(z0), 0') -> c3 <='(s(z0), s(z1)) -> c4(<='(z0, z1)) IF(true, z0, z1) -> c5 IF(false, z0, z1) -> c6 PERFECTP(0') -> c7 PERFECTP(s(z0)) -> c8(F(z0, s(0'), s(z0), s(z0))) F(0', z0, 0', z1) -> c9 F(0', z0, s(z1), z2) -> c10 F(s(z0), 0', z1, z2) -> c11(F(z0, z2, -(z1, s(z0)), z2), -'(z1, s(z0))) F(s(z0), s(z1), z2, z3) -> c12(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), <='(z0, z1)) F(s(z0), s(z1), z2, z3) -> c13(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(s(z0), -(z1, z0), z2, z3), -'(z1, z0)) F(s(z0), s(z1), z2, z3) -> c14(IF(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)), F(z0, z3, z2, z3)) -(z0, 0') -> z0 -(s(z0), s(z1)) -> -(z0, z1) <=(0', z0) -> true <=(s(z0), 0') -> false <=(s(z0), s(z1)) -> <=(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, -(z1, s(z0)), z2) f(s(z0), s(z1), z2, z3) -> if(<=(z0, z1), f(s(z0), -(z1, z0), z2, z3), f(z0, z3, z2, z3)) Types: -' :: 0':s -> 0':s -> c:c1 0' :: 0':s c :: c:c1 s :: 0':s -> 0':s c1 :: c:c1 -> c:c1 <=' :: 0':s -> 0':s -> c2:c3:c4 c2 :: c2:c3:c4 c3 :: c2:c3:c4 c4 :: c2:c3:c4 -> c2:c3:c4 IF :: true:false -> true:false -> true:false -> c5:c6 true :: true:false c5 :: c5:c6 false :: true:false c6 :: c5:c6 PERFECTP :: 0':s -> c7:c8 c7 :: c7:c8 c8 :: c9:c10:c11:c12:c13:c14 -> c7:c8 F :: 0':s -> 0':s -> 0':s -> 0':s -> c9:c10:c11:c12:c13:c14 c9 :: c9:c10:c11:c12:c13:c14 c10 :: c9:c10:c11:c12:c13:c14 c11 :: c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 - :: 0':s -> 0':s -> 0':s c12 :: c5:c6 -> c2:c3:c4 -> c9:c10:c11:c12:c13:c14 <= :: 0':s -> 0':s -> true:false f :: 0':s -> 0':s -> 0':s -> 0':s -> true:false c13 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c:c1 -> c9:c10:c11:c12:c13:c14 c14 :: c5:c6 -> c9:c10:c11:c12:c13:c14 -> c9:c10:c11:c12:c13:c14 if :: true:false -> true:false -> true:false -> true:false perfectp :: 0':s -> true:false hole_c:c11_15 :: c:c1 hole_0':s2_15 :: 0':s hole_c2:c3:c43_15 :: c2:c3:c4 hole_c5:c64_15 :: c5:c6 hole_true:false5_15 :: true:false hole_c7:c86_15 :: c7:c8 hole_c9:c10:c11:c12:c13:c147_15 :: c9:c10:c11:c12:c13:c14 gen_c:c18_15 :: Nat -> c:c1 gen_0':s9_15 :: Nat -> 0':s gen_c2:c3:c410_15 :: Nat -> c2:c3:c4 gen_c9:c10:c11:c12:c13:c1411_15 :: Nat -> c9:c10:c11:c12:c13:c14 Lemmas: -'(gen_0':s9_15(n13_15), gen_0':s9_15(n13_15)) -> gen_c:c18_15(n13_15), rt in Omega(1 + n13_15) <='(gen_0':s9_15(n442_15), gen_0':s9_15(n442_15)) -> gen_c2:c3:c410_15(n442_15), rt in Omega(1 + n442_15) -(gen_0':s9_15(n1131_15), gen_0':s9_15(n1131_15)) -> gen_0':s9_15(0), rt in Omega(0) <=(gen_0':s9_15(n1779_15), gen_0':s9_15(n1779_15)) -> true, rt in Omega(0) Generator Equations: gen_c:c18_15(0) <=> c gen_c:c18_15(+(x, 1)) <=> c1(gen_c:c18_15(x)) gen_0':s9_15(0) <=> 0' gen_0':s9_15(+(x, 1)) <=> s(gen_0':s9_15(x)) gen_c2:c3:c410_15(0) <=> c2 gen_c2:c3:c410_15(+(x, 1)) <=> c4(gen_c2:c3:c410_15(x)) gen_c9:c10:c11:c12:c13:c1411_15(0) <=> c9 gen_c9:c10:c11:c12:c13:c1411_15(+(x, 1)) <=> c11(gen_c9:c10:c11:c12:c13:c1411_15(x), c) The following defined symbols remain to be analysed: f, F They will be analysed ascendingly in the following order: f < F