WORST_CASE(Omega(n^1),O(n^1)) proof of input_8J57vUKyYR.trs # AProVE Commit ID: aff8ecad908e01718a4c36e68d2e55d5e0f16e15 fuhs 20220216 unpublished The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxTRS (1) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (2) CdtProblem (3) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (4) CdtProblem (5) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CpxTRS (11) RelTrsToTrsProof [UPPER BOUND(ID), 0 ms] (12) CpxTRS (13) CpxTrsMatchBoundsTAProof [FINISHED, 18 ms] (14) BOUNDS(1, n^1) (15) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CdtProblem (17) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRelTRS (19) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CpxRelTRS (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (22) typed CpxTrs (23) OrderProof [LOWER BOUND(ID), 4 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 295 ms] (26) BEST (27) proven lower bound (28) LowerBoundPropagationProof [FINISHED, 0 ms] (29) BOUNDS(n^1, INF) (30) typed CpxTrs (31) RewriteLemmaProof [LOWER BOUND(ID), 43 ms] (32) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: f(0) -> true f(1) -> false f(s(x)) -> f(x) if(true, s(x), s(y)) -> s(x) if(false, s(x), s(y)) -> s(y) g(x, c(y)) -> c(g(x, y)) g(x, c(y)) -> g(x, if(f(x), c(g(s(x), y)), c(y))) S is empty. Rewrite Strategy: PARALLEL_INNERMOST ---------------------------------------- (1) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (2) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) S tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) K tuples:none Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, IF_3, G_2 Compound Symbols: c1, c2, c3_1, c4, c5, c6_1, c7_3, c8_3 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: IF(true, s(z0), s(z1)) -> c4 F(1) -> c2 F(0) -> c1 IF(false, s(z0), s(z1)) -> c5 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) S tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) K tuples:none Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_3, c8_3 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) S tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) K tuples:none Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_1, c8_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules:none Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) S tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) K tuples:none Defined Rule Symbols:none Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_1, c8_1 ---------------------------------------- (9) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (10) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (11) RelTrsToTrsProof (UPPER BOUND(ID)) transformed relative TRS to TRS ---------------------------------------- (12) Obligation: The Runtime Complexity (innermost) of the given CpxTRS could be proven to be BOUNDS(1, n^1). The TRS R consists of the following rules: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(F(z0)) G(z0, c(z1)) -> c8(G(s(z0), z1)) S is empty. Rewrite Strategy: INNERMOST ---------------------------------------- (13) CpxTrsMatchBoundsTAProof (FINISHED) A linear upper bound on the runtime complexity of the TRS R could be shown with a Match-Bound[TAB_LEFTLINEAR,TAB_NONLEFTLINEAR] (for contructor-based start-terms) of 2. The compatible tree automaton used to show the Match-Boundedness (for constructor-based start-terms) is represented by: final states : [1, 2] transitions: s0(0) -> 0 c30(0) -> 0 c0(0) -> 0 c60(0) -> 0 c70(0) -> 0 c80(0) -> 0 F0(0) -> 1 G0(0, 0) -> 2 F1(0) -> 3 c31(3) -> 1 G1(0, 0) -> 4 c61(4) -> 2 F1(0) -> 5 c71(5) -> 2 s1(0) -> 7 G1(7, 0) -> 6 c81(6) -> 2 c31(3) -> 3 c31(3) -> 5 c61(4) -> 4 G1(7, 0) -> 4 c61(4) -> 6 c71(5) -> 4 F1(7) -> 5 c71(5) -> 6 c81(6) -> 4 s1(7) -> 7 c81(6) -> 6 F2(0) -> 8 c32(8) -> 5 F2(7) -> 8 c31(3) -> 8 c32(8) -> 8 ---------------------------------------- (14) BOUNDS(1, n^1) ---------------------------------------- (15) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) S tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) K tuples:none Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, IF_3, G_2 Compound Symbols: c1, c2, c3_1, c4, c5, c6_1, c7_3, c8_3 ---------------------------------------- (17) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (18) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) The (relative) TRS S consists of the following rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (19) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (20) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, INF). The TRS R consists of the following rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) The (relative) TRS S consists of the following rules: f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Rewrite Strategy: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (22) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Types: F :: 0':1':s:c -> c1:c2:c3 0' :: 0':1':s:c c1 :: c1:c2:c3 1' :: 0':1':s:c c2 :: c1:c2:c3 s :: 0':1':s:c -> 0':1':s:c c3 :: c1:c2:c3 -> c1:c2:c3 IF :: true:false -> 0':1':s:c -> 0':1':s:c -> c4:c5 true :: true:false c4 :: c4:c5 false :: true:false c5 :: c4:c5 G :: 0':1':s:c -> 0':1':s:c -> c6:c7:c8 c :: 0':1':s:c -> 0':1':s:c c6 :: c6:c7:c8 -> c6:c7:c8 c7 :: c6:c7:c8 -> c4:c5 -> c1:c2:c3 -> c6:c7:c8 if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c f :: 0':1':s:c -> true:false g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c c8 :: c6:c7:c8 -> c4:c5 -> c6:c7:c8 -> c6:c7:c8 hole_c1:c2:c31_9 :: c1:c2:c3 hole_0':1':s:c2_9 :: 0':1':s:c hole_c4:c53_9 :: c4:c5 hole_true:false4_9 :: true:false hole_c6:c7:c85_9 :: c6:c7:c8 gen_c1:c2:c36_9 :: Nat -> c1:c2:c3 gen_0':1':s:c7_9 :: Nat -> 0':1':s:c gen_c6:c7:c88_9 :: Nat -> c6:c7:c8 ---------------------------------------- (23) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: F, G, f, g They will be analysed ascendingly in the following order: F < G f < G g < G f < g ---------------------------------------- (24) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Types: F :: 0':1':s:c -> c1:c2:c3 0' :: 0':1':s:c c1 :: c1:c2:c3 1' :: 0':1':s:c c2 :: c1:c2:c3 s :: 0':1':s:c -> 0':1':s:c c3 :: c1:c2:c3 -> c1:c2:c3 IF :: true:false -> 0':1':s:c -> 0':1':s:c -> c4:c5 true :: true:false c4 :: c4:c5 false :: true:false c5 :: c4:c5 G :: 0':1':s:c -> 0':1':s:c -> c6:c7:c8 c :: 0':1':s:c -> 0':1':s:c c6 :: c6:c7:c8 -> c6:c7:c8 c7 :: c6:c7:c8 -> c4:c5 -> c1:c2:c3 -> c6:c7:c8 if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c f :: 0':1':s:c -> true:false g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c c8 :: c6:c7:c8 -> c4:c5 -> c6:c7:c8 -> c6:c7:c8 hole_c1:c2:c31_9 :: c1:c2:c3 hole_0':1':s:c2_9 :: 0':1':s:c hole_c4:c53_9 :: c4:c5 hole_true:false4_9 :: true:false hole_c6:c7:c85_9 :: c6:c7:c8 gen_c1:c2:c36_9 :: Nat -> c1:c2:c3 gen_0':1':s:c7_9 :: Nat -> 0':1':s:c gen_c6:c7:c88_9 :: Nat -> c6:c7:c8 Generator Equations: gen_c1:c2:c36_9(0) <=> c1 gen_c1:c2:c36_9(+(x, 1)) <=> c3(gen_c1:c2:c36_9(x)) gen_0':1':s:c7_9(0) <=> 0' gen_0':1':s:c7_9(+(x, 1)) <=> s(gen_0':1':s:c7_9(x)) gen_c6:c7:c88_9(0) <=> hole_c6:c7:c85_9 gen_c6:c7:c88_9(+(x, 1)) <=> c6(gen_c6:c7:c88_9(x)) The following defined symbols remain to be analysed: F, G, f, g They will be analysed ascendingly in the following order: F < G f < G g < G f < g ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: F(gen_0':1':s:c7_9(n10_9)) -> gen_c1:c2:c36_9(n10_9), rt in Omega(1 + n10_9) Induction Base: F(gen_0':1':s:c7_9(0)) ->_R^Omega(1) c1 Induction Step: F(gen_0':1':s:c7_9(+(n10_9, 1))) ->_R^Omega(1) c3(F(gen_0':1':s:c7_9(n10_9))) ->_IH c3(gen_c1:c2:c36_9(c11_9)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (26) Complex Obligation (BEST) ---------------------------------------- (27) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Types: F :: 0':1':s:c -> c1:c2:c3 0' :: 0':1':s:c c1 :: c1:c2:c3 1' :: 0':1':s:c c2 :: c1:c2:c3 s :: 0':1':s:c -> 0':1':s:c c3 :: c1:c2:c3 -> c1:c2:c3 IF :: true:false -> 0':1':s:c -> 0':1':s:c -> c4:c5 true :: true:false c4 :: c4:c5 false :: true:false c5 :: c4:c5 G :: 0':1':s:c -> 0':1':s:c -> c6:c7:c8 c :: 0':1':s:c -> 0':1':s:c c6 :: c6:c7:c8 -> c6:c7:c8 c7 :: c6:c7:c8 -> c4:c5 -> c1:c2:c3 -> c6:c7:c8 if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c f :: 0':1':s:c -> true:false g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c c8 :: c6:c7:c8 -> c4:c5 -> c6:c7:c8 -> c6:c7:c8 hole_c1:c2:c31_9 :: c1:c2:c3 hole_0':1':s:c2_9 :: 0':1':s:c hole_c4:c53_9 :: c4:c5 hole_true:false4_9 :: true:false hole_c6:c7:c85_9 :: c6:c7:c8 gen_c1:c2:c36_9 :: Nat -> c1:c2:c3 gen_0':1':s:c7_9 :: Nat -> 0':1':s:c gen_c6:c7:c88_9 :: Nat -> c6:c7:c8 Generator Equations: gen_c1:c2:c36_9(0) <=> c1 gen_c1:c2:c36_9(+(x, 1)) <=> c3(gen_c1:c2:c36_9(x)) gen_0':1':s:c7_9(0) <=> 0' gen_0':1':s:c7_9(+(x, 1)) <=> s(gen_0':1':s:c7_9(x)) gen_c6:c7:c88_9(0) <=> hole_c6:c7:c85_9 gen_c6:c7:c88_9(+(x, 1)) <=> c6(gen_c6:c7:c88_9(x)) The following defined symbols remain to be analysed: F, G, f, g They will be analysed ascendingly in the following order: F < G f < G g < G f < g ---------------------------------------- (28) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (29) BOUNDS(n^1, INF) ---------------------------------------- (30) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Types: F :: 0':1':s:c -> c1:c2:c3 0' :: 0':1':s:c c1 :: c1:c2:c3 1' :: 0':1':s:c c2 :: c1:c2:c3 s :: 0':1':s:c -> 0':1':s:c c3 :: c1:c2:c3 -> c1:c2:c3 IF :: true:false -> 0':1':s:c -> 0':1':s:c -> c4:c5 true :: true:false c4 :: c4:c5 false :: true:false c5 :: c4:c5 G :: 0':1':s:c -> 0':1':s:c -> c6:c7:c8 c :: 0':1':s:c -> 0':1':s:c c6 :: c6:c7:c8 -> c6:c7:c8 c7 :: c6:c7:c8 -> c4:c5 -> c1:c2:c3 -> c6:c7:c8 if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c f :: 0':1':s:c -> true:false g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c c8 :: c6:c7:c8 -> c4:c5 -> c6:c7:c8 -> c6:c7:c8 hole_c1:c2:c31_9 :: c1:c2:c3 hole_0':1':s:c2_9 :: 0':1':s:c hole_c4:c53_9 :: c4:c5 hole_true:false4_9 :: true:false hole_c6:c7:c85_9 :: c6:c7:c8 gen_c1:c2:c36_9 :: Nat -> c1:c2:c3 gen_0':1':s:c7_9 :: Nat -> 0':1':s:c gen_c6:c7:c88_9 :: Nat -> c6:c7:c8 Lemmas: F(gen_0':1':s:c7_9(n10_9)) -> gen_c1:c2:c36_9(n10_9), rt in Omega(1 + n10_9) Generator Equations: gen_c1:c2:c36_9(0) <=> c1 gen_c1:c2:c36_9(+(x, 1)) <=> c3(gen_c1:c2:c36_9(x)) gen_0':1':s:c7_9(0) <=> 0' gen_0':1':s:c7_9(+(x, 1)) <=> s(gen_0':1':s:c7_9(x)) gen_c6:c7:c88_9(0) <=> hole_c6:c7:c85_9 gen_c6:c7:c88_9(+(x, 1)) <=> c6(gen_c6:c7:c88_9(x)) The following defined symbols remain to be analysed: f, G, g They will be analysed ascendingly in the following order: f < G g < G f < g ---------------------------------------- (31) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: f(gen_0':1':s:c7_9(n286_9)) -> true, rt in Omega(0) Induction Base: f(gen_0':1':s:c7_9(0)) ->_R^Omega(0) true Induction Step: f(gen_0':1':s:c7_9(+(n286_9, 1))) ->_R^Omega(0) f(gen_0':1':s:c7_9(n286_9)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (32) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, s(z0), s(z1)) -> c4 IF(false, s(z0), s(z1)) -> c5 G(z0, c(z1)) -> c6(G(z0, z1)) G(z0, c(z1)) -> c7(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), F(z0)) G(z0, c(z1)) -> c8(G(z0, if(f(z0), c(g(s(z0), z1)), c(z1))), IF(f(z0), c(g(s(z0), z1)), c(z1)), G(s(z0), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, s(z0), s(z1)) -> s(z0) if(false, s(z0), s(z1)) -> s(z1) g(z0, c(z1)) -> c(g(z0, z1)) g(z0, c(z1)) -> g(z0, if(f(z0), c(g(s(z0), z1)), c(z1))) Types: F :: 0':1':s:c -> c1:c2:c3 0' :: 0':1':s:c c1 :: c1:c2:c3 1' :: 0':1':s:c c2 :: c1:c2:c3 s :: 0':1':s:c -> 0':1':s:c c3 :: c1:c2:c3 -> c1:c2:c3 IF :: true:false -> 0':1':s:c -> 0':1':s:c -> c4:c5 true :: true:false c4 :: c4:c5 false :: true:false c5 :: c4:c5 G :: 0':1':s:c -> 0':1':s:c -> c6:c7:c8 c :: 0':1':s:c -> 0':1':s:c c6 :: c6:c7:c8 -> c6:c7:c8 c7 :: c6:c7:c8 -> c4:c5 -> c1:c2:c3 -> c6:c7:c8 if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c f :: 0':1':s:c -> true:false g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c c8 :: c6:c7:c8 -> c4:c5 -> c6:c7:c8 -> c6:c7:c8 hole_c1:c2:c31_9 :: c1:c2:c3 hole_0':1':s:c2_9 :: 0':1':s:c hole_c4:c53_9 :: c4:c5 hole_true:false4_9 :: true:false hole_c6:c7:c85_9 :: c6:c7:c8 gen_c1:c2:c36_9 :: Nat -> c1:c2:c3 gen_0':1':s:c7_9 :: Nat -> 0':1':s:c gen_c6:c7:c88_9 :: Nat -> c6:c7:c8 Lemmas: F(gen_0':1':s:c7_9(n10_9)) -> gen_c1:c2:c36_9(n10_9), rt in Omega(1 + n10_9) f(gen_0':1':s:c7_9(n286_9)) -> true, rt in Omega(0) Generator Equations: gen_c1:c2:c36_9(0) <=> c1 gen_c1:c2:c36_9(+(x, 1)) <=> c3(gen_c1:c2:c36_9(x)) gen_0':1':s:c7_9(0) <=> 0' gen_0':1':s:c7_9(+(x, 1)) <=> s(gen_0':1':s:c7_9(x)) gen_c6:c7:c88_9(0) <=> hole_c6:c7:c85_9 gen_c6:c7:c88_9(+(x, 1)) <=> c6(gen_c6:c7:c88_9(x)) The following defined symbols remain to be analysed: g, G They will be analysed ascendingly in the following order: g < G