MAYBE proof of input_6VDEoh4Rc4.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) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (12) CpxRNTS (13) CompletionProof [UPPER BOUND(ID), 0 ms] (14) CpxTypedWeightedCompleteTrs (15) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CpxTypedWeightedCompleteTrs (17) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (18) CpxRNTS (19) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRNTS (21) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (22) CdtProblem (23) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CdtProblem (25) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CdtProblem (27) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (28) CdtProblem (29) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (30) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) [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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) [1] The TRS has the following type information: g :: f -> f f :: f -> f -> f Rewrite Strategy: INNERMOST ---------------------------------------- (9) 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: g(v0) -> null_g [0] And the following fresh constants: null_g ---------------------------------------- (10) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) [1] g(v0) -> null_g [0] The TRS has the following type information: g :: f:null_g -> f:null_g f :: f:null_g -> f:null_g -> f:null_g null_g :: f:null_g Rewrite Strategy: INNERMOST ---------------------------------------- (11) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: null_g => 0 ---------------------------------------- (12) Obligation: Complexity RNTS consisting of the following rules: g(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 g(z) -{ 1 }-> 1 + (1 + g(g(x)) + g(g(y))) + (1 + g(g(x)) + g(g(y))) :|: z = 1 + x + y, x >= 0, y >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (13) 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: none (c) The following functions are completely defined: g_1 Due to the following rules being added: g(v0) -> const [0] And the following fresh constants: const ---------------------------------------- (14) 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: g(f(x, y)) -> f(f(g(g(x)), g(g(y))), f(g(g(x)), g(g(y)))) [1] g(v0) -> const [0] The TRS has the following type information: g :: f:const -> f:const f :: f:const -> f:const -> f:const const :: f:const Rewrite Strategy: INNERMOST ---------------------------------------- (15) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (16) Obligation: Runtime Complexity Weighted TRS where critical functions are completely defined. The underlying TRS is: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: g(f(f(x', y'), f(x'', y''))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y'')))))), f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y''))))))) [5] g(f(f(x', y'), f(x'', y''))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y'')))))), f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const))) [4] g(f(f(x', y'), f(x'', y''))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y'')))))), f(g(const), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y''))))))) [4] g(f(f(x', y'), f(x'', y''))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x'')), g(g(y''))), f(g(g(x'')), g(g(y'')))))), f(g(const), g(const))) [3] g(f(f(x', y'), f(x4, y4))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const)), f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(f(f(g(g(x4)), g(g(y4))), f(g(g(x4)), g(g(y4))))))) [4] g(f(f(x', y'), y)) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const)), f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const))) [3] g(f(f(x', y'), f(x5, y5))) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const)), f(g(const), g(f(f(g(g(x5)), g(g(y5))), f(g(g(x5)), g(g(y5))))))) [3] g(f(f(x', y'), y)) -> f(f(g(f(f(g(g(x')), g(g(y'))), f(g(g(x')), g(g(y'))))), g(const)), f(g(const), g(const))) [2] g(f(f(x2, y2), f(x1, y1))) -> f(f(g(const), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1)))))), f(g(f(f(g(g(x2)), g(g(y2))), f(g(g(x2)), g(g(y2))))), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1))))))) [4] g(f(f(x2, y2), f(x1, y1))) -> f(f(g(const), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1)))))), f(g(f(f(g(g(x2)), g(g(y2))), f(g(g(x2)), g(g(y2))))), g(const))) [3] g(f(x, f(x1, y1))) -> f(f(g(const), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1)))))), f(g(const), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1))))))) [3] g(f(x, f(x1, y1))) -> f(f(g(const), g(f(f(g(g(x1)), g(g(y1))), f(g(g(x1)), g(g(y1)))))), f(g(const), g(const))) [2] g(f(f(x3, y3), f(x6, y6))) -> f(f(g(const), g(const)), f(g(f(f(g(g(x3)), g(g(y3))), f(g(g(x3)), g(g(y3))))), g(f(f(g(g(x6)), g(g(y6))), f(g(g(x6)), g(g(y6))))))) [3] g(f(f(x3, y3), y)) -> f(f(g(const), g(const)), f(g(f(f(g(g(x3)), g(g(y3))), f(g(g(x3)), g(g(y3))))), g(const))) [2] g(f(x, f(x7, y7))) -> f(f(g(const), g(const)), f(g(const), g(f(f(g(g(x7)), g(g(y7))), f(g(g(x7)), g(g(y7))))))) [2] g(f(x, y)) -> f(f(g(const), g(const)), f(g(const), g(const))) [1] g(v0) -> const [0] The TRS has the following type information: g :: f:const -> f:const f :: f:const -> f:const -> f:const const :: f:const Rewrite Strategy: INNERMOST ---------------------------------------- (17) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const => 0 ---------------------------------------- (18) Obligation: Complexity RNTS consisting of the following rules: g(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 g(z) -{ 1 }-> 1 + (1 + g(0) + g(0)) + (1 + g(0) + g(0)) :|: z = 1 + x + y, x >= 0, y >= 0 g(z) -{ 2 }-> 1 + (1 + g(0) + g(0)) + (1 + g(0) + g(1 + (1 + g(g(x7)) + g(g(y7))) + (1 + g(g(x7)) + g(g(y7))))) :|: x7 >= 0, x >= 0, y7 >= 0, z = 1 + x + (1 + x7 + y7) g(z) -{ 2 }-> 1 + (1 + g(0) + g(0)) + (1 + g(1 + (1 + g(g(x3)) + g(g(y3))) + (1 + g(g(x3)) + g(g(y3)))) + g(0)) :|: y >= 0, y3 >= 0, x3 >= 0, z = 1 + (1 + x3 + y3) + y g(z) -{ 3 }-> 1 + (1 + g(0) + g(0)) + (1 + g(1 + (1 + g(g(x3)) + g(g(y3))) + (1 + g(g(x3)) + g(g(y3)))) + g(1 + (1 + g(g(x6)) + g(g(y6))) + (1 + g(g(x6)) + g(g(y6))))) :|: x6 >= 0, y6 >= 0, y3 >= 0, x3 >= 0, z = 1 + (1 + x3 + y3) + (1 + x6 + y6) g(z) -{ 2 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(0) + g(0)) :|: y1 >= 0, x1 >= 0, x >= 0, z = 1 + x + (1 + x1 + y1) g(z) -{ 3 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) :|: y1 >= 0, x1 >= 0, x >= 0, z = 1 + x + (1 + x1 + y1) g(z) -{ 3 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(1 + (1 + g(g(x2)) + g(g(y2))) + (1 + g(g(x2)) + g(g(y2)))) + g(0)) :|: y1 >= 0, z = 1 + (1 + x2 + y2) + (1 + x1 + y1), x1 >= 0, y2 >= 0, x2 >= 0 g(z) -{ 4 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(1 + (1 + g(g(x2)) + g(g(y2))) + (1 + g(g(x2)) + g(g(y2)))) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) :|: y1 >= 0, z = 1 + (1 + x2 + y2) + (1 + x1 + y1), x1 >= 0, y2 >= 0, x2 >= 0 g(z) -{ 2 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(0) + g(0)) :|: x' >= 0, y >= 0, y' >= 0, z = 1 + (1 + x' + y') + y g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(0) + g(1 + (1 + g(g(x5)) + g(g(y5))) + (1 + g(g(x5)) + g(g(y5))))) :|: y5 >= 0, x5 >= 0, x' >= 0, z = 1 + (1 + x' + y') + (1 + x5 + y5), y' >= 0 g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) :|: x' >= 0, y >= 0, y' >= 0, z = 1 + (1 + x' + y') + y g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x4)) + g(g(y4))) + (1 + g(g(x4)) + g(g(y4))))) :|: x4 >= 0, z = 1 + (1 + x' + y') + (1 + x4 + y4), x' >= 0, y' >= 0, y4 >= 0 g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(0) + g(0)) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(0) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 5 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 ---------------------------------------- (19) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (20) Obligation: Complexity RNTS consisting of the following rules: g(z) -{ 0 }-> 0 :|: z >= 0 g(z) -{ 1 }-> 1 + (1 + g(0) + g(0)) + (1 + g(0) + g(0)) :|: z = 1 + x + y, x >= 0, y >= 0 g(z) -{ 2 }-> 1 + (1 + g(0) + g(0)) + (1 + g(0) + g(1 + (1 + g(g(x7)) + g(g(y7))) + (1 + g(g(x7)) + g(g(y7))))) :|: x7 >= 0, x >= 0, y7 >= 0, z = 1 + x + (1 + x7 + y7) g(z) -{ 2 }-> 1 + (1 + g(0) + g(0)) + (1 + g(1 + (1 + g(g(x3)) + g(g(y3))) + (1 + g(g(x3)) + g(g(y3)))) + g(0)) :|: y >= 0, y3 >= 0, x3 >= 0, z = 1 + (1 + x3 + y3) + y g(z) -{ 3 }-> 1 + (1 + g(0) + g(0)) + (1 + g(1 + (1 + g(g(x3)) + g(g(y3))) + (1 + g(g(x3)) + g(g(y3)))) + g(1 + (1 + g(g(x6)) + g(g(y6))) + (1 + g(g(x6)) + g(g(y6))))) :|: x6 >= 0, y6 >= 0, y3 >= 0, x3 >= 0, z = 1 + (1 + x3 + y3) + (1 + x6 + y6) g(z) -{ 2 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(0) + g(0)) :|: y1 >= 0, x1 >= 0, x >= 0, z = 1 + x + (1 + x1 + y1) g(z) -{ 3 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) :|: y1 >= 0, x1 >= 0, x >= 0, z = 1 + x + (1 + x1 + y1) g(z) -{ 3 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(1 + (1 + g(g(x2)) + g(g(y2))) + (1 + g(g(x2)) + g(g(y2)))) + g(0)) :|: y1 >= 0, z = 1 + (1 + x2 + y2) + (1 + x1 + y1), x1 >= 0, y2 >= 0, x2 >= 0 g(z) -{ 4 }-> 1 + (1 + g(0) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) + (1 + g(1 + (1 + g(g(x2)) + g(g(y2))) + (1 + g(g(x2)) + g(g(y2)))) + g(1 + (1 + g(g(x1)) + g(g(y1))) + (1 + g(g(x1)) + g(g(y1))))) :|: y1 >= 0, z = 1 + (1 + x2 + y2) + (1 + x1 + y1), x1 >= 0, y2 >= 0, x2 >= 0 g(z) -{ 2 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(0) + g(0)) :|: x' >= 0, y >= 0, y' >= 0, z = 1 + (1 + x' + y') + y g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(0) + g(1 + (1 + g(g(x5)) + g(g(y5))) + (1 + g(g(x5)) + g(g(y5))))) :|: y5 >= 0, x5 >= 0, x' >= 0, z = 1 + (1 + x' + y') + (1 + x5 + y5), y' >= 0 g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) :|: x' >= 0, y >= 0, y' >= 0, z = 1 + (1 + x' + y') + y g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x4)) + g(g(y4))) + (1 + g(g(x4)) + g(g(y4))))) :|: x4 >= 0, z = 1 + (1 + x' + y') + (1 + x4 + y4), x' >= 0, y' >= 0, y4 >= 0 g(z) -{ 3 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(0) + g(0)) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(0) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 4 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(0)) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 g(z) -{ 5 }-> 1 + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) + (1 + g(1 + (1 + g(g(x')) + g(g(y'))) + (1 + g(g(x')) + g(g(y')))) + g(1 + (1 + g(g(x'')) + g(g(y''))) + (1 + g(g(x'')) + g(g(y''))))) :|: x' >= 0, y' >= 0, y'' >= 0, z = 1 + (1 + x' + y') + (1 + x'' + y''), x'' >= 0 ---------------------------------------- (21) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: g(f(z0, z1)) -> f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1)))) Tuples: G(f(z0, z1)) -> c(G(g(z0)), G(z0)) G(f(z0, z1)) -> c1(G(g(z1)), G(z1)) G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) S tuples: G(f(z0, z1)) -> c(G(g(z0)), G(z0)) G(f(z0, z1)) -> c1(G(g(z1)), G(z1)) G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) K tuples:none Defined Rule Symbols: g_1 Defined Pair Symbols: G_1 Compound Symbols: c_2, c1_2, c2_2, c3_2 ---------------------------------------- (23) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(f(z0, z1)) -> c(G(g(z0)), G(z0)) by G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: g(f(z0, z1)) -> f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1)))) Tuples: G(f(z0, z1)) -> c1(G(g(z1)), G(z1)) G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) S tuples: G(f(z0, z1)) -> c1(G(g(z1)), G(z1)) G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) K tuples:none Defined Rule Symbols: g_1 Defined Pair Symbols: G_1 Compound Symbols: c1_2, c2_2, c3_2, c_2 ---------------------------------------- (25) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(f(z0, z1)) -> c1(G(g(z1)), G(z1)) by G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) ---------------------------------------- (26) Obligation: Complexity Dependency Tuples Problem Rules: g(f(z0, z1)) -> f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1)))) Tuples: G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) S tuples: G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) K tuples:none Defined Rule Symbols: g_1 Defined Pair Symbols: G_1 Compound Symbols: c2_2, c3_2, c_2, c1_2 ---------------------------------------- (27) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(f(z0, z1)) -> c2(G(g(z0)), G(z0)) by G(f(f(z0, z1), x1)) -> c2(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) ---------------------------------------- (28) Obligation: Complexity Dependency Tuples Problem Rules: g(f(z0, z1)) -> f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1)))) Tuples: G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(f(z0, z1), x1)) -> c2(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) S tuples: G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(f(z0, z1), x1)) -> c2(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) K tuples:none Defined Rule Symbols: g_1 Defined Pair Symbols: G_1 Compound Symbols: c3_2, c_2, c1_2, c2_2 ---------------------------------------- (29) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(f(z0, z1)) -> c3(G(g(z1)), G(z1)) by G(f(x0, f(z0, z1))) -> c3(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) ---------------------------------------- (30) Obligation: Complexity Dependency Tuples Problem Rules: g(f(z0, z1)) -> f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1)))) Tuples: G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(f(z0, z1), x1)) -> c2(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c3(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) S tuples: G(f(f(z0, z1), x1)) -> c(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c1(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(f(z0, z1), x1)) -> c2(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) G(f(x0, f(z0, z1))) -> c3(G(f(f(g(g(z0)), g(g(z1))), f(g(g(z0)), g(g(z1))))), G(f(z0, z1))) K tuples:none Defined Rule Symbols: g_1 Defined Pair Symbols: G_1 Compound Symbols: c_2, c1_2, c2_2, c3_2