MAYBE proof of input_fMccPQkHqI.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), 8 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) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxTypedWeightedCompleteTrs (31) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (32) CpxRNTS (33) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (34) CpxRNTS (35) CompletionProof [UPPER BOUND(ID), 0 ms] (36) CpxTypedWeightedCompleteTrs (37) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (40) CpxWeightedTrs (41) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CpxTypedWeightedTrs (43) CompletionProof [UPPER BOUND(ID), 0 ms] (44) CpxTypedWeightedCompleteTrs (45) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (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), 2 ms] (54) 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(x, h(y)) -> h(f(f(h(a), y), 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(x, h(y)) -> h(f(f(h(a), y), x)) 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(x, h(y)) -> h(f(f(h(a), y), x)) 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(z0, h(z1)) -> h(f(f(h(a), z1), z0)) Tuples: F(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) S tuples: F(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) The (relative) TRS S consists of the following rules: f(z0, h(z1)) -> h(f(f(h(a), z1), 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) The (relative) TRS S consists of the following rules: f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) Rewrite Strategy: INNERMOST ---------------------------------------- (11) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (12) Obligation: Innermost TRS: Rules: F(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) Types: F :: h:a -> h:a -> c h :: h:a -> h:a c :: c -> c -> c f :: h:a -> h:a -> h:a a :: h:a hole_c1_2 :: c hole_h:a2_2 :: h:a gen_c3_2 :: Nat -> c gen_h:a4_2 :: Nat -> h:a ---------------------------------------- (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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) Types: F :: h:a -> h:a -> c h :: h:a -> h:a c :: c -> c -> c f :: h:a -> h:a -> h:a a :: h:a hole_c1_2 :: c hole_h:a2_2 :: h:a gen_c3_2 :: Nat -> c gen_h:a4_2 :: Nat -> h:a Generator Equations: gen_c3_2(0) <=> hole_c1_2 gen_c3_2(+(x, 1)) <=> c(hole_c1_2, gen_c3_2(x)) gen_h:a4_2(0) <=> a gen_h:a4_2(+(x, 1)) <=> h(gen_h:a4_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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) The (relative) TRS S consists of the following rules: f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) 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(z0, h(z1)) -> h(f(f(h(a), z1), z0)) Tuples: F(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) S tuples: F(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) The (relative) TRS S consists of the following rules: f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) [1] f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) [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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) [1] f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) [0] The TRS has the following type information: F :: h:a -> h:a -> c h :: h:a -> h:a c :: c -> c -> c f :: h:a -> h:a -> h:a a :: h:a Rewrite Strategy: INNERMOST ---------------------------------------- (27) 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) -> a [0] And the following fresh constants: const ---------------------------------------- (28) 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) [1] f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) [0] f(v0, v1) -> a [0] The TRS has the following type information: F :: h:a -> h:a -> c h :: h:a -> h:a c :: c -> c -> c f :: h:a -> h:a -> h:a a :: h:a const :: c Rewrite Strategy: INNERMOST ---------------------------------------- (29) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (30) 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(z0, h(h(z1'))) -> c(F(h(f(f(h(a), z1'), h(a))), z0), F(h(a), h(z1'))) [1] F(z0, h(z1)) -> c(F(a, z0), F(h(a), z1)) [1] f(z0, h(h(z1''))) -> h(f(h(f(f(h(a), z1''), h(a))), z0)) [0] f(z0, h(z1)) -> h(f(a, z0)) [0] f(v0, v1) -> a [0] The TRS has the following type information: F :: h:a -> h:a -> c h :: h:a -> h:a c :: c -> c -> c f :: h:a -> h:a -> h:a a :: h:a const :: c Rewrite Strategy: INNERMOST ---------------------------------------- (31) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: a => 0 const => 0 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: F(z, z') -{ 1 }-> 1 + F(0, z0) + F(1 + 0, z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 F(z, z') -{ 1 }-> 1 + F(1 + f(f(1 + 0, z1'), 1 + 0), z0) + F(1 + 0, 1 + z1') :|: z' = 1 + (1 + z1'), z = z0, z1' >= 0, z0 >= 0 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 f(z, z') -{ 0 }-> 1 + f(0, z0) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 f(z, z') -{ 0 }-> 1 + f(1 + f(f(1 + 0, z1''), 1 + 0), z0) :|: z = z0, z' = 1 + (1 + z1''), z0 >= 0, z1'' >= 0 ---------------------------------------- (33) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (34) Obligation: Complexity RNTS consisting of the following rules: F(z, z') -{ 1 }-> 1 + F(0, z) + F(1 + 0, z' - 1) :|: z' - 1 >= 0, z >= 0 F(z, z') -{ 1 }-> 1 + F(1 + f(f(1 + 0, z' - 2), 1 + 0), z) + F(1 + 0, 1 + (z' - 2)) :|: z' - 2 >= 0, z >= 0 f(z, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 f(z, z') -{ 0 }-> 1 + f(0, z) :|: z' - 1 >= 0, z >= 0 f(z, z') -{ 0 }-> 1 + f(1 + f(f(1 + 0, z' - 2), 1 + 0), z) :|: z >= 0, z' - 2 >= 0 ---------------------------------------- (35) 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 ---------------------------------------- (36) 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(z0, h(z1)) -> c(F(f(h(a), z1), z0), F(h(a), z1)) [1] f(z0, h(z1)) -> h(f(f(h(a), z1), z0)) [0] f(v0, v1) -> null_f [0] F(v0, v1) -> null_F [0] The TRS has the following type information: F :: h:a:null_f -> h:a:null_f -> c:null_F h :: h:a:null_f -> h:a:null_f c :: c:null_F -> c:null_F -> c:null_F f :: h:a:null_f -> h:a:null_f -> h:a:null_f a :: h:a:null_f null_f :: h:a:null_f null_F :: c:null_F Rewrite Strategy: INNERMOST ---------------------------------------- (37) CpxTypedWeightedTrsToRntsProof (UPPER BOUND(ID)) Transformed the TRS into an over-approximating RNTS by (improved) Size Abstraction. The constant constructors are abstracted as follows: a => 0 null_f => 0 null_F => 0 ---------------------------------------- (38) 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(f(1 + 0, z1), z0) + F(1 + 0, z1) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 f(z, z') -{ 0 }-> 0 :|: v0 >= 0, v1 >= 0, z = v0, z' = v1 f(z, z') -{ 0 }-> 1 + f(f(1 + 0, z1), z0) :|: z = z0, z1 >= 0, z0 >= 0, z' = 1 + z1 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (39) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (40) 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(x, h(y)) -> h(f(f(h(a), y), x)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (41) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (42) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: f(x, h(y)) -> h(f(f(h(a), y), x)) [1] The TRS has the following type information: f :: h:a -> h:a -> h:a h :: h:a -> h:a a :: h:a Rewrite Strategy: INNERMOST ---------------------------------------- (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: f(v0, v1) -> null_f [0] And the following fresh constants: null_f ---------------------------------------- (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: f(x, h(y)) -> h(f(f(h(a), y), x)) [1] f(v0, v1) -> null_f [0] The TRS has the following type information: f :: h:a:null_f -> h:a:null_f -> h:a:null_f h :: h:a:null_f -> h:a:null_f a :: h:a:null_f null_f :: h:a:null_f 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: a => 0 null_f => 0 ---------------------------------------- (46) 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(f(1 + 0, y), x) :|: z' = 1 + y, x >= 0, y >= 0, z = x Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (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: none (c) The following functions are completely defined: f_2 Due to the following rules being added: f(v0, v1) -> a [0] And the following fresh constants: none ---------------------------------------- (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(x, h(y)) -> h(f(f(h(a), y), x)) [1] f(v0, v1) -> a [0] The TRS has the following type information: f :: h:a -> h:a -> h:a h :: h:a -> h:a a :: h:a 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(x, h(h(y'))) -> h(f(h(f(f(h(a), y'), h(a))), x)) [2] f(x, h(y)) -> h(f(a, x)) [1] f(v0, v1) -> a [0] The TRS has the following type information: f :: h:a -> h:a -> h:a h :: h:a -> h:a a :: h:a 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: a => 0 ---------------------------------------- (52) 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(0, x) :|: z' = 1 + y, x >= 0, y >= 0, z = x f(z, z') -{ 2 }-> 1 + f(1 + f(f(1 + 0, y'), 1 + 0), x) :|: z' = 1 + (1 + y'), x >= 0, y' >= 0, z = x ---------------------------------------- (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, z') -{ 0 }-> 0 :|: z >= 0, z' >= 0 f(z, z') -{ 1 }-> 1 + f(0, z) :|: z >= 0, z' - 1 >= 0 f(z, z') -{ 2 }-> 1 + f(1 + f(f(1 + 0, z' - 2), 1 + 0), z) :|: z >= 0, z' - 2 >= 0