KILLED proof of input_UKnojHQUMe.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 [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CpxRelTRS (7) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CpxRelTRS (9) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (10) typed CpxTrs (11) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (12) TRS for Loop Detection (13) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (14) CpxTRS (15) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (16) CdtProblem (17) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CdtProblem (19) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxTRS (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) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (36) CpxRNTS (37) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (38) CpxRNTS (39) IntTrsBoundProof [UPPER BOUND(ID), 19.7 s] (40) CpxRNTS (41) IntTrsBoundProof [UPPER BOUND(ID), 6587 ms] (42) CpxRNTS (43) CompletionProof [UPPER BOUND(ID), 0 ms] (44) CpxTypedWeightedCompleteTrs (45) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (46) CpxRNTS (47) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 34 ms] (48) CdtProblem (49) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (50) CdtProblem (51) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (52) CdtProblem (53) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (54) CdtProblem (55) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (56) CdtProblem (57) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (58) CdtProblem (59) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (60) CdtProblem (61) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (62) CdtProblem (63) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (64) CdtProblem (65) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (66) CdtProblem (67) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (68) CdtProblem (69) RelTrsToWeightedTrsProof [UPPER BOUND(ID), 0 ms] (70) CpxWeightedTrs (71) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (72) CpxTypedWeightedTrs (73) CompletionProof [UPPER BOUND(ID), 0 ms] (74) CpxTypedWeightedCompleteTrs (75) NarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (76) CpxTypedWeightedCompleteTrs (77) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (78) CpxRNTS (79) SimplificationProof [BOTH BOUNDS(ID, ID), 0 ms] (80) CpxRNTS (81) CpxRntsAnalysisOrderProof [BOTH BOUNDS(ID, ID), 0 ms] (82) CpxRNTS (83) ResultPropagationProof [UPPER BOUND(ID), 0 ms] (84) CpxRNTS (85) IntTrsBoundProof [UPPER BOUND(ID), 20.1 s] (86) CpxRNTS (87) IntTrsBoundProof [UPPER BOUND(ID), 6610 ms] (88) CpxRNTS (89) CompletionProof [UPPER BOUND(ID), 0 ms] (90) CpxTypedWeightedCompleteTrs (91) CpxTypedWeightedTrsToRntsProof [UPPER BOUND(ID), 0 ms] (92) 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(c(s(x), y)) -> f(c(x, s(y))) f(c(s(x), s(y))) -> g(c(x, y)) g(c(x, s(y))) -> g(c(s(x), y)) g(c(s(x), s(y))) -> f(c(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(c(s(x), y)) -> f(c(x, s(y))) f(c(s(x), s(y))) -> g(c(x, y)) g(c(x, s(y))) -> g(c(s(x), y)) g(c(s(x), s(y))) -> f(c(x, y)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) S tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) K tuples:none Defined Rule Symbols: f_1, g_1 Defined Pair Symbols: F_1, G_1 Compound Symbols: c1_1, c2_1, c3_1, c4_1 ---------------------------------------- (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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) The (relative) TRS S consists of the following rules: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (7) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) The (relative) TRS S consists of the following rules: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (9) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (10) Obligation: Innermost TRS: Rules: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Types: F :: c -> c1:c2 c :: s -> s -> c s :: s -> s c1 :: c1:c2 -> c1:c2 c2 :: c3:c4 -> c1:c2 G :: c -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c1:c2 -> c3:c4 f :: c -> f:g g :: c -> f:g hole_c1:c21_5 :: c1:c2 hole_c2_5 :: c hole_s3_5 :: s hole_c3:c44_5 :: c3:c4 hole_f:g5_5 :: f:g gen_c1:c26_5 :: Nat -> c1:c2 gen_s7_5 :: Nat -> s gen_c3:c48_5 :: Nat -> c3:c4 ---------------------------------------- (11) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (12) 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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) The (relative) TRS S consists of the following rules: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (13) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (14) 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(c(s(x), y)) -> f(c(x, s(y))) f(c(s(x), s(y))) -> g(c(x, y)) g(c(x, s(y))) -> g(c(s(x), y)) g(c(s(x), s(y))) -> f(c(x, y)) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (15) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) Tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) S tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) K tuples:none Defined Rule Symbols: f_1, g_1 Defined Pair Symbols: F_1, G_1 Compound Symbols: c1_1, c2_1, c3_1, c4_1 ---------------------------------------- (17) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: f(c(s(z0), z1)) -> f(c(z0, s(z1))) f(c(s(z0), s(z1))) -> g(c(z0, z1)) g(c(z0, s(z1))) -> g(c(s(z0), z1)) g(c(s(z0), s(z1))) -> f(c(z0, z1)) ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) S tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c1_1, c2_1, c3_1, c4_1 ---------------------------------------- (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 CpxTRS could be proven to be BOUNDS(1, INF). The TRS R consists of the following rules: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) S is empty. 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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) [1] F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) [1] G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) [1] G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) [1] 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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) [1] F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) [1] G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) [1] G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) [1] The TRS has the following type information: F :: c -> c1:c2 c :: s -> s -> c s :: s -> s c1 :: c1:c2 -> c1:c2 c2 :: c3:c4 -> c1:c2 G :: c -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c1:c2 -> c3:c4 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_1 G_1 (c) The following functions are completely defined: none Due to the following rules being added: none And the following fresh constants: const, const1, const2, const3 ---------------------------------------- (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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) [1] F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) [1] G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) [1] G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) [1] The TRS has the following type information: F :: c -> c1:c2 c :: s -> s -> c s :: s -> s c1 :: c1:c2 -> c1:c2 c2 :: c3:c4 -> c1:c2 G :: c -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c1:c2 -> c3:c4 const :: c1:c2 const1 :: c const2 :: s const3 :: c3:c4 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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) [1] F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) [1] G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) [1] G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) [1] The TRS has the following type information: F :: c -> c1:c2 c :: s -> s -> c s :: s -> s c1 :: c1:c2 -> c1:c2 c2 :: c3:c4 -> c1:c2 G :: c -> c3:c4 c3 :: c3:c4 -> c3:c4 c4 :: c1:c2 -> c3:c4 const :: c1:c2 const1 :: c const2 :: s const3 :: c3:c4 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: const => 0 const1 => 0 const2 => 0 const3 => 0 ---------------------------------------- (32) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 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) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 ---------------------------------------- (35) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { G, F } ---------------------------------------- (36) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 Function symbols to be analyzed: {G,F} ---------------------------------------- (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: F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 Function symbols to be analyzed: {G,F} ---------------------------------------- (39) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: G after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: F after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (40) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 Function symbols to be analyzed: {G,F} Previous analysis results are: G: runtime: ?, size: O(1) [0] F: runtime: ?, size: INF ---------------------------------------- (41) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: G after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (42) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 Function symbols to be analyzed: {G,F} Previous analysis results are: G: runtime: INF, size: O(1) [0] F: runtime: ?, 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: F(v0) -> null_F [0] G(v0) -> null_G [0] And the following fresh constants: null_F, null_G, const, const1 ---------------------------------------- (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(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) [1] F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) [1] G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) [1] G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) [1] F(v0) -> null_F [0] G(v0) -> null_G [0] The TRS has the following type information: F :: c -> c1:c2:null_F c :: s -> s -> c s :: s -> s c1 :: c1:c2:null_F -> c1:c2:null_F c2 :: c3:c4:null_G -> c1:c2:null_F G :: c -> c3:c4:null_G c3 :: c3:c4:null_G -> c3:c4:null_G c4 :: c1:c2:null_F -> c3:c4:null_G null_F :: c1:c2:null_F null_G :: c3:c4:null_G const :: c const1 :: 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: null_F => 0 null_G => 0 const => 0 const1 => 0 ---------------------------------------- (46) Obligation: Complexity RNTS consisting of the following rules: F(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 F(z) -{ 1 }-> 1 + G(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 F(z) -{ 1 }-> 1 + F(1 + z0 + (1 + z1)) :|: z1 >= 0, z = 1 + (1 + z0) + z1, z0 >= 0 G(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 G(z) -{ 1 }-> 1 + G(1 + (1 + z0) + z1) :|: z1 >= 0, z = 1 + z0 + (1 + z1), z0 >= 0 G(z) -{ 1 }-> 1 + F(1 + z0 + z1) :|: z1 >= 0, z = 1 + (1 + z0) + (1 + z1), z0 >= 0 Only complete derivations are relevant for the runtime complexity. ---------------------------------------- (47) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) We considered the (Usable) Rules:none And the Tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) The order we found is given by the following interpretation: Polynomial interpretation : POL(F(x_1)) = x_1 POL(G(x_1)) = [1] + x_1 POL(c(x_1, x_2)) = [1] + x_1 + x_2 POL(c1(x_1)) = x_1 POL(c2(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1)) = x_1 POL(s(x_1)) = [1] + x_1 ---------------------------------------- (48) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) S tuples: F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) K tuples: F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c1_1, c2_1, c3_1, c4_1 ---------------------------------------- (49) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(c(s(z0), z1)) -> c1(F(c(z0, s(z1)))) by F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) ---------------------------------------- (50) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) S tuples: G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) K tuples: F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c2_1, c3_1, c4_1, c1_1 ---------------------------------------- (51) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(c(s(z0), s(z1))) -> c2(G(c(z0, z1))) by F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) ---------------------------------------- (52) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) S tuples: G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) K tuples: G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c3_1, c4_1, c1_1, c2_1 ---------------------------------------- (53) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(c(z0, s(z1))) -> c3(G(c(s(z0), z1))) by G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) ---------------------------------------- (54) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) S tuples: F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) K tuples: G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c4_1, c1_1, c2_1, c3_1 ---------------------------------------- (55) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(c(s(z0), s(z1))) -> c4(F(c(z0, z1))) by G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) ---------------------------------------- (56) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) S tuples: F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) K tuples: F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c1_1, c2_1, c3_1, c4_1 ---------------------------------------- (57) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(c(s(s(y0)), z1)) -> c1(F(c(s(y0), s(z1)))) by F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) ---------------------------------------- (58) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) S tuples: G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) K tuples: F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c2_1, c3_1, c4_1, c1_1 ---------------------------------------- (59) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(c(s(z0), s(s(y1)))) -> c2(G(c(z0, s(y1)))) by F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) ---------------------------------------- (60) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) S tuples: G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) K tuples: F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) Defined Rule Symbols:none Defined Pair Symbols: F_1, G_1 Compound Symbols: c2_1, c3_1, c4_1, c1_1 ---------------------------------------- (61) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(c(s(s(y0)), s(s(y1)))) -> c2(G(c(s(y0), s(y1)))) by F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) ---------------------------------------- (62) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) S tuples: G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) K tuples: G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c3_1, c4_1, c1_1, c2_1 ---------------------------------------- (63) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(c(z0, s(s(y1)))) -> c3(G(c(s(z0), s(y1)))) by G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) ---------------------------------------- (64) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) S tuples: F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) K tuples: G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c4_1, c1_1, c2_1, c3_1 ---------------------------------------- (65) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(c(s(s(s(y0))), s(z1))) -> c4(F(c(s(s(y0)), z1))) by G(c(s(s(s(s(y0)))), s(z1))) -> c4(F(c(s(s(s(y0))), z1))) G(c(s(s(s(z0))), s(s(y1)))) -> c4(F(c(s(s(z0)), s(y1)))) G(c(s(s(s(s(y0)))), s(s(y1)))) -> c4(F(c(s(s(s(y0))), s(y1)))) G(c(s(s(s(z0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(z0)), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(y1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(y1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) ---------------------------------------- (66) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) G(c(s(s(s(s(y0)))), s(z1))) -> c4(F(c(s(s(s(y0))), z1))) G(c(s(s(s(z0))), s(s(y1)))) -> c4(F(c(s(s(z0)), s(y1)))) G(c(s(s(s(s(y0)))), s(s(y1)))) -> c4(F(c(s(s(s(y0))), s(y1)))) G(c(s(s(s(z0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(z0)), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(y1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(y1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) S tuples: F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) K tuples: G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) G(c(s(s(s(s(y0)))), s(z1))) -> c4(F(c(s(s(s(y0))), z1))) G(c(s(s(s(z0))), s(s(y1)))) -> c4(F(c(s(s(z0)), s(y1)))) G(c(s(s(s(s(y0)))), s(s(y1)))) -> c4(F(c(s(s(s(y0))), s(y1)))) G(c(s(s(s(z0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(z0)), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(y1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(y1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c4_1, c1_1, c2_1, c3_1 ---------------------------------------- (67) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(c(s(s(y0)), s(s(s(y1))))) -> c4(F(c(s(y0), s(s(y1))))) by G(c(s(s(s(s(y0)))), s(s(s(z1))))) -> c4(F(c(s(s(s(y0))), s(s(z1))))) G(c(s(s(s(y0))), s(s(s(z1))))) -> c4(F(c(s(s(y0)), s(s(z1))))) G(c(s(s(z0)), s(s(s(s(y1)))))) -> c4(F(c(s(z0), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(z1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(z1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) G(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(y0)), s(s(s(y1)))))) ---------------------------------------- (68) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) G(c(s(s(s(s(y0)))), s(z1))) -> c4(F(c(s(s(s(y0))), z1))) G(c(s(s(s(z0))), s(s(y1)))) -> c4(F(c(s(s(z0)), s(y1)))) G(c(s(s(s(s(y0)))), s(s(y1)))) -> c4(F(c(s(s(s(y0))), s(y1)))) G(c(s(s(s(z0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(z0)), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(y1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(y1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) G(c(s(s(s(s(y0)))), s(s(s(z1))))) -> c4(F(c(s(s(s(y0))), s(s(z1))))) G(c(s(s(z0)), s(s(s(s(y1)))))) -> c4(F(c(s(z0), s(s(s(y1)))))) S tuples: F(c(s(s(s(y0))), z1)) -> c1(F(c(s(s(y0)), s(z1)))) F(c(s(s(z0)), s(y1))) -> c1(F(c(s(z0), s(s(y1))))) F(c(s(s(s(y0))), s(y1))) -> c1(F(c(s(s(y0)), s(s(y1))))) G(c(z0, s(s(s(y1))))) -> c3(G(c(s(z0), s(s(y1))))) G(c(s(s(y0)), s(s(z1)))) -> c3(G(c(s(s(s(y0))), s(z1)))) G(c(s(y0), s(s(s(s(y1)))))) -> c3(G(c(s(s(y0)), s(s(s(y1)))))) G(c(s(s(y0)), s(s(s(s(y1)))))) -> c3(G(c(s(s(s(y0))), s(s(s(y1)))))) K tuples: G(c(s(s(s(y0))), s(s(s(y1))))) -> c4(F(c(s(s(y0)), s(s(y1))))) F(c(s(z0), s(s(s(y1))))) -> c2(G(c(z0, s(s(y1))))) F(c(s(s(s(s(y0)))), s(s(z1)))) -> c2(G(c(s(s(s(y0))), s(z1)))) F(c(s(s(s(y0))), s(s(s(s(y1)))))) -> c2(G(c(s(s(y0)), s(s(s(y1)))))) F(c(s(s(s(s(y0)))), s(s(s(s(y1)))))) -> c2(G(c(s(s(s(y0))), s(s(s(y1)))))) F(c(s(s(z0)), s(s(s(y1))))) -> c2(G(c(s(z0), s(s(y1))))) G(c(s(s(s(s(y0)))), s(z1))) -> c4(F(c(s(s(s(y0))), z1))) G(c(s(s(s(z0))), s(s(y1)))) -> c4(F(c(s(s(z0)), s(y1)))) G(c(s(s(s(s(y0)))), s(s(y1)))) -> c4(F(c(s(s(s(y0))), s(y1)))) G(c(s(s(s(z0))), s(s(s(s(y1)))))) -> c4(F(c(s(s(z0)), s(s(s(y1)))))) G(c(s(s(s(s(s(y0))))), s(s(s(y1))))) -> c4(F(c(s(s(s(s(y0)))), s(s(y1))))) G(c(s(s(s(s(y0)))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(y0))), s(s(s(s(y1))))))) G(c(s(s(s(s(s(y0))))), s(s(s(s(s(y1))))))) -> c4(F(c(s(s(s(s(y0)))), s(s(s(s(y1))))))) G(c(s(s(s(s(y0)))), s(s(s(z1))))) -> c4(F(c(s(s(s(y0))), s(s(z1))))) G(c(s(s(z0)), s(s(s(s(y1)))))) -> c4(F(c(s(z0), s(s(s(y1)))))) Defined Rule Symbols:none Defined Pair Symbols: G_1, F_1 Compound Symbols: c4_1, c1_1, c2_1, c3_1 ---------------------------------------- (69) RelTrsToWeightedTrsProof (UPPER BOUND(ID)) Transformed relative TRS to weighted TRS ---------------------------------------- (70) 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(c(s(x), y)) -> f(c(x, s(y))) [1] f(c(s(x), s(y))) -> g(c(x, y)) [1] g(c(x, s(y))) -> g(c(s(x), y)) [1] g(c(s(x), s(y))) -> f(c(x, y)) [1] Rewrite Strategy: INNERMOST ---------------------------------------- (71) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (72) Obligation: Runtime Complexity Weighted TRS with Types. The TRS R consists of the following rules: f(c(s(x), y)) -> f(c(x, s(y))) [1] f(c(s(x), s(y))) -> g(c(x, y)) [1] g(c(x, s(y))) -> g(c(s(x), y)) [1] g(c(s(x), s(y))) -> f(c(x, y)) [1] The TRS has the following type information: f :: c -> f:g c :: s -> s -> c s :: s -> s g :: c -> f:g Rewrite Strategy: INNERMOST ---------------------------------------- (73) 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 g_1 (c) The following functions are completely defined: none Due to the following rules being added: none And the following fresh constants: const, const1, const2 ---------------------------------------- (74) 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(c(s(x), y)) -> f(c(x, s(y))) [1] f(c(s(x), s(y))) -> g(c(x, y)) [1] g(c(x, s(y))) -> g(c(s(x), y)) [1] g(c(s(x), s(y))) -> f(c(x, y)) [1] The TRS has the following type information: f :: c -> f:g c :: s -> s -> c s :: s -> s g :: c -> f:g const :: f:g const1 :: c const2 :: s Rewrite Strategy: INNERMOST ---------------------------------------- (75) NarrowingProof (BOTH BOUNDS(ID, ID)) Narrowed the inner basic terms of all right-hand sides by a single narrowing step. ---------------------------------------- (76) 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(c(s(x), y)) -> f(c(x, s(y))) [1] f(c(s(x), s(y))) -> g(c(x, y)) [1] g(c(x, s(y))) -> g(c(s(x), y)) [1] g(c(s(x), s(y))) -> f(c(x, y)) [1] The TRS has the following type information: f :: c -> f:g c :: s -> s -> c s :: s -> s g :: c -> f:g const :: f:g const1 :: c const2 :: s Rewrite Strategy: INNERMOST ---------------------------------------- (77) 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 const2 => 0 ---------------------------------------- (78) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) ---------------------------------------- (79) SimplificationProof (BOTH BOUNDS(ID, ID)) Simplified the RNTS by moving equalities from the constraints into the right-hand sides. ---------------------------------------- (80) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) ---------------------------------------- (81) CpxRntsAnalysisOrderProof (BOTH BOUNDS(ID, ID)) Found the following analysis order by SCC decomposition: { f, g } ---------------------------------------- (82) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) Function symbols to be analyzed: {f,g} ---------------------------------------- (83) ResultPropagationProof (UPPER BOUND(ID)) Applied inner abstraction using the recently inferred runtime/size bounds where possible. ---------------------------------------- (84) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) Function symbols to be analyzed: {f,g} ---------------------------------------- (85) IntTrsBoundProof (UPPER BOUND(ID)) Computed SIZE bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 Computed SIZE bound using CoFloCo for: g after applying outer abstraction to obtain an ITS, resulting in: O(1) with polynomial bound: 0 ---------------------------------------- (86) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) Function symbols to be analyzed: {f,g} Previous analysis results are: f: runtime: ?, size: O(1) [0] g: runtime: ?, size: O(1) [0] ---------------------------------------- (87) IntTrsBoundProof (UPPER BOUND(ID)) Computed RUNTIME bound using CoFloCo for: f after applying outer abstraction to obtain an ITS, resulting in: INF with polynomial bound: ? ---------------------------------------- (88) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) Function symbols to be analyzed: {f,g} Previous analysis results are: f: runtime: INF, size: O(1) [0] g: runtime: ?, size: O(1) [0] ---------------------------------------- (89) 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] g(v0) -> null_g [0] And the following fresh constants: null_f, null_g, const, const1 ---------------------------------------- (90) 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(c(s(x), y)) -> f(c(x, s(y))) [1] f(c(s(x), s(y))) -> g(c(x, y)) [1] g(c(x, s(y))) -> g(c(s(x), y)) [1] g(c(s(x), s(y))) -> f(c(x, y)) [1] f(v0) -> null_f [0] g(v0) -> null_g [0] The TRS has the following type information: f :: c -> null_f:null_g c :: s -> s -> c s :: s -> s g :: c -> null_f:null_g null_f :: null_f:null_g null_g :: null_f:null_g const :: c const1 :: s Rewrite Strategy: INNERMOST ---------------------------------------- (91) 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_g => 0 const => 0 const1 => 0 ---------------------------------------- (92) Obligation: Complexity RNTS consisting of the following rules: f(z) -{ 1 }-> g(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) f(z) -{ 1 }-> f(1 + x + (1 + y)) :|: z = 1 + (1 + x) + y, x >= 0, y >= 0 f(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 g(z) -{ 1 }-> g(1 + (1 + x) + y) :|: z = 1 + x + (1 + y), x >= 0, y >= 0 g(z) -{ 1 }-> f(1 + x + y) :|: x >= 0, y >= 0, z = 1 + (1 + x) + (1 + y) g(z) -{ 0 }-> 0 :|: v0 >= 0, z = v0 Only complete derivations are relevant for the runtime complexity.