KILLED proof of input_0SNIqNEPXY.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) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (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) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (16) TRS for Loop Detection (17) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (18) CdtProblem (19) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRelTRS (21) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (22) CpxTRS (23) RelTrsToWeightedTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CpxWeightedTrs (25) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CpxTypedWeightedTrs (27) CompletionProof [UPPER BOUND(ID), 0 ms] (28) CpxTypedWeightedCompleteTrs (29) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (30) CpxRNTS (31) CompletionProof [UPPER BOUND(ID), 0 ms] (32) CpxTypedWeightedCompleteTrs (33) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxTypedWeightedCompleteTrs (35) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (36) CpxRNTS (37) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CpxRNTS (39) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CdtProblem (41) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CdtProblem (43) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (44) CdtProblem (45) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (46) CdtProblem (47) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (48) CdtProblem (49) CdtRewritingProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CdtProblem (51) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (52) CpxWeightedTrs (53) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CpxTypedWeightedTrs (55) CompletionProof [UPPER BOUND(ID), 0 ms] (56) CpxTypedWeightedCompleteTrs (57) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CpxTypedWeightedCompleteTrs (59) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (60) CpxRNTS (61) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CpxRNTS (63) CompletionProof [UPPER BOUND(ID), 0 ms] (64) CpxTypedWeightedCompleteTrs (65) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (66) CpxRNTS ---------------------------------------- (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), Y) -> f(X, f(g(X), 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: f(g(X), Y) -> f(X, f(g(X), 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: f(g(X), Y) -> f(X, f(g(X), Y)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (5) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) S tuples: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (7) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (8) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) The (relative) TRS S consists of the following rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) The (relative) TRS S consists of the following rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) f(g(z0), z1) -> f(z0, f(g(z0), z1)) Types: F :: g -> f -> c g :: g -> g c :: c -> c -> c f :: g -> f -> f hole_c1_2 :: c hole_g2_2 :: g hole_f3_2 :: f gen_c4_2 :: Nat -> c gen_g5_2 :: Nat -> g ---------------------------------------- (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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) f(g(z0), z1) -> f(z0, f(g(z0), z1)) Types: F :: g -> f -> c g :: g -> g c :: c -> c -> c f :: g -> f -> f hole_c1_2 :: c hole_g2_2 :: g hole_f3_2 :: f gen_c4_2 :: Nat -> c gen_g5_2 :: Nat -> g Generator Equations: gen_c4_2(0) <=> hole_c1_2 gen_c4_2(+(x, 1)) <=> c(hole_c1_2, gen_c4_2(x)) gen_g5_2(0) <=> hole_g2_2 gen_g5_2(+(x, 1)) <=> g(gen_g5_2(x)) The following defined symbols remain to be analysed: f, F They will be analysed ascendingly in the following order: f < F ---------------------------------------- (15) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (16) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) The (relative) TRS S consists of the following rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (17) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) S tuples: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (19) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (20) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) The (relative) TRS S consists of the following rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (21) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (22) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) f(g(z0), z1) -> f(z0, f(g(z0), z1)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (23) RelTrsToWeightedTrsProof (BOTH BOUNDS(ID, ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (24) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) [1] f(g(z0), z1) -> f(z0, f(g(z0), z1)) [0] Rewrite Strategy: INNERMOST ---------------------------------------- (25) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (26) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) [1] f(g(z0), z1) -> f(z0, f(g(z0), z1)) [0] The TRS has the following type information: F :: g -> f -> c g :: g -> g c :: c -> c -> c f :: g -> f -> f Rewrite Strategy: INNERMOST ---------------------------------------- (27) 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, v1) -> null_f [0] F(v0, v1) -> null_F [0] And the following fresh constants: null_f, null_F, const ---------------------------------------- (28) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) [1] f(g(z0), z1) -> f(z0, f(g(z0), z1)) [0] f(v0, v1) -> null_f [0] F(v0, v1) -> null_F [0] The TRS has the following type information: F :: g -> null_f -> c:null_F g :: g -> g c :: c:null_F -> c:null_F -> c:null_F f :: g -> null_f -> null_f null_f :: null_f null_F :: c:null_F const :: g Rewrite Strategy: INNERMOST ---------------------------------------- (29) 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 const => 0 ---------------------------------------- (30) Obligation: Complexity RNTS consisting of the following rules: F(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 F(z, z') -{ 1 }-> 1 + F(z0, f(1 + z0, z1)) + F(1 + z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 f(z, z') -{ 0 }-> f(z0, f(1 + z0, z1)) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (31) 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_2 (c) The following functions are completely defined: f_2 Due to the following rules being added: f(v0, v1) -> const2 [0] And the following fresh constants: const2, const, const1 ---------------------------------------- (32) 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), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) [1] f(g(z0), z1) -> f(z0, f(g(z0), z1)) [0] f(v0, v1) -> const2 [0] The TRS has the following type information: F :: g -> const2 -> c g :: g -> g c :: c -> c -> c f :: g -> const2 -> const2 const2 :: const2 const :: c const1 :: g Rewrite Strategy: INNERMOST ---------------------------------------- (33) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (34) 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), z1) -> c(F(z0, f(z0, f(g(z0), z1))), F(g(z0), z1)) [1] F(g(z0), z1) -> c(F(z0, const2), F(g(z0), z1)) [1] f(g(z0), z1) -> f(z0, f(z0, f(g(z0), z1))) [0] f(g(z0), z1) -> f(z0, const2) [0] f(v0, v1) -> const2 [0] The TRS has the following type information: F :: g -> const2 -> c g :: g -> g c :: c -> c -> c f :: g -> const2 -> const2 const2 :: const2 const :: c const1 :: g Rewrite Strategy: INNERMOST ---------------------------------------- (35) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: const2 => 0 const => 0 const1 => 0 ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: F(z, z') -{ 1 }-> 1 + F(z0, f(z0, f(1 + z0, z1))) + F(1 + z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 F(z, z') -{ 1 }-> 1 + F(z0, 0) + F(1 + z0, z1) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 f(z, z') -{ 0 }-> f(z0, f(z0, f(1 + z0, z1))) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 f(z, z') -{ 0 }-> f(z0, 0) :|: z1 >= 0, z = 1 + z0, z' = z1, z0 >= 0 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (37) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (38) Obligation: Complexity RNTS consisting of the following rules: F(z, z') -{ 1 }-> 1 + F(z - 1, f(z - 1, f(1 + (z - 1), z'))) + F(1 + (z - 1), z') :|: z' >= 0, z - 1 >= 0 F(z, z') -{ 1 }-> 1 + F(z - 1, 0) + F(1 + (z - 1), z') :|: z' >= 0, z - 1 >= 0 f(z, z') -{ 0 }-> f(z - 1, f(z - 1, f(1 + (z - 1), z'))) :|: z' >= 0, z - 1 >= 0 f(z, z') -{ 0 }-> f(z - 1, 0) :|: z' >= 0, z - 1 >= 0 f(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (39) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(g(z0), z1) -> c(F(z0, f(g(z0), z1)), F(g(z0), z1)) by F(g(z0), z1) -> c(F(z0, f(z0, f(g(z0), z1))), F(g(z0), z1)) ---------------------------------------- (40) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(g(z0), z1))), F(g(z0), z1)) S tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(g(z0), z1))), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (41) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace F(g(z0), z1) -> c(F(z0, f(z0, f(g(z0), z1))), F(g(z0), z1)) by F(g(g(z0)), x1) -> c(F(g(z0), f(z0, f(g(z0), f(g(g(z0)), x1)))), F(g(g(z0)), x1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) ---------------------------------------- (42) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(g(z0)), x1) -> c(F(g(z0), f(z0, f(g(z0), f(g(g(z0)), x1)))), F(g(g(z0)), x1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) S tuples: F(g(g(z0)), x1) -> c(F(g(z0), f(z0, f(g(z0), f(g(g(z0)), x1)))), F(g(g(z0)), x1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (43) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(g(g(z0)), x1) -> c(F(g(z0), f(z0, f(g(z0), f(g(g(z0)), x1)))), F(g(g(z0)), x1)) by F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) ---------------------------------------- (44) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) S tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (45) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(g(z0), z1)))), F(g(z0), z1)) by F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) ---------------------------------------- (46) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) S tuples: F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (47) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(g(z0), f(g(g(z0)), z1))))), F(g(g(z0)), z1)) by F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(z0, f(g(z0), f(g(g(z0)), z1)))))), F(g(g(z0)), z1)) ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(z0, f(g(z0), f(g(g(z0)), z1)))))), F(g(g(z0)), z1)) S tuples: F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(z0, f(g(z0), f(g(g(z0)), z1)))))), F(g(g(z0)), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (49) CdtRewritingProof (BOTH BOUNDS(ID, ID)) Used rewriting to replace F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(g(z0), z1))))), F(g(z0), z1)) by F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(z0, f(g(z0), z1)))))), F(g(z0), z1)) ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules: f(g(z0), z1) -> f(z0, f(g(z0), z1)) Tuples: F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(z0, f(g(z0), f(g(g(z0)), z1)))))), F(g(g(z0)), z1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(z0, f(g(z0), z1)))))), F(g(z0), z1)) S tuples: F(g(g(z0)), z1) -> c(F(g(z0), f(z0, f(z0, f(z0, f(g(z0), f(g(g(z0)), z1)))))), F(g(g(z0)), z1)) F(g(z0), z1) -> c(F(z0, f(z0, f(z0, f(z0, f(z0, f(g(z0), z1)))))), F(g(z0), z1)) K tuples:none Defined Rule Symbols: f_2 Defined Pair Symbols: F_2 Compound Symbols: c_2 ---------------------------------------- (51) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (52) 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), Y) -> f(X, f(g(X), Y)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (53) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (54) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: f(g(X), Y) -> f(X, f(g(X), Y)) [1] The TRS has the following type information: f :: g -> f -> f g :: g -> g Rewrite Strategy: INNERMOST ---------------------------------------- (55) 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_2 Due to the following rules being added: f(v0, v1) -> const [0] And the following fresh constants: const, const1 ---------------------------------------- (56) 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), Y) -> f(X, f(g(X), Y)) [1] f(v0, v1) -> const [0] The TRS has the following type information: f :: g -> const -> const g :: g -> g const :: const const1 :: g Rewrite Strategy: INNERMOST ---------------------------------------- (57) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (58) 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), Y) -> f(X, f(X, f(g(X), Y))) [2] f(g(X), Y) -> f(X, const) [1] f(v0, v1) -> const [0] The TRS has the following type information: f :: g -> const -> const g :: g -> g const :: const const1 :: g Rewrite Strategy: INNERMOST ---------------------------------------- (59) 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 const1 => 0 ---------------------------------------- (60) Obligation: Complexity RNTS consisting of the following rules: f(z, z') -{ 2 }-> f(X, f(X, f(1 + X, Y))) :|: z = 1 + X, z' = Y, Y >= 0, X >= 0 f(z, z') -{ 1 }-> f(X, 0) :|: z = 1 + X, z' = Y, Y >= 0, X >= 0 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 ---------------------------------------- (61) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (62) Obligation: Complexity RNTS consisting of the following rules: f(z, z') -{ 2 }-> f(z - 1, f(z - 1, f(1 + (z - 1), z'))) :|: z' >= 0, z - 1 >= 0 f(z, z') -{ 1 }-> f(z - 1, 0) :|: z' >= 0, z - 1 >= 0 f(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 ---------------------------------------- (63) 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, v1) -> null_f [0] And the following fresh constants: null_f, const ---------------------------------------- (64) 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), Y) -> f(X, f(g(X), Y)) [1] f(v0, v1) -> null_f [0] The TRS has the following type information: f :: g -> null_f -> null_f g :: g -> g null_f :: null_f const :: g Rewrite Strategy: INNERMOST ---------------------------------------- (65) 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 const => 0 ---------------------------------------- (66) Obligation: Complexity RNTS consisting of the following rules: f(z, z') -{ 1 }-> f(X, f(1 + X, Y)) :|: z = 1 + X, z' = Y, Y >= 0, X >= 0 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 Only complete derivations are relevant for the runtime complexity.