KILLED proof of input_jdbotDhWi1.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), 21 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), 217 ms] (22) CpxRNTS (23) IntTrsBoundProof [UPPER BOUND(ID), 161 ms] (24) CpxRNTS (25) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (26) CpxRNTS (27) IntTrsBoundProof [UPPER BOUND(ID), 267 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), 357 ms] (34) CpxRNTS (35) IntTrsBoundProof [UPPER BOUND(ID), 98 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 879 ms] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 5 ms] (42) CpxRNTS (43) CompletionProof [UPPER BOUND(ID), 0 ms] (44) CpxTypedWeightedCompleteTrs (45) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (48) CdtProblem (49) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (50) CdtProblem (51) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (56) CdtProblem (57) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 41 ms] (62) CdtProblem (63) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (68) CdtProblem (69) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (72) CdtProblem (73) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (74) CdtProblem (75) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CdtProblem (77) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (78) CdtProblem (79) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CdtProblem (81) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CdtProblem (83) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (84) CdtProblem (85) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (86) CdtProblem (87) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (88) CdtProblem (89) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (90) CdtProblem (91) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (92) CdtProblem (93) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (94) CdtProblem (95) CdtInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (96) CdtProblem (97) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (98) CdtProblem (99) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (100) CdtProblem (101) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (102) CdtProblem (103) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (104) CdtProblem (105) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (106) CdtProblem (107) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (108) CdtProblem (109) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (110) CdtProblem (111) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (112) 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: plus(0, x) -> x plus(s(x), y) -> s(plus(x, y)) times(0, y) -> 0 times(s(x), y) -> plus(y, times(x, y)) exp(x, 0) -> s(0) exp(x, s(y)) -> times(x, exp(x, y)) ge(x, 0) -> true ge(0, s(x)) -> false ge(s(x), s(y)) -> ge(x, y) tower(x, y) -> towerIter(0, x, y, s(0)) towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) help(true, c, x, y, z) -> z help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) 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: plus(0', x) -> x plus(s(x), y) -> s(plus(x, y)) times(0', y) -> 0' times(s(x), y) -> plus(y, times(x, y)) exp(x, 0') -> s(0') exp(x, s(y)) -> times(x, exp(x, y)) ge(x, 0') -> true ge(0', s(x)) -> false ge(s(x), s(y)) -> ge(x, y) tower(x, y) -> towerIter(0', x, y, s(0')) towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) help(true, c, x, y, z) -> z help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) 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: plus(0, x) -> x plus(s(x), y) -> s(plus(x, y)) times(0, y) -> 0 times(s(x), y) -> plus(y, times(x, y)) exp(x, 0) -> s(0) exp(x, s(y)) -> times(x, exp(x, y)) ge(x, 0) -> true ge(0, s(x)) -> false ge(s(x), s(y)) -> ge(x, y) tower(x, y) -> towerIter(0, x, y, s(0)) towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) help(true, c, x, y, z) -> z help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) 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: plus(0, x) -> x [1] plus(s(x), y) -> s(plus(x, y)) [1] times(0, y) -> 0 [1] times(s(x), y) -> plus(y, times(x, y)) [1] exp(x, 0) -> s(0) [1] exp(x, s(y)) -> times(x, exp(x, y)) [1] ge(x, 0) -> true [1] ge(0, s(x)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] tower(x, y) -> towerIter(0, x, y, s(0)) [1] towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) [1] help(true, c, x, y, z) -> z [1] help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) [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: plus(0, x) -> x [1] plus(s(x), y) -> s(plus(x, y)) [1] times(0, y) -> 0 [1] times(s(x), y) -> plus(y, times(x, y)) [1] exp(x, 0) -> s(0) [1] exp(x, s(y)) -> times(x, exp(x, y)) [1] ge(x, 0) -> true [1] ge(0, s(x)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] tower(x, y) -> towerIter(0, x, y, s(0)) [1] towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) [1] help(true, c, x, y, z) -> z [1] help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) [1] The TRS has the following type information: plus :: 0:s -> 0:s -> 0:s 0 :: 0:s s :: 0:s -> 0:s times :: 0:s -> 0:s -> 0:s exp :: 0:s -> 0:s -> 0:s ge :: 0:s -> 0:s -> true:false true :: true:false false :: true:false tower :: 0:s -> 0:s -> 0:s towerIter :: 0:s -> 0:s -> 0:s -> 0:s -> 0:s help :: true:false -> 0:s -> 0:s -> 0:s -> 0:s -> 0:s 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: tower_2 towerIter_4 help_5 (c) The following functions are completely defined: exp_2 times_2 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: plus(0, x) -> x [1] plus(s(x), y) -> s(plus(x, y)) [1] times(0, y) -> 0 [1] times(s(x), y) -> plus(y, times(x, y)) [1] exp(x, 0) -> s(0) [1] exp(x, s(y)) -> times(x, exp(x, y)) [1] ge(x, 0) -> true [1] ge(0, s(x)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] tower(x, y) -> towerIter(0, x, y, s(0)) [1] towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) [1] help(true, c, x, y, z) -> z [1] help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) [1] The TRS has the following type information: plus :: 0:s -> 0:s -> 0:s 0 :: 0:s s :: 0:s -> 0:s times :: 0:s -> 0:s -> 0:s exp :: 0:s -> 0:s -> 0:s ge :: 0:s -> 0:s -> true:false true :: true:false false :: true:false tower :: 0:s -> 0:s -> 0:s towerIter :: 0:s -> 0:s -> 0:s -> 0:s -> 0:s help :: true:false -> 0:s -> 0:s -> 0:s -> 0:s -> 0:s 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: plus(0, x) -> x [1] plus(s(x), y) -> s(plus(x, y)) [1] times(0, y) -> 0 [1] times(s(0), y) -> plus(y, 0) [2] times(s(s(x')), y) -> plus(y, plus(y, times(x', y))) [2] exp(x, 0) -> s(0) [1] exp(x, s(0)) -> times(x, s(0)) [2] exp(x, s(s(y'))) -> times(x, times(x, exp(x, y'))) [2] ge(x, 0) -> true [1] ge(0, s(x)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] tower(x, y) -> towerIter(0, x, y, s(0)) [1] towerIter(c, 0, y, z) -> help(true, c, 0, y, z) [2] towerIter(0, s(x''), y, z) -> help(false, 0, s(x''), y, z) [2] towerIter(s(x1), s(y''), y, z) -> help(ge(x1, y''), s(x1), s(y''), y, z) [2] help(true, c, x, y, z) -> z [1] help(false, c, x, y, 0) -> towerIter(s(c), x, y, s(0)) [2] help(false, c, x, y, s(y1)) -> towerIter(s(c), x, y, times(y, exp(y, y1))) [2] The TRS has the following type information: plus :: 0:s -> 0:s -> 0:s 0 :: 0:s s :: 0:s -> 0:s times :: 0:s -> 0:s -> 0:s exp :: 0:s -> 0:s -> 0:s ge :: 0:s -> 0:s -> true:false true :: true:false false :: true:false tower :: 0:s -> 0:s -> 0:s towerIter :: 0:s -> 0:s -> 0:s -> 0:s -> 0:s help :: true:false -> 0:s -> 0:s -> 0:s -> 0:s -> 0:s 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: exp(z', z'') -{ 2 }-> times(x, times(x, exp(x, y'))) :|: z' = x, x >= 0, z'' = 1 + (1 + y'), y' >= 0 exp(z', z'') -{ 2 }-> times(x, 1 + 0) :|: z' = x, x >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 0 :|: x >= 0, z'' = 1 + x, z' = 0 help(z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 = y, z >= 0, c >= 0, z3 = z, x >= 0, y >= 0, z' = 1, z'' = c, z1 = x help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + c, x, y, times(y, exp(y, y1))) :|: y1 >= 0, z2 = y, c >= 0, x >= 0, y >= 0, z'' = c, z1 = x, z' = 0, z3 = 1 + y1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + c, x, y, 1 + 0) :|: z2 = y, c >= 0, z3 = 0, x >= 0, y >= 0, z'' = c, z1 = x, z' = 0 plus(z', z'') -{ 1 }-> x :|: x >= 0, z'' = x, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(x, y) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 times(z', z'') -{ 2 }-> plus(y, plus(y, times(x', y))) :|: z' = 1 + (1 + x'), z'' = y, x' >= 0, y >= 0 times(z', z'') -{ 2 }-> plus(y, 0) :|: z'' = y, y >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' = y, y >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, x, y, 1 + 0) :|: z' = x, z'' = y, x >= 0, y >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(x1, y''), 1 + x1, 1 + y'', y, z) :|: z1 = y, x1 >= 0, z >= 0, z2 = z, y >= 0, y'' >= 0, z' = 1 + x1, z'' = 1 + y'' towerIter(z', z'', z1, z2) -{ 2 }-> help(1, c, 0, y, z) :|: z'' = 0, z1 = y, z >= 0, c >= 0, z2 = z, y >= 0, z' = c towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + x'', y, z) :|: z1 = y, z >= 0, z2 = z, y >= 0, z'' = 1 + x'', x'' >= 0, z' = 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 ---------------------------------------- (17) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { ge } { plus } { times } { exp } { help, towerIter } { tower } ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {ge}, {plus}, {times}, {exp}, {help,towerIter}, {tower} ---------------------------------------- (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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {ge}, {plus}, {times}, {exp}, {help,towerIter}, {tower} ---------------------------------------- (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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {ge}, {plus}, {times}, {exp}, {help,towerIter}, {tower} 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(ge(z' - 1, z'' - 1), 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {plus}, {times}, {exp}, {help,towerIter}, {tower} 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {plus}, {times}, {exp}, {help,towerIter}, {tower} 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {plus}, {times}, {exp}, {help,towerIter}, {tower} 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(z' - 1, z'') :|: z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 2 }-> plus(z'', 0) :|: z'' >= 0, z' = 1 + 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {times}, {exp}, {help,towerIter}, {tower} 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: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {times}, {exp}, {help,towerIter}, {tower} 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 KoAT for: times after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 2*z'*z'' + z'' ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {times}, {exp}, {help,towerIter}, {tower} 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''] times: runtime: ?, size: O(n^2) [2*z'*z'' + z''] ---------------------------------------- (35) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using KoAT for: times after applying outer abstraction to obtain an ITS, resulting in: O(n^2) with polynomial bound: 4 + 4*z' + 2*z'*z'' + z'' ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 2 }-> times(z', 1 + 0) :|: z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 2 }-> plus(z'', plus(z'', times(z' - 2, z''))) :|: z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {exp}, {help,towerIter}, {tower} 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''] times: runtime: O(n^2) [4 + 4*z' + 2*z'*z'' + z''], size: O(n^2) [2*z'*z'' + z''] ---------------------------------------- (37) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 7 + 6*z' }-> s5 :|: s5 >= 0, s5 <= 1 + 0 + 2 * ((1 + 0) * z'), z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 4*z' + 2*z'*z'' + -1*z'' }-> s4 :|: s2 >= 0, s2 <= z'' + 2 * (z'' * (z' - 2)), s3 >= 0, s3 <= z'' + s2, s4 >= 0, s4 <= z'' + s3, z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {exp}, {help,towerIter}, {tower} 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''] times: runtime: O(n^2) [4 + 4*z' + 2*z'*z'' + z''], size: O(n^2) [2*z'*z'' + z''] ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: exp after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 7 + 6*z' }-> s5 :|: s5 >= 0, s5 <= 1 + 0 + 2 * ((1 + 0) * z'), z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 4*z' + 2*z'*z'' + -1*z'' }-> s4 :|: s2 >= 0, s2 <= z'' + 2 * (z'' * (z' - 2)), s3 >= 0, s3 <= z'' + s2, s4 >= 0, s4 <= z'' + s3, z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {exp}, {help,towerIter}, {tower} 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''] times: runtime: O(n^2) [4 + 4*z' + 2*z'*z'' + z''], size: O(n^2) [2*z'*z'' + z''] exp: runtime: ?, size: INF ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: exp after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 7 + 6*z' }-> s5 :|: s5 >= 0, s5 <= 1 + 0 + 2 * ((1 + 0) * z'), z' >= 0, z'' = 1 + 0 exp(z', z'') -{ 2 }-> times(z', times(z', exp(z', z'' - 2))) :|: z' >= 0, z'' - 2 >= 0 exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' >= 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 help(z', z'', z1, z2, z3) -{ 1 }-> z3 :|: z3 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 1 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, times(z2, exp(z2, z3 - 1))) :|: z3 - 1 >= 0, z'' >= 0, z1 >= 0, z2 >= 0, z' = 0 help(z', z'', z1, z2, z3) -{ 2 }-> towerIter(1 + z'', z1, z2, 1 + 0) :|: z'' >= 0, z3 = 0, z1 >= 0, z2 >= 0, z' = 0 plus(z', z'') -{ 1 }-> z'' :|: z'' >= 0, z' = 0 plus(z', z'') -{ 1 + z' }-> 1 + s'' :|: s'' >= 0, s'' <= z' - 1 + z'', z' - 1 >= 0, z'' >= 0 times(z', z'') -{ 3 + z'' }-> s1 :|: s1 >= 0, s1 <= z'' + 0, z'' >= 0, z' = 1 + 0 times(z', z'') -{ 4*z' + 2*z'*z'' + -1*z'' }-> s4 :|: s2 >= 0, s2 <= z'' + 2 * (z'' * (z' - 2)), s3 >= 0, s3 <= z'' + s2, s4 >= 0, s4 <= z'' + s3, z' - 2 >= 0, z'' >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, z', z'', 1 + 0) :|: z' >= 0, z'' >= 0 towerIter(z', z'', z1, z2) -{ 3 + z'' }-> help(s', 1 + (z' - 1), 1 + (z'' - 1), z1, z2) :|: s' >= 0, s' <= 1, z' - 1 >= 0, z2 >= 0, z1 >= 0, z'' - 1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(1, z', 0, z1, z2) :|: z'' = 0, z2 >= 0, z' >= 0, z1 >= 0 towerIter(z', z'', z1, z2) -{ 2 }-> help(0, 0, 1 + (z'' - 1), z1, z2) :|: z2 >= 0, z1 >= 0, z'' - 1 >= 0, z' = 0 Function symbols to be analyzed: {exp}, {help,towerIter}, {tower} 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''] times: runtime: O(n^2) [4 + 4*z' + 2*z'*z'' + z''], size: O(n^2) [2*z'*z'' + z''] exp: runtime: INF, size: INF ---------------------------------------- (43) 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: none And the following fresh constants: none ---------------------------------------- (44) 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: plus(0, x) -> x [1] plus(s(x), y) -> s(plus(x, y)) [1] times(0, y) -> 0 [1] times(s(x), y) -> plus(y, times(x, y)) [1] exp(x, 0) -> s(0) [1] exp(x, s(y)) -> times(x, exp(x, y)) [1] ge(x, 0) -> true [1] ge(0, s(x)) -> false [1] ge(s(x), s(y)) -> ge(x, y) [1] tower(x, y) -> towerIter(0, x, y, s(0)) [1] towerIter(c, x, y, z) -> help(ge(c, x), c, x, y, z) [1] help(true, c, x, y, z) -> z [1] help(false, c, x, y, z) -> towerIter(s(c), x, y, exp(y, z)) [1] The TRS has the following type information: plus :: 0:s -> 0:s -> 0:s 0 :: 0:s s :: 0:s -> 0:s times :: 0:s -> 0:s -> 0:s exp :: 0:s -> 0:s -> 0:s ge :: 0:s -> 0:s -> true:false true :: true:false false :: true:false tower :: 0:s -> 0:s -> 0:s towerIter :: 0:s -> 0:s -> 0:s -> 0:s -> 0:s help :: true:false -> 0:s -> 0:s -> 0:s -> 0:s -> 0:s Rewrite Strategy: INNERMOST ---------------------------------------- (45) 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 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: exp(z', z'') -{ 1 }-> times(x, exp(x, y)) :|: z' = x, x >= 0, y >= 0, z'' = 1 + y exp(z', z'') -{ 1 }-> 1 + 0 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> ge(x, y) :|: z' = 1 + x, x >= 0, y >= 0, z'' = 1 + y ge(z', z'') -{ 1 }-> 1 :|: z'' = 0, z' = x, x >= 0 ge(z', z'') -{ 1 }-> 0 :|: x >= 0, z'' = 1 + x, z' = 0 help(z', z'', z1, z2, z3) -{ 1 }-> z :|: z2 = y, z >= 0, c >= 0, z3 = z, x >= 0, y >= 0, z' = 1, z'' = c, z1 = x help(z', z'', z1, z2, z3) -{ 1 }-> towerIter(1 + c, x, y, exp(y, z)) :|: z2 = y, z >= 0, c >= 0, z3 = z, x >= 0, y >= 0, z'' = c, z1 = x, z' = 0 plus(z', z'') -{ 1 }-> x :|: x >= 0, z'' = x, z' = 0 plus(z', z'') -{ 1 }-> 1 + plus(x, y) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 times(z', z'') -{ 1 }-> plus(y, times(x, y)) :|: z' = 1 + x, z'' = y, x >= 0, y >= 0 times(z', z'') -{ 1 }-> 0 :|: z'' = y, y >= 0, z' = 0 tower(z', z'') -{ 1 }-> towerIter(0, x, y, 1 + 0) :|: z' = x, z'' = y, x >= 0, y >= 0 towerIter(z', z'', z1, z2) -{ 1 }-> help(ge(c, x), c, x, y, z) :|: z1 = y, z >= 0, c >= 0, z2 = z, x >= 0, y >= 0, z'' = x, z' = c Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (47) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) tower(z0, z1) -> towerIter(0, z0, z1, s(0)) towerIter(z0, z1, z2, z3) -> help(ge(z0, z1), z0, z1, z2, z3) help(true, z0, z1, z2, z3) -> z3 help(false, z0, z1, z2, z3) -> towerIter(s(z0), z1, z2, exp(z2, z3)) Tuples: PLUS(0, z0) -> c PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(0, z0) -> c2 TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, 0) -> c4 EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(z0, 0) -> c6 GE(0, s(z0)) -> c7 GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWER(z0, z1) -> c9(TOWERITER(0, z0, z1, s(0))) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(true, z0, z1, z2, z3) -> c11 HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) S tuples: PLUS(0, z0) -> c PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(0, z0) -> c2 TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, 0) -> c4 EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(z0, 0) -> c6 GE(0, s(z0)) -> c7 GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWER(z0, z1) -> c9(TOWERITER(0, z0, z1, s(0))) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(true, z0, z1, z2, z3) -> c11 HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) K tuples:none Defined Rule Symbols: plus_2, times_2, exp_2, ge_2, tower_2, towerIter_4, help_5 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, TOWER_2, TOWERITER_4, HELP_5 Compound Symbols: c, c1_1, c2, c3_2, c4, c5_2, c6, c7, c8_1, c9_1, c10_2, c11, c12_2 ---------------------------------------- (49) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: TOWER(z0, z1) -> c9(TOWERITER(0, z0, z1, s(0))) Removed 6 trailing nodes: GE(z0, 0) -> c6 GE(0, s(z0)) -> c7 TIMES(0, z0) -> c2 HELP(true, z0, z1, z2, z3) -> c11 PLUS(0, z0) -> c EXP(z0, 0) -> c4 ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) tower(z0, z1) -> towerIter(0, z0, z1, s(0)) towerIter(z0, z1, z2, z3) -> help(ge(z0, z1), z0, z1, z2, z3) help(true, z0, z1, z2, z3) -> z3 help(false, z0, z1, z2, z3) -> towerIter(s(z0), z1, z2, exp(z2, z3)) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) K tuples:none Defined Rule Symbols: plus_2, times_2, exp_2, ge_2, tower_2, towerIter_4, help_5 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, TOWERITER_4, HELP_5 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c10_2, c12_2 ---------------------------------------- (51) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: tower(z0, z1) -> towerIter(0, z0, z1, s(0)) towerIter(z0, z1, z2, z3) -> help(ge(z0, z1), z0, z1, z2, z3) help(true, z0, z1, z2, z3) -> z3 help(false, z0, z1, z2, z3) -> towerIter(s(z0), z1, z2, exp(z2, z3)) ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) K tuples:none Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, TOWERITER_4, HELP_5 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c10_2, c12_2 ---------------------------------------- (53) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace TOWERITER(z0, z1, z2, z3) -> c10(HELP(ge(z0, z1), z0, z1, z2, z3), GE(z0, z1)) by TOWERITER(z0, 0, x2, x3) -> c10(HELP(true, z0, 0, x2, x3), GE(z0, 0)) TOWERITER(0, s(z0), x2, x3) -> c10(HELP(false, 0, s(z0), x2, x3), GE(0, s(z0))) TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(z0, 0, x2, x3) -> c10(HELP(true, z0, 0, x2, x3), GE(z0, 0)) TOWERITER(0, s(z0), x2, x3) -> c10(HELP(false, 0, s(z0), x2, x3), GE(0, s(z0))) TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(z0, 0, x2, x3) -> c10(HELP(true, z0, 0, x2, x3), GE(z0, 0)) TOWERITER(0, s(z0), x2, x3) -> c10(HELP(false, 0, s(z0), x2, x3), GE(0, s(z0))) TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c12_2, c10_2 ---------------------------------------- (55) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: TOWERITER(0, s(z0), x2, x3) -> c10(HELP(false, 0, s(z0), x2, x3), GE(0, s(z0))) Removed 1 trailing nodes: TOWERITER(z0, 0, x2, x3) -> c10(HELP(true, z0, 0, x2, x3), GE(z0, 0)) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) K tuples:none Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c12_2, c10_2 ---------------------------------------- (57) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace TOWERITER(s(z0), s(z1), x2, x3) -> c10(HELP(ge(z0, z1), s(z0), s(z1), x2, x3), GE(s(z0), s(z1))) by TOWERITER(s(z0), s(0), x2, x3) -> c10(HELP(true, s(z0), s(0), x2, x3), GE(s(z0), s(0))) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(z0), s(0), x2, x3) -> c10(HELP(true, s(z0), s(0), x2, x3), GE(s(z0), s(0))) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(z0), s(0), x2, x3) -> c10(HELP(true, s(z0), s(0), x2, x3), GE(s(z0), s(0))) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) K tuples:none Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c12_2, c10_2, c10_1 ---------------------------------------- (59) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) K tuples:none Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c12_2, c10_2, c10_1 ---------------------------------------- (61) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) 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: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(EXP(x_1, x_2)) = 0 POL(GE(x_1, x_2)) = 0 POL(HELP(x_1, x_2, x_3, x_4, x_5)) = [1] + x_1 + x_2 + x_3 + x_4 POL(PLUS(x_1, x_2)) = 0 POL(TIMES(x_1, x_2)) = 0 POL(TOWERITER(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 POL(c1(x_1)) = x_1 POL(c10(x_1)) = x_1 POL(c10(x_1, x_2)) = x_1 + x_2 POL(c12(x_1, x_2)) = x_1 + x_2 POL(c3(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2)) = x_1 + x_2 POL(c8(x_1)) = x_1 POL(exp(x_1, x_2)) = [1] + x_1 + x_2 POL(false) = 0 POL(ge(x_1, x_2)) = 0 POL(plus(x_1, x_2)) = x_2 POL(s(x_1)) = 0 POL(times(x_1, x_2)) = [1] POL(true) = 0 ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) S tuples: PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: PLUS_2, TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4 Compound Symbols: c1_1, c3_2, c5_2, c8_1, c12_2, c10_2, c10_1 ---------------------------------------- (63) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace PLUS(s(z0), z1) -> c1(PLUS(z0, z1)) by PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, HELP_5, TOWERITER_4, PLUS_2 Compound Symbols: c3_2, c5_2, c8_1, c12_2, c10_2, c10_1, c1_1 ---------------------------------------- (65) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(false, z0, z1, z2, z3) -> c12(TOWERITER(s(z0), z1, z2, exp(z2, z3)), EXP(z2, z3)) by HELP(false, s(0), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_2, c10_1, c1_1, c12_2 ---------------------------------------- (67) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 2 leading nodes: TOWERITER(s(0), s(s(z0)), x2, x3) -> c10(HELP(false, s(0), s(s(z0)), x2, x3), GE(s(0), s(s(z0)))) TOWERITER(s(z0), s(0), x2, x3) -> c10(GE(s(z0), s(0))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_2, c10_1, c1_1, c12_2 ---------------------------------------- (69) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(EXP(x1, x2)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(EXP(x1, x2)) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_2, c10_1, c1_1, c12_2, c_1 ---------------------------------------- (71) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: HELP(false, s(0), s(s(x0)), x1, x2) -> c(EXP(x1, x2)) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_2, c10_1, c1_1, c12_2, c_1 ---------------------------------------- (73) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) ---------------------------------------- (74) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_2, c10_1, c1_1, c12_2, c_1 ---------------------------------------- (75) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace TOWERITER(s(s(z0)), s(s(z1)), x2, x3) -> c10(HELP(ge(z0, z1), s(s(z0)), s(s(z1)), x2, x3), GE(s(s(z0)), s(s(z1)))) by TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0), GE(s(s(0)), s(s(x0)))) ---------------------------------------- (76) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0), GE(s(s(0)), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0), GE(s(s(0)), s(s(x0)))) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_1, c1_1, c12_2, c_1, c10_2 ---------------------------------------- (77) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (78) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_1, c1_1, c12_2, c_1, c10_2, c2_1 ---------------------------------------- (79) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) ---------------------------------------- (80) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) K tuples: TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, TOWERITER_4, PLUS_2, HELP_5 Compound Symbols: c3_2, c5_2, c8_1, c10_1, c1_1, c12_2, c_1, c10_2, c2_1 ---------------------------------------- (81) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace TOWERITER(s(x0), s(x1), x2, x3) -> c10(GE(s(x0), s(x1))) by TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) ---------------------------------------- (82) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c12_2, c_1, c10_2, c2_1, c10_1 ---------------------------------------- (83) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace HELP(false, s(s(x0)), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(x0))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) by HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) ---------------------------------------- (84) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c12(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2)), EXP(x1, x2)) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c10_2, c2_1, c10_1, c12_2 ---------------------------------------- (85) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (86) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c10_2, c2_1, c10_1, c12_2, c4_1 ---------------------------------------- (87) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) ---------------------------------------- (88) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c10_2, c2_1, c10_1, c12_2, c4_1 ---------------------------------------- (89) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(x0), x1), s(s(s(x0))), s(s(x1)), x2, y0), GE(s(s(s(x0))), s(s(x1)))) by TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0), GE(s(s(s(0))), s(s(x0)))) ---------------------------------------- (90) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0), GE(s(s(s(0))), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0), GE(s(s(s(0))), s(s(x0)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c2_1, c10_1, c12_2, c4_1, c10_2 ---------------------------------------- (91) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (92) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1 ---------------------------------------- (93) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) ---------------------------------------- (94) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1 ---------------------------------------- (95) CdtInstantiationProof (BOTH BOUNDS(ID, ID)) Use instantiation to replace TOWERITER(s(s(s(x0))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(x0))), s(s(x1)))) by TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) ---------------------------------------- (96) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) GE(s(z0), s(z1)) -> c8(GE(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, GE_2, PLUS_2, HELP_5, TOWERITER_4 Compound Symbols: c3_2, c5_2, c8_1, c1_1, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1 ---------------------------------------- (97) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(z0), s(z1)) -> c8(GE(z0, z1)) by GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) ---------------------------------------- (98) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, PLUS_2, HELP_5, TOWERITER_4, GE_2 Compound Symbols: c3_2, c5_2, c1_1, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1, c8_1 ---------------------------------------- (99) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace PLUS(s(s(y0)), z1) -> c1(PLUS(s(y0), z1)) by PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) ---------------------------------------- (100) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, GE_2, PLUS_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1, c8_1, c1_1 ---------------------------------------- (101) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(EXP(x1, x2)) by HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) ---------------------------------------- (102) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, GE_2, PLUS_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1, c8_1, c1_1 ---------------------------------------- (103) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace GE(s(s(y0)), s(s(y1))) -> c8(GE(s(y0), s(y1))) by GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) ---------------------------------------- (104) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, PLUS_2, GE_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c10_1, c12_2, c4_1, c10_2, c6_1, c1_1, c8_1 ---------------------------------------- (105) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(GE(s(s(0)), s(s(x0)))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c10(GE(s(s(0)), s(s(x0)))) ---------------------------------------- (106) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, PLUS_2, GE_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c12_2, c4_1, c10_2, c6_1, c10_1, c1_1, c8_1 ---------------------------------------- (107) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(GE(s(s(s(0))), s(s(x0)))) by TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) ---------------------------------------- (108) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, PLUS_2, GE_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c12_2, c4_1, c10_2, c6_1, c10_1, c1_1, c8_1 ---------------------------------------- (109) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(GE(s(s(s(s(x0)))), s(s(x1)))) by TOWERITER(s(s(s(s(z0)))), s(s(s(y1))), z2, z3) -> c10(GE(s(s(s(s(z0)))), s(s(s(y1))))) ---------------------------------------- (110) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) TOWERITER(s(s(s(s(z0)))), s(s(s(y1))), z2, z3) -> c10(GE(s(s(s(s(z0)))), s(s(s(y1))))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) TOWERITER(s(s(s(s(z0)))), s(s(s(y1))), z2, z3) -> c10(GE(s(s(s(s(z0)))), s(s(s(y1))))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, PLUS_2, GE_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c12_2, c4_1, c10_2, c6_1, c10_1, c1_1, c8_1 ---------------------------------------- (111) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c10(GE(s(s(s(0))), s(s(x0)))) by TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c10(GE(s(s(s(0))), s(s(s(y1))))) ---------------------------------------- (112) Obligation: Complexity Dependency Tuples Problem Rules: times(0, z0) -> 0 times(s(z0), z1) -> plus(z1, times(z0, z1)) plus(0, z0) -> z0 plus(s(z0), z1) -> s(plus(z0, z1)) exp(z0, 0) -> s(0) exp(z0, s(z1)) -> times(z0, exp(z0, z1)) ge(z0, 0) -> true ge(0, s(z0)) -> false ge(s(z0), s(z1)) -> ge(z0, z1) Tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) TOWERITER(s(s(s(s(z0)))), s(s(s(y1))), z2, z3) -> c10(GE(s(s(s(s(z0)))), s(s(s(y1))))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c10(GE(s(s(s(0))), s(s(s(y1))))) S tuples: TIMES(s(z0), z1) -> c3(PLUS(z1, times(z0, z1)), TIMES(z0, z1)) EXP(z0, s(z1)) -> c5(TIMES(z0, exp(z0, z1)), EXP(z0, z1)) HELP(false, s(s(s(x0))), s(s(x1)), x2, x3) -> c12(TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, exp(x2, x3)), EXP(x2, x3)) TOWERITER(s(s(s(s(x0)))), s(s(x1)), x2, y0) -> c10(HELP(ge(s(s(x0)), x1), s(s(s(s(x0)))), s(s(x1)), x2, y0), GE(s(s(s(s(x0)))), s(s(x1)))) PLUS(s(s(s(y0))), z1) -> c1(PLUS(s(s(y0)), z1)) GE(s(s(s(y0))), s(s(s(y1)))) -> c8(GE(s(s(y0)), s(s(y1)))) K tuples: HELP(false, s(0), s(s(x0)), x1, x2) -> c(TOWERITER(s(s(0)), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(0)), s(s(x0)), x1, y0) -> c2(HELP(ge(0, x0), s(s(0)), s(s(x0)), x1, y0)) HELP(false, s(s(0)), s(s(x0)), x1, x2) -> c4(TOWERITER(s(s(s(0))), s(s(x0)), x1, exp(x1, x2))) TOWERITER(s(s(s(0))), s(s(x0)), x1, y0) -> c6(HELP(ge(s(0), x0), s(s(s(0))), s(s(x0)), x1, y0)) HELP(false, s(s(0)), s(s(z0)), z1, s(y1)) -> c4(EXP(z1, s(y1))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c6(GE(s(s(s(0))), s(s(s(y1))))) TOWERITER(s(s(s(s(z0)))), s(s(s(y1))), z2, z3) -> c10(GE(s(s(s(s(z0)))), s(s(s(y1))))) TOWERITER(s(s(s(0))), s(s(s(y1))), z1, z2) -> c10(GE(s(s(s(0))), s(s(s(y1))))) Defined Rule Symbols: times_2, plus_2, exp_2, ge_2 Defined Pair Symbols: TIMES_2, EXP_2, HELP_5, TOWERITER_4, PLUS_2, GE_2 Compound Symbols: c3_2, c5_2, c_1, c2_1, c12_2, c4_1, c10_2, c6_1, c1_1, c8_1, c10_1