KILLED proof of input_nVAD9VvYjs.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) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (8) TRS for Loop Detection (9) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxRelTRS (11) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (12) typed CpxTrs (13) OrderProof [LOWER BOUND(ID), 0 ms] (14) typed CpxTrs (15) RewriteLemmaProof [LOWER BOUND(ID), 472 ms] (16) typed CpxTrs (17) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (18) CpxTRS (19) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (20) CpxWeightedTrs (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CpxTypedWeightedTrs (23) CompletionProof [UPPER BOUND(ID), 0 ms] (24) CpxTypedWeightedCompleteTrs (25) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxTypedWeightedCompleteTrs (27) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (28) CpxRNTS (29) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxRNTS (31) CompletionProof [UPPER BOUND(ID), 0 ms] (32) CpxTypedWeightedCompleteTrs (33) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (34) CpxRNTS (35) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (36) CdtProblem (37) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CdtProblem (39) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CpxRelTRS (41) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (42) CpxTRS (43) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (44) CpxWeightedTrs (45) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CpxTypedWeightedTrs (47) CompletionProof [UPPER BOUND(ID), 0 ms] (48) CpxTypedWeightedCompleteTrs (49) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CpxTypedWeightedCompleteTrs (51) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (52) CpxRNTS (53) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CpxRNTS (55) CompletionProof [UPPER BOUND(ID), 0 ms] (56) CpxTypedWeightedCompleteTrs (57) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (58) CpxRNTS (59) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CdtProblem (63) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (70) CdtProblem (71) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (72) 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: f(g(X)) -> g(f(f(X))) f(h(X)) -> h(g(X)) 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: f(g(X)) -> g(f(f(X))) f(h(X)) -> h(g(X)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 S tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2, c1 ---------------------------------------- (5) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (6) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 The (relative) TRS S consists of the following rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (8) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 The (relative) TRS S consists of the following rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (9) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 The (relative) TRS S consists of the following rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Types: F :: g:h -> c:c1 g :: g:h -> g:h c :: c:c1 -> c:c1 -> c:c1 f :: g:h -> g:h h :: g:h -> g:h c1 :: c:c1 hole_c:c11_2 :: c:c1 hole_g:h2_2 :: g:h gen_c:c13_2 :: Nat -> c:c1 gen_g:h4_2 :: Nat -> g:h ---------------------------------------- (13) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: F, f They will be analysed ascendingly in the following order: f < F ---------------------------------------- (14) Obligation: Innermost TRS: Rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Types: F :: g:h -> c:c1 g :: g:h -> g:h c :: c:c1 -> c:c1 -> c:c1 f :: g:h -> g:h h :: g:h -> g:h c1 :: c:c1 hole_c:c11_2 :: c:c1 hole_g:h2_2 :: g:h gen_c:c13_2 :: Nat -> c:c1 gen_g:h4_2 :: Nat -> g:h Generator Equations: gen_c:c13_2(0) <=> c1 gen_c:c13_2(+(x, 1)) <=> c(c1, gen_c:c13_2(x)) gen_g:h4_2(0) <=> hole_g:h2_2 gen_g:h4_2(+(x, 1)) <=> g(gen_g:h4_2(x)) The following defined symbols remain to be analysed: f, F They will be analysed ascendingly in the following order: f < F ---------------------------------------- (15) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: f(gen_g:h4_2(+(1, n6_2))) -> *5_2, rt in Omega(0) Induction Base: f(gen_g:h4_2(+(1, 0))) Induction Step: f(gen_g:h4_2(+(1, +(n6_2, 1)))) ->_R^Omega(0) g(f(f(gen_g:h4_2(+(1, n6_2))))) ->_IH g(f(*5_2)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (16) Obligation: Innermost TRS: Rules: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Types: F :: g:h -> c:c1 g :: g:h -> g:h c :: c:c1 -> c:c1 -> c:c1 f :: g:h -> g:h h :: g:h -> g:h c1 :: c:c1 hole_c:c11_2 :: c:c1 hole_g:h2_2 :: g:h gen_c:c13_2 :: Nat -> c:c1 gen_g:h4_2 :: Nat -> g:h Lemmas: f(gen_g:h4_2(+(1, n6_2))) -> *5_2, rt in Omega(0) Generator Equations: gen_c:c13_2(0) <=> c1 gen_c:c13_2(+(x, 1)) <=> c(c1, gen_c:c13_2(x)) gen_g:h4_2(0) <=> hole_g:h2_2 gen_g:h4_2(+(x, 1)) <=> g(gen_g:h4_2(x)) The following defined symbols remain to be analysed: F ---------------------------------------- (17) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (18) 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: f(g(X)) -> g(f(f(X))) f(h(X)) -> h(g(X)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (19) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (20) 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: f(g(X)) -> g(f(f(X))) [1] f(h(X)) -> h(g(X)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (22) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: f(g(X)) -> g(f(f(X))) [1] f(h(X)) -> h(g(X)) [1] The TRS has the following type information: f :: g:h -> g:h g :: g:h -> g:h h :: g:h -> g:h Rewrite Strategy: INNERMOST ---------------------------------------- (23) 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: f_1 Due to the following rules being added: f(v0) -> const [0] And the following fresh constants: const ---------------------------------------- (24) 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: f(g(X)) -> g(f(f(X))) [1] f(h(X)) -> h(g(X)) [1] f(v0) -> const [0] The TRS has the following type information: f :: g:h:const -> g:h:const g :: g:h:const -> g:h:const h :: g:h:const -> g:h:const const :: g:h:const Rewrite Strategy: INNERMOST ---------------------------------------- (25) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (26) 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: f(g(g(X'))) -> g(f(g(f(f(X'))))) [2] f(g(h(X''))) -> g(f(h(g(X'')))) [2] f(g(X)) -> g(f(const)) [1] f(h(X)) -> h(g(X)) [1] f(v0) -> const [0] The TRS has the following type information: f :: g:h:const -> g:h:const g :: g:h:const -> g:h:const h :: g:h:const -> g:h:const const :: g:h:const Rewrite Strategy: INNERMOST ---------------------------------------- (27) 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 ---------------------------------------- (28) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 f(z) -{ 1 }-> 1 + f(0) :|: z = 1 + X, X >= 0 f(z) -{ 2 }-> 1 + f(1 + f(f(X'))) :|: X' >= 0, z = 1 + (1 + X') f(z) -{ 2 }-> 1 + f(1 + (1 + X'')) :|: z = 1 + (1 + X''), X'' >= 0 f(z) -{ 1 }-> 1 + (1 + X) :|: z = 1 + X, X >= 0 ---------------------------------------- (29) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 0 }-> 0 :|: z >= 0 f(z) -{ 1 }-> 1 + f(0) :|: z - 1 >= 0 f(z) -{ 2 }-> 1 + f(1 + f(f(z - 2))) :|: z - 2 >= 0 f(z) -{ 2 }-> 1 + f(1 + (1 + (z - 2))) :|: z - 2 >= 0 f(z) -{ 1 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 ---------------------------------------- (31) 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: f(v0) -> null_f [0] And the following fresh constants: null_f ---------------------------------------- (32) 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: f(g(X)) -> g(f(f(X))) [1] f(h(X)) -> h(g(X)) [1] f(v0) -> null_f [0] The TRS has the following type information: f :: g:h:null_f -> g:h:null_f g :: g:h:null_f -> g:h:null_f h :: g:h:null_f -> g:h:null_f null_f :: g:h:null_f Rewrite Strategy: INNERMOST ---------------------------------------- (33) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: null_f => 0 ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 f(z) -{ 1 }-> 1 + f(f(X)) :|: z = 1 + X, X >= 0 f(z) -{ 1 }-> 1 + (1 + X) :|: z = 1 + X, X >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (35) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (36) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 S tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) F(h(z0)) -> c1 K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2, c1 ---------------------------------------- (37) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(h(z0)) -> c1 ---------------------------------------- (38) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) S tuples: F(g(z0)) -> c(F(f(z0)), F(z0)) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2 ---------------------------------------- (39) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (40) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) The (relative) TRS S consists of the following rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (41) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (42) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (43) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (44) 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: F(g(z0)) -> c(F(f(z0)), F(z0)) [1] f(g(z0)) -> g(f(f(z0))) [0] f(h(z0)) -> h(g(z0)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (45) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (46) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: F(g(z0)) -> c(F(f(z0)), F(z0)) [1] f(g(z0)) -> g(f(f(z0))) [0] f(h(z0)) -> h(g(z0)) [0] The TRS has the following type information: F :: g:h -> c g :: g:h -> g:h c :: c -> c -> c f :: g:h -> g:h h :: g:h -> g:h Rewrite Strategy: INNERMOST ---------------------------------------- (47) 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: F_1 (c) The following functions are completely defined: f_1 Due to the following rules being added: f(v0) -> const1 [0] And the following fresh constants: const1, const ---------------------------------------- (48) 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: F(g(z0)) -> c(F(f(z0)), F(z0)) [1] f(g(z0)) -> g(f(f(z0))) [0] f(h(z0)) -> h(g(z0)) [0] f(v0) -> const1 [0] The TRS has the following type information: F :: g:h:const1 -> c g :: g:h:const1 -> g:h:const1 c :: c -> c -> c f :: g:h:const1 -> g:h:const1 h :: g:h:const1 -> g:h:const1 const1 :: g:h:const1 const :: c Rewrite Strategy: INNERMOST ---------------------------------------- (49) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (50) 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: F(g(g(z0'))) -> c(F(g(f(f(z0')))), F(g(z0'))) [1] F(g(h(z0''))) -> c(F(h(g(z0''))), F(h(z0''))) [1] F(g(z0)) -> c(F(const1), F(z0)) [1] f(g(g(z01))) -> g(f(g(f(f(z01))))) [0] f(g(h(z02))) -> g(f(h(g(z02)))) [0] f(g(z0)) -> g(f(const1)) [0] f(h(z0)) -> h(g(z0)) [0] f(v0) -> const1 [0] The TRS has the following type information: F :: g:h:const1 -> c g :: g:h:const1 -> g:h:const1 c :: c -> c -> c f :: g:h:const1 -> g:h:const1 h :: g:h:const1 -> g:h:const1 const1 :: g:h:const1 const :: c Rewrite Strategy: INNERMOST ---------------------------------------- (51) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const1 => 0 const => 0 ---------------------------------------- (52) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + F(0) + F(z0) :|: z = 1 + z0, z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + f(f(z0'))) + F(1 + z0') :|: z = 1 + (1 + z0'), z0' >= 0 F(z) -{ 1 }-> 1 + F(1 + (1 + z0'')) + F(1 + z0'') :|: z = 1 + (1 + z0''), z0'' >= 0 f(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 f(z) -{ 0 }-> 1 + f(0) :|: z = 1 + z0, z0 >= 0 f(z) -{ 0 }-> 1 + f(1 + f(f(z01))) :|: z = 1 + (1 + z01), z01 >= 0 f(z) -{ 0 }-> 1 + f(1 + (1 + z02)) :|: z = 1 + (1 + z02), z02 >= 0 f(z) -{ 0 }-> 1 + (1 + z0) :|: z = 1 + z0, z0 >= 0 ---------------------------------------- (53) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (54) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + F(0) + F(z - 1) :|: z - 1 >= 0 F(z) -{ 1 }-> 1 + F(1 + f(f(z - 2))) + F(1 + (z - 2)) :|: z - 2 >= 0 F(z) -{ 1 }-> 1 + F(1 + (1 + (z - 2))) + F(1 + (z - 2)) :|: z - 2 >= 0 f(z) -{ 0 }-> 0 :|: z >= 0 f(z) -{ 0 }-> 1 + f(0) :|: z - 1 >= 0 f(z) -{ 0 }-> 1 + f(1 + f(f(z - 2))) :|: z - 2 >= 0 f(z) -{ 0 }-> 1 + f(1 + (1 + (z - 2))) :|: z - 2 >= 0 f(z) -{ 0 }-> 1 + (1 + (z - 1)) :|: z - 1 >= 0 ---------------------------------------- (55) 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: f(v0) -> null_f [0] F(v0) -> null_F [0] And the following fresh constants: null_f, null_F ---------------------------------------- (56) 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: F(g(z0)) -> c(F(f(z0)), F(z0)) [1] f(g(z0)) -> g(f(f(z0))) [0] f(h(z0)) -> h(g(z0)) [0] f(v0) -> null_f [0] F(v0) -> null_F [0] The TRS has the following type information: F :: g:h:null_f -> c:null_F g :: g:h:null_f -> g:h:null_f c :: c:null_F -> c:null_F -> c:null_F f :: g:h:null_f -> g:h:null_f h :: g:h:null_f -> g:h:null_f null_f :: g:h:null_f null_F :: c:null_F Rewrite Strategy: INNERMOST ---------------------------------------- (57) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: null_f => 0 null_F => 0 ---------------------------------------- (58) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 F(z) -{ 1 }-> 1 + F(f(z0)) + F(z0) :|: z = 1 + z0, z0 >= 0 f(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 f(z) -{ 0 }-> 1 + f(f(z0)) :|: z = 1 + z0, z0 >= 0 f(z) -{ 0 }-> 1 + (1 + z0) :|: z = 1 + z0, z0 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (59) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(g(z0)) -> c(F(f(z0)), F(z0)) by F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) F(g(h(z0))) -> c(F(h(g(z0))), F(h(z0))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) F(g(h(z0))) -> c(F(h(g(z0))), F(h(z0))) S tuples: F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) F(g(h(z0))) -> c(F(h(g(z0))), F(h(z0))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2 ---------------------------------------- (61) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(g(h(z0))) -> c(F(h(g(z0))), F(h(z0))) ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) S tuples: F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2 ---------------------------------------- (63) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(g(g(z0))) -> c(F(g(f(f(z0)))), F(g(z0))) by F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(z0)))) -> c(F(g(f(h(g(z0))))), F(g(h(z0)))) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(z0)))) -> c(F(g(f(h(g(z0))))), F(g(h(z0)))) S tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(z0)))) -> c(F(g(f(h(g(z0))))), F(g(h(z0)))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2 ---------------------------------------- (65) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(z0)))) -> c(F(g(f(h(g(z0)))))) S tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(z0)))) -> c(F(g(f(h(g(z0)))))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2, c_1 ---------------------------------------- (67) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(g(g(h(z0)))) -> c(F(g(f(h(g(z0)))))) by F(g(g(h(x0)))) -> c(F(g(h(g(g(x0)))))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(x0)))) -> c(F(g(h(g(g(x0)))))) S tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) F(g(g(h(x0)))) -> c(F(g(h(g(g(x0)))))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2, c_1 ---------------------------------------- (69) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing nodes: F(g(g(h(x0)))) -> c(F(g(h(g(g(x0)))))) ---------------------------------------- (70) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) S tuples: F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2 ---------------------------------------- (71) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(g(g(g(z0)))) -> c(F(g(f(g(f(f(z0)))))), F(g(g(z0)))) by F(g(g(g(z0)))) -> c(F(g(g(f(f(f(f(z0))))))), F(g(g(z0)))) ---------------------------------------- (72) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0)) -> g(f(f(z0))) f(h(z0)) -> h(g(z0)) Tuples: F(g(g(g(z0)))) -> c(F(g(g(f(f(f(f(z0))))))), F(g(g(z0)))) S tuples: F(g(g(g(z0)))) -> c(F(g(g(f(f(f(f(z0))))))), F(g(g(z0)))) K tuples:none Defined Rule Symbols: f_1 Defined Pair Symbols: F_1 Compound Symbols: c_2