KILLED proof of input_dzthlO6myE.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). (0) CpxTRS (1) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxTRS (3) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (4) CpxTRS (5) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (6) CpxWeightedTrs (7) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxTypedWeightedTrs (9) CompletionProof [UPPER BOUND(ID), 0 ms] (10) CpxTypedWeightedCompleteTrs (11) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CpxTypedWeightedCompleteTrs (13) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (14) CpxRNTS (15) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxRNTS (17) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRNTS (19) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (20) CpxRNTS (21) IntTrsBoundProof [UPPER BOUND(ID), 276 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 41 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 234 ms] (28) CpxRNTS (29) IntTrsBoundProof [UPPER BOUND(ID), 57 ms] (30) CpxRNTS (31) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) IntTrsBoundProof [UPPER BOUND(ID), 8776 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 6141 ms] (36) CpxRNTS (37) CompletionProof [UPPER BOUND(ID), 0 ms] (38) CpxTypedWeightedCompleteTrs (39) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (40) CpxRNTS (41) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (42) CdtProblem (43) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (44) CdtProblem (45) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CdtProblem (47) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (48) CdtProblem (49) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CdtProblem (51) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (54) CdtProblem (55) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (58) CdtProblem (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CdtProblem (63) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 11 ms] (64) CdtProblem (65) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (72) CdtProblem (73) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 15 ms] (74) CdtProblem (75) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) d(x, s(y), z) -> cond(ge(x, z), x, y, z) cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) cond(false, x, y, z) -> 0 ge(u, 0) -> true ge(0, s(v)) -> false ge(s(u), s(v)) -> ge(u, v) plus(n, 0) -> n plus(n, s(m)) -> s(plus(n, m)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (2) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0') d(x, s(y), z) -> cond(ge(x, z), x, y, z) cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) cond(false, x, y, z) -> 0' ge(u, 0') -> true ge(0', s(v)) -> false ge(s(u), s(v)) -> ge(u, v) plus(n, 0') -> n plus(n, s(m)) -> s(plus(n, m)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (4) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) d(x, s(y), z) -> cond(ge(x, z), x, y, z) cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) cond(false, x, y, z) -> 0 ge(u, 0) -> true ge(0, s(v)) -> false ge(s(u), s(v)) -> ge(u, v) plus(n, 0) -> n plus(n, s(m)) -> s(plus(n, m)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxWeightedTrs could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) [1] d(x, s(y), z) -> cond(ge(x, z), x, y, z) [1] cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) [1] cond(false, x, y, z) -> 0 [1] ge(u, 0) -> true [1] ge(0, s(v)) -> false [1] ge(s(u), s(v)) -> ge(u, v) [1] plus(n, 0) -> n [1] plus(n, s(m)) -> s(plus(n, m)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (7) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (8) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) [1] d(x, s(y), z) -> cond(ge(x, z), x, y, z) [1] cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) [1] cond(false, x, y, z) -> 0 [1] ge(u, 0) -> true [1] ge(0, s(v)) -> false [1] ge(s(u), s(v)) -> ge(u, v) [1] plus(n, 0) -> n [1] plus(n, s(m)) -> s(plus(n, m)) [1] The TRS has the following type information: div :: s:0 -> s:0 -> s:0 s :: s:0 -> s:0 d :: s:0 -> s:0 -> s:0 -> s:0 0 :: s:0 cond :: true:false -> s:0 -> s:0 -> s:0 -> s:0 ge :: s:0 -> s:0 -> true:false true :: true:false plus :: s:0 -> s:0 -> s:0 false :: true:false Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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: div_2 d_3 cond_4 (c) The following functions are completely defined: ge_2 plus_2 Due to the following rules being added: none And the following fresh constants: none ---------------------------------------- (10) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) [1] d(x, s(y), z) -> cond(ge(x, z), x, y, z) [1] cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) [1] cond(false, x, y, z) -> 0 [1] ge(u, 0) -> true [1] ge(0, s(v)) -> false [1] ge(s(u), s(v)) -> ge(u, v) [1] plus(n, 0) -> n [1] plus(n, s(m)) -> s(plus(n, m)) [1] The TRS has the following type information: div :: s:0 -> s:0 -> s:0 s :: s:0 -> s:0 d :: s:0 -> s:0 -> s:0 -> s:0 0 :: s:0 cond :: true:false -> s:0 -> s:0 -> s:0 -> s:0 ge :: s:0 -> s:0 -> true:false true :: true:false plus :: s:0 -> s:0 -> s:0 false :: true:false Rewrite Strategy: INNERMOST ---------------------------------------- (11) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (12) 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: div(x, s(y)) -> d(x, s(y), 0) [1] d(x, s(y), 0) -> cond(true, x, y, 0) [2] d(0, s(y), s(v')) -> cond(false, 0, y, s(v')) [2] d(s(u'), s(y), s(v'')) -> cond(ge(u', v''), s(u'), y, s(v'')) [2] cond(true, x, y, 0) -> s(d(x, s(y), s(y))) [2] cond(true, x, y, s(m')) -> s(d(x, s(y), s(plus(s(y), m')))) [2] cond(false, x, y, z) -> 0 [1] ge(u, 0) -> true [1] ge(0, s(v)) -> false [1] ge(s(u), s(v)) -> ge(u, v) [1] plus(n, 0) -> n [1] plus(n, s(m)) -> s(plus(n, m)) [1] The TRS has the following type information: div :: s:0 -> s:0 -> s:0 s :: s:0 -> s:0 d :: s:0 -> s:0 -> s:0 -> s:0 0 :: s:0 cond :: true:false -> s:0 -> s:0 -> s:0 -> s:0 ge :: s:0 -> s:0 -> true:false true :: true:false plus :: s:0 -> s:0 -> s:0 false :: true:false Rewrite Strategy: INNERMOST ---------------------------------------- (13) 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 true => 1 false => 0 ---------------------------------------- (14) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(x, 1 + y, 1 + y) :|: z1 = y, z2 = 0, x >= 0, y >= 0, z'' = x, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(x, 1 + y, 1 + plus(1 + y, m')) :|: z2 = 1 + m', z1 = y, x >= 0, y >= 0, m' >= 0, z'' = x, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(u', v''), 1 + u', y, 1 + v'') :|: z1 = 1 + v'', y >= 0, z' = 1 + u', u' >= 0, z'' = 1 + y, v'' >= 0 d(z', z'', z1) -{ 2 }-> cond(1, x, y, 0) :|: z1 = 0, z' = x, x >= 0, y >= 0, z'' = 1 + y d(z', z'', z1) -{ 2 }-> cond(0, 0, y, 1 + v') :|: y >= 0, z1 = 1 + v', v' >= 0, z'' = 1 + y, z' = 0 div(z', z'') -{ 1 }-> d(x, 1 + y, 0) :|: z' = x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> ge(u, v) :|: v >= 0, z' = 1 + u, z'' = 1 + v, u >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' = u, u >= 0 ge(z', z'') -{ 1 }-> 0 :|: v >= 0, z'' = 1 + v, z' = 0 plus(z', z'') -{ 1 }-> n :|: z'' = 0, n >= 0, z' = n plus(z', z'') -{ 1 }-> 1 + plus(n, m) :|: n >= 0, z'' = 1 + m, z' = n, m >= 0 ---------------------------------------- (15) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (16) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(z' - 1, z1 - 1), 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { ge } { plus } { d, cond } { div } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(z' - 1, z1 - 1), 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {ge}, {plus}, {d,cond}, {div} ---------------------------------------- (19) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(z' - 1, z1 - 1), 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {ge}, {plus}, {d,cond}, {div} ---------------------------------------- (21) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: ge after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 1 ---------------------------------------- (22) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(z' - 1, z1 - 1), 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {ge}, {plus}, {d,cond}, {div} Previous analysis results are: ge: runtime: ?, size: O(1) [1] ---------------------------------------- (23) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: ge after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 2 + z'' ---------------------------------------- (24) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 2 }-> cond(ge(z' - 1, z1 - 1), 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 1 }-> ge(z' - 1, z'' - 1) :|: z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {plus}, {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] ---------------------------------------- (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: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {plus}, {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] ---------------------------------------- (27) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: z' + z'' ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {plus}, {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] plus: runtime: ?, size: O(n^1) [z' + z''] ---------------------------------------- (29) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: plus after applying outer abstraction to obtain an ITS, resulting in: O(n^1) with polynomial bound: 1 + z'' ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + plus(1 + z1, z2 - 1)) :|: z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 }-> 1 + plus(z', z'' - 1) :|: z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] plus: runtime: O(n^1) [1 + z''], size: O(n^1) [z' + 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: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 + z2 }-> 1 + d(z'', 1 + z1, 1 + s'') :|: s'' >= 0, s'' <= 1 + z1 + (z2 - 1), z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 + z'' }-> 1 + s1 :|: s1 >= 0, s1 <= z' + (z'' - 1), z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] plus: runtime: O(n^1) [1 + z''], size: O(n^1) [z' + z''] ---------------------------------------- (33) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: d after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? Computed SIZE bound using CoFloCo for: cond after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 + z2 }-> 1 + d(z'', 1 + z1, 1 + s'') :|: s'' >= 0, s'' <= 1 + z1 + (z2 - 1), z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 + z'' }-> 1 + s1 :|: s1 >= 0, s1 <= z' + (z'' - 1), z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] plus: runtime: O(n^1) [1 + z''], size: O(n^1) [z' + z''] d: runtime: ?, size: INF cond: runtime: ?, size: INF ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: d after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z2 >= 0, z'' >= 0, z1 >= 0, z' = 0 cond(z', z'', z1, z2) -{ 2 + z2 }-> 1 + d(z'', 1 + z1, 1 + s'') :|: s'' >= 0, s'' <= 1 + z1 + (z2 - 1), z'' >= 0, z1 >= 0, z2 - 1 >= 0, z' = 1 cond(z', z'', z1, z2) -{ 2 }-> 1 + d(z'', 1 + z1, 1 + z1) :|: z2 = 0, z'' >= 0, z1 >= 0, z' = 1 d(z', z'', z1) -{ 3 + z1 }-> cond(s, 1 + (z' - 1), z'' - 1, 1 + (z1 - 1)) :|: s >= 0, s <= 1, z'' - 1 >= 0, z' - 1 >= 0, z1 - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(1, z', z'' - 1, 0) :|: z1 = 0, z' >= 0, z'' - 1 >= 0 d(z', z'', z1) -{ 2 }-> cond(0, 0, z'' - 1, 1 + (z1 - 1)) :|: z'' - 1 >= 0, z1 - 1 >= 0, z' = 0 div(z', z'') -{ 1 }-> d(z', 1 + (z'' - 1), 0) :|: z' >= 0, z'' - 1 >= 0 ge(z', z'') -{ 2 + z'' }-> s' :|: s' >= 0, s' <= 1, z'' - 1 >= 0, z' - 1 >= 0 ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' >= 0 ge(z', z'') -{ 1 }-> 0 :|: z'' - 1 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z' :|: z'' = 0, z' >= 0 plus(z', z'') -{ 1 + z'' }-> 1 + s1 :|: s1 >= 0, s1 <= z' + (z'' - 1), z' >= 0, z'' - 1 >= 0 Function symbols to be analyzed: {d,cond}, {div} Previous analysis results are: ge: runtime: O(n^1) [2 + z''], size: O(1) [1] plus: runtime: O(n^1) [1 + z''], size: O(n^1) [z' + z''] d: runtime: INF, size: INF cond: runtime: ?, size: INF ---------------------------------------- (37) CompletionProof (UPPER BOUND(ID)) The TRS is a completely defined constructor system, as every type has a constant constructor and the following rules were added: div(v0, v1) -> null_div [0] d(v0, v1, v2) -> null_d [0] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] cond(v0, v1, v2, v3) -> null_cond [0] And the following fresh constants: null_div, null_d, null_ge, null_plus, null_cond ---------------------------------------- (38) Obligation: Runtime Complexity Weighted TRS where all functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: div(x, s(y)) -> d(x, s(y), 0) [1] d(x, s(y), z) -> cond(ge(x, z), x, y, z) [1] cond(true, x, y, z) -> s(d(x, s(y), plus(s(y), z))) [1] cond(false, x, y, z) -> 0 [1] ge(u, 0) -> true [1] ge(0, s(v)) -> false [1] ge(s(u), s(v)) -> ge(u, v) [1] plus(n, 0) -> n [1] plus(n, s(m)) -> s(plus(n, m)) [1] div(v0, v1) -> null_div [0] d(v0, v1, v2) -> null_d [0] ge(v0, v1) -> null_ge [0] plus(v0, v1) -> null_plus [0] cond(v0, v1, v2, v3) -> null_cond [0] The TRS has the following type information: div :: s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond s :: s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond d :: s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond 0 :: s:0:null_div:null_d:null_plus:null_cond cond :: true:false:null_ge -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond ge :: s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> true:false:null_ge true :: true:false:null_ge plus :: s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond -> s:0:null_div:null_d:null_plus:null_cond false :: true:false:null_ge null_div :: s:0:null_div:null_d:null_plus:null_cond null_d :: s:0:null_div:null_d:null_plus:null_cond null_ge :: true:false:null_ge null_plus :: s:0:null_div:null_d:null_plus:null_cond null_cond :: s:0:null_div:null_d:null_plus:null_cond Rewrite Strategy: INNERMOST ---------------------------------------- (39) 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 true => 2 false => 1 null_div => 0 null_d => 0 null_ge => 0 null_plus => 0 null_cond => 0 ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: cond(z', z'', z1, z2) -{ 1 }-> 0 :|: z1 = y, z >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = 1 cond(z', z'', z1, z2) -{ 0 }-> 0 :|: z2 = v3, v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, v3 >= 0, z' = v0 cond(z', z'', z1, z2) -{ 1 }-> 1 + d(x, 1 + y, plus(1 + y, z)) :|: z1 = y, z >= 0, z' = 2, z2 = z, x >= 0, y >= 0, z'' = x d(z', z'', z1) -{ 1 }-> cond(ge(x, z), x, y, z) :|: z1 = z, z >= 0, z' = x, x >= 0, y >= 0, z'' = 1 + y d(z', z'', z1) -{ 0 }-> 0 :|: v0 >= 0, z1 = v2, v1 >= 0, z'' = v1, v2 >= 0, z' = v0 div(z', z'') -{ 1 }-> d(x, 1 + y, 0) :|: z' = x, x >= 0, y >= 0, z'' = 1 + y div(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 ge(z', z'') -{ 1 }-> ge(u, v) :|: v >= 0, z' = 1 + u, z'' = 1 + v, u >= 0 ge(z', z'') -{ 1 }-> 2 :|: z'' = 0, z' = u, u >= 0 ge(z', z'') -{ 1 }-> 1 :|: v >= 0, z'' = 1 + v, z' = 0 ge(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> n :|: z'' = 0, n >= 0, z' = n plus(z', z'') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z'' = v1, z' = v0 plus(z', z'') -{ 1 }-> 1 + plus(n, m) :|: n >= 0, z'' = 1 + m, z' = n, m >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (41) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: div(z0, s(z1)) -> d(z0, s(z1), 0) d(z0, s(z1), z2) -> cond(ge(z0, z2), z0, z1, z2) cond(true, z0, z1, z2) -> s(d(z0, s(z1), plus(s(z1), z2))) cond(false, z0, z1, z2) -> 0 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: DIV(z0, s(z1)) -> c(D(z0, s(z1), 0)) D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) COND(false, z0, z1, z2) -> c3 GE(z0, 0) -> c4 GE(0, s(z0)) -> c5 GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, 0) -> c7 PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) S tuples: DIV(z0, s(z1)) -> c(D(z0, s(z1), 0)) D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) COND(false, z0, z1, z2) -> c3 GE(z0, 0) -> c4 GE(0, s(z0)) -> c5 GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, 0) -> c7 PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) K tuples:none Defined Rule Symbols: div_2, d_3, cond_4, ge_2, plus_2 Defined Pair Symbols: DIV_2, D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c_1, c1_2, c2_2, c3, c4, c5, c6_1, c7, c8_1 ---------------------------------------- (43) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: DIV(z0, s(z1)) -> c(D(z0, s(z1), 0)) Removed 4 trailing nodes: PLUS(z0, 0) -> c7 GE(z0, 0) -> c4 GE(0, s(z0)) -> c5 COND(false, z0, z1, z2) -> c3 ---------------------------------------- (44) Obligation: Complexity Dependency Tuples Problem Rules: div(z0, s(z1)) -> d(z0, s(z1), 0) d(z0, s(z1), z2) -> cond(ge(z0, z2), z0, z1, z2) cond(true, z0, z1, z2) -> s(d(z0, s(z1), plus(s(z1), z2))) cond(false, z0, z1, z2) -> 0 ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) S tuples: D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) K tuples:none Defined Rule Symbols: div_2, d_3, cond_4, ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c1_2, c2_2, c6_1, c8_1 ---------------------------------------- (45) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: div(z0, s(z1)) -> d(z0, s(z1), 0) d(z0, s(z1), z2) -> cond(ge(z0, z2), z0, z1, z2) cond(true, z0, z1, z2) -> s(d(z0, s(z1), plus(s(z1), z2))) cond(false, z0, z1, z2) -> 0 ---------------------------------------- (46) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) S tuples: D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c1_2, c2_2, c6_1, c8_1 ---------------------------------------- (47) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace D(z0, s(z1), z2) -> c1(COND(ge(z0, z2), z0, z1, z2), GE(z0, z2)) by D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0), GE(z0, 0)) D(0, s(x1), s(z0)) -> c1(COND(false, 0, x1, s(z0)), GE(0, s(z0))) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0), GE(z0, 0)) D(0, s(x1), s(z0)) -> c1(COND(false, 0, x1, s(z0)), GE(0, s(z0))) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) S tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0), GE(z0, 0)) D(0, s(x1), s(z0)) -> c1(COND(false, 0, x1, s(z0)), GE(0, s(z0))) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: COND_4, GE_2, PLUS_2, D_3 Compound Symbols: c2_2, c6_1, c8_1, c1_2 ---------------------------------------- (49) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: D(0, s(x1), s(z0)) -> c1(COND(false, 0, x1, s(z0)), GE(0, s(z0))) ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0), GE(z0, 0)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) S tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0), GE(z0, 0)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: COND_4, GE_2, PLUS_2, D_3 Compound Symbols: c2_2, c6_1, c8_1, c1_2 ---------------------------------------- (51) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) S tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: COND_4, GE_2, PLUS_2, D_3 Compound Symbols: c2_2, c6_1, c8_1, c1_2, c1_1 ---------------------------------------- (53) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) We considered the (Usable) Rules: plus(z0, s(z1)) -> s(plus(z0, z1)) plus(z0, 0) -> z0 And the Tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [3] POL(COND(x_1, x_2, x_3, x_4)) = x_4 POL(D(x_1, x_2, x_3)) = [3]x_2 + [2]x_3 POL(GE(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = [3]x_1 POL(c1(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c2(x_1, x_2)) = x_1 + x_2 POL(c6(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(false) = [3] POL(ge(x_1, x_2)) = [3] + [3]x_1 POL(plus(x_1, x_2)) = x_1 POL(s(x_1)) = 0 POL(true) = [3] ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) S tuples: COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) K tuples: D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: COND_4, GE_2, PLUS_2, D_3 Compound Symbols: c2_2, c6_1, c8_1, c1_2, c1_1 ---------------------------------------- (55) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace COND(true, z0, z1, z2) -> c2(D(z0, s(z1), plus(s(z1), z2)), PLUS(s(z1), z2)) by COND(true, x0, x1, 0) -> c2(D(x0, s(x1), s(x1)), PLUS(s(x1), 0)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) COND(true, x0, x1, 0) -> c2(D(x0, s(x1), s(x1)), PLUS(s(x1), 0)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) COND(true, x0, x1, 0) -> c2(D(x0, s(x1), s(x1)), PLUS(s(x1), 0)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) K tuples: D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2 ---------------------------------------- (57) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 2 leading nodes: D(z0, s(x1), 0) -> c1(COND(true, z0, x1, 0)) COND(true, x0, x1, 0) -> c2(D(x0, s(x1), s(x1)), PLUS(s(x1), 0)) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c2_2 ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace D(s(z0), s(x1), s(z1)) -> c1(COND(ge(z0, z1), s(z0), x1, s(z1)), GE(s(z0), s(z1))) by D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(0), s(x1), s(s(z0))) -> c1(COND(false, s(0), x1, s(s(z0))), GE(s(0), s(s(z0)))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(0), s(x1), s(s(z0))) -> c1(COND(false, s(0), x1, s(s(z0))), GE(s(0), s(s(z0)))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(0), s(x1), s(s(z0))) -> c1(COND(false, s(0), x1, s(s(z0))), GE(s(0), s(s(z0)))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, COND_4, D_3 Compound Symbols: c6_1, c8_1, c2_2, c1_2, c1_1 ---------------------------------------- (61) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) K tuples:none Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, COND_4, D_3 Compound Symbols: c6_1, c8_1, c2_2, c1_2, c1_1 ---------------------------------------- (63) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) We considered the (Usable) Rules:none And the Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(COND(x_1, x_2, x_3, x_4)) = x_2 POL(D(x_1, x_2, x_3)) = x_1 POL(GE(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = 0 POL(c1(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c2(x_1, x_2)) = x_1 + x_2 POL(c6(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(false) = [1] POL(ge(x_1, x_2)) = [1] POL(plus(x_1, x_2)) = [1] + x_1 + x_2 POL(s(x_1)) = [1] POL(true) = [1] ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, COND_4, D_3 Compound Symbols: c6_1, c8_1, c2_2, c1_2, c1_1 ---------------------------------------- (65) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace COND(true, x0, x1, s(z1)) -> c2(D(x0, s(x1), s(plus(s(x1), z1))), PLUS(s(x1), s(z1))) by COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(plus(s(x1), 0))), PLUS(s(x1), s(0))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(plus(s(x1), 0))), PLUS(s(x1), s(0))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(plus(s(x1), 0))), PLUS(s(x1), s(0))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2 ---------------------------------------- (67) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(plus(s(x1), 0))), PLUS(s(x1), s(0))) by COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2 ---------------------------------------- (69) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace COND(true, s(s(x0)), x1, s(s(x2))) -> c2(D(s(s(x0)), s(x1), s(plus(s(x1), s(x2)))), PLUS(s(x1), s(s(x2)))) by COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2, c2_1 ---------------------------------------- (71) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 3 leading nodes: D(s(z0), s(x1), s(0)) -> c1(COND(true, s(z0), x1, s(0)), GE(s(z0), s(0))) COND(true, s(x0), x1, s(0)) -> c2(D(s(x0), s(x1), s(s(x1))), PLUS(s(x1), s(0))) D(s(0), s(x1), s(s(z0))) -> c1(GE(s(0), s(s(z0)))) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2, c2_1 ---------------------------------------- (73) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) We considered the (Usable) Rules: ge(s(z0), s(z1)) -> ge(z0, z1) ge(0, s(z0)) -> false ge(z0, 0) -> true And the Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(COND(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_4 POL(D(x_1, x_2, x_3)) = [1] + x_1 + x_2 + x_3 POL(GE(x_1, x_2)) = 0 POL(PLUS(x_1, x_2)) = 0 POL(c1(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c2(x_1)) = x_1 POL(c2(x_1, x_2)) = x_1 + x_2 POL(c6(x_1)) = x_1 POL(c8(x_1)) = x_1 POL(false) = [1] POL(ge(x_1, x_2)) = [1] POL(plus(x_1, x_2)) = [1] + x_1 + x_2 POL(s(x_1)) = [1] POL(true) = [1] ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) S tuples: GE(s(z0), s(z1)) -> c6(GE(z0, z1)) PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: GE_2, PLUS_2, D_3, COND_4 Compound Symbols: c6_1, c8_1, c1_2, c1_1, c2_2, c2_1 ---------------------------------------- (75) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(z0), s(z1)) -> c6(GE(z0, z1)) by GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) S tuples: PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) K tuples: D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: PLUS_2, D_3, COND_4, GE_2 Compound Symbols: c8_1, c1_2, c1_1, c2_2, c2_1, c6_1 ---------------------------------------- (77) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace D(s(x0), s(x1), s(x2)) -> c1(GE(s(x0), s(x2))) by D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) S tuples: PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) K tuples: COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: PLUS_2, D_3, COND_4, GE_2 Compound Symbols: c8_1, c1_2, c2_2, c2_1, c6_1, c1_1 ---------------------------------------- (79) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace PLUS(z0, s(z1)) -> c8(PLUS(z0, z1)) by PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) S tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) K tuples: COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c1_2, c2_2, c2_1, c6_1, c1_1, c8_1 ---------------------------------------- (81) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(s(y0)), s(s(y1))) -> c6(GE(s(y0), s(y1))) by GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) S tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) K tuples: COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, PLUS_2, GE_2 Compound Symbols: c1_2, c2_2, c2_1, c1_1, c8_1, c6_1 ---------------------------------------- (83) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace D(s(s(x0)), s(x1), s(s(y0))) -> c1(GE(s(s(x0)), s(s(y0)))) by D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) S tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) K tuples: COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, PLUS_2, GE_2 Compound Symbols: c1_2, c2_2, c2_1, c8_1, c6_1, c1_1 ---------------------------------------- (85) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace PLUS(z0, s(s(y1))) -> c8(PLUS(z0, s(y1))) by PLUS(z0, s(s(s(y1)))) -> c8(PLUS(z0, s(s(y1)))) ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) PLUS(z0, s(s(s(y1)))) -> c8(PLUS(z0, s(s(y1)))) S tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) PLUS(z0, s(s(s(y1)))) -> c8(PLUS(z0, s(s(y1)))) K tuples: COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c1_2, c2_2, c2_1, c6_1, c1_1, c8_1 ---------------------------------------- (87) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace COND(true, s(s(x0)), x1, s(s(x2))) -> c2(PLUS(s(x1), s(s(x2)))) by COND(true, s(s(z0)), z1, s(s(s(y1)))) -> c2(PLUS(s(z1), s(s(s(y1))))) ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) plus(z0, 0) -> z0 plus(z0, s(z1)) -> s(plus(z0, z1)) Tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) PLUS(z0, s(s(s(y1)))) -> c8(PLUS(z0, s(s(y1)))) COND(true, s(s(z0)), z1, s(s(s(y1)))) -> c2(PLUS(s(z1), s(s(s(y1))))) S tuples: D(s(s(z0)), s(x1), s(s(z1))) -> c1(COND(ge(z0, z1), s(s(z0)), x1, s(s(z1))), GE(s(s(z0)), s(s(z1)))) COND(true, s(s(x0)), x1, s(s(z1))) -> c2(D(s(s(x0)), s(x1), s(s(plus(s(x1), z1)))), PLUS(s(x1), s(s(z1)))) GE(s(s(s(y0))), s(s(s(y1)))) -> c6(GE(s(s(y0)), s(s(y1)))) PLUS(z0, s(s(s(y1)))) -> c8(PLUS(z0, s(s(y1)))) K tuples: D(s(s(s(y0))), s(z1), s(s(s(y1)))) -> c1(GE(s(s(s(y0))), s(s(s(y1))))) COND(true, s(s(z0)), z1, s(s(s(y1)))) -> c2(PLUS(s(z1), s(s(s(y1))))) Defined Rule Symbols: ge_2, plus_2 Defined Pair Symbols: D_3, COND_4, GE_2, PLUS_2 Compound Symbols: c1_2, c2_2, c6_1, c1_1, c8_1, c2_1