WORST_CASE(Omega(n^1),O(n^2)) proof of input_UuAffr0Zp6.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^2). (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) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 64 ms] (8) CdtProblem (9) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 21 ms] (10) CdtProblem (11) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (12) CdtProblem (13) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CdtProblem (15) CdtNarrowingProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CdtProblem (17) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CdtProblem (19) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (20) CdtProblem (21) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (22) CdtProblem (23) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (24) CdtProblem (25) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (26) CdtProblem (27) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (28) CdtProblem (29) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CdtProblem (31) CdtForwardInstantiationProof [BOTH BOUNDS(ID, ID), 0 ms] (32) CdtProblem (33) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 1657 ms] (34) CdtProblem (35) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (36) BOUNDS(1, 1) (37) CpxTrsToCdtProof [BOTH BOUNDS(ID, ID), 0 ms] (38) CdtProblem (39) CdtToCpxRelTrsProof [BOTH BOUNDS(ID, ID), 0 ms] (40) CpxRelTRS (41) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (42) CpxRelTRS (43) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (44) typed CpxTrs (45) OrderProof [LOWER BOUND(ID), 4 ms] (46) typed CpxTrs (47) RewriteLemmaProof [LOWER BOUND(ID), 279 ms] (48) BEST (49) proven lower bound (50) LowerBoundPropagationProof [FINISHED, 0 ms] (51) BOUNDS(n^1, INF) (52) typed CpxTrs (53) RewriteLemmaProof [LOWER BOUND(ID), 0 ms] (54) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (parallel-innermost) of the given CpxTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: f(0) -> true f(1) -> false f(s(x)) -> f(x) if(true, x, y) -> x if(false, x, y) -> y g(s(x), s(y)) -> if(f(x), s(x), s(y)) g(x, c(y)) -> g(x, g(s(c(y)), 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, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) S tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), 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_2, c7_2 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 4 trailing nodes: IF(true, z0, z1) -> c4 F(1) -> c2 F(0) -> c1 IF(false, z0, z1) -> c5 ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) S tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), 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_2, c7_2 ---------------------------------------- (5) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) S tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) K tuples:none Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c7_2, c6_1 ---------------------------------------- (7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. G(s(z0), s(z1)) -> c6(F(z0)) We considered the (Usable) Rules: g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) if(true, z0, z1) -> z0 g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) if(false, z0, z1) -> z1 And the Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(1) = [1] POL(F(x_1)) = 0 POL(G(x_1, x_2)) = [1] + x_1 + x_2 POL(c(x_1)) = [1] + x_1 POL(c3(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(f(x_1)) = [1] POL(false) = [1] POL(g(x_1, x_2)) = 0 POL(if(x_1, x_2, x_3)) = x_2 + x_3 POL(s(x_1)) = 0 POL(true) = [1] ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) S tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c7_2, c6_1 ---------------------------------------- (9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) We considered the (Usable) Rules: g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) if(true, z0, z1) -> z0 g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) if(false, z0, z1) -> z1 And the Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(1) = [1] POL(F(x_1)) = 0 POL(G(x_1, x_2)) = x_1 + x_2 POL(c(x_1)) = [1] + x_1 POL(c3(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(f(x_1)) = [1] POL(false) = [1] POL(g(x_1, x_2)) = 0 POL(if(x_1, x_2, x_3)) = x_2 + x_3 POL(s(x_1)) = 0 POL(true) = [1] ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(z0), s(z1)) -> c6(F(z0)) S tuples: F(s(z0)) -> c3(F(z0)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c7_2, c6_1 ---------------------------------------- (11) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) by G(x0, c(s(z1))) -> c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1))) G(x0, c(c(z1))) -> c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1))) ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(F(z0)) G(x0, c(s(z1))) -> c7(G(x0, if(f(c(s(z1))), s(c(s(z1))), s(z1))), G(s(c(s(z1))), s(z1))) G(x0, c(c(z1))) -> c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1))) S tuples: F(s(z0)) -> c3(F(z0)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_2 ---------------------------------------- (13) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(F(z0)) G(x0, c(c(z1))) -> c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1))) G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) S tuples: F(s(z0)) -> c3(F(z0)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_2, c7_1 ---------------------------------------- (15) CdtNarrowingProof (BOTH BOUNDS(ID, ID)) Use narrowing to replace G(x0, c(c(z1))) -> c7(G(x0, g(s(c(c(z1))), g(s(c(z1)), z1))), G(s(c(c(z1))), c(z1))) by G(x0, c(c(s(z1)))) -> c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1)))) G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(F(z0)) G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) G(x0, c(c(s(z1)))) -> c7(G(x0, g(s(c(c(s(z1)))), if(f(c(s(z1))), s(c(s(z1))), s(z1)))), G(s(c(c(s(z1)))), c(s(z1)))) G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) S tuples: F(s(z0)) -> c3(F(z0)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_1, c7_2 ---------------------------------------- (17) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(s(z0)) -> c3(F(z0)) G(s(z0), s(z1)) -> c6(F(z0)) G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) G(x0, c(c(s(z1)))) -> c7(G(s(c(c(s(z1)))), c(s(z1)))) S tuples: F(s(z0)) -> c3(F(z0)) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: F_1, G_2 Compound Symbols: c3_1, c6_1, c7_1, c7_2 ---------------------------------------- (19) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(z0)) -> c3(F(z0)) by F(s(s(y0))) -> c3(F(s(y0))) ---------------------------------------- (20) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) G(x0, c(c(s(z1)))) -> c7(G(s(c(c(s(z1)))), c(s(z1)))) F(s(s(y0))) -> c3(F(s(y0))) S tuples: F(s(s(y0))) -> c3(F(s(y0))) K tuples: G(s(z0), s(z1)) -> c6(F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c6_1, c7_1, c7_2, c3_1 ---------------------------------------- (21) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(s(z0), s(z1)) -> c6(F(z0)) by G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) G(x0, c(c(s(z1)))) -> c7(G(s(c(c(s(z1)))), c(s(z1)))) F(s(s(y0))) -> c3(F(s(y0))) G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) S tuples: F(s(s(y0))) -> c3(F(s(y0))) K tuples: G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_1, c7_2, c3_1, c6_1 ---------------------------------------- (23) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 2 trailing nodes: G(x0, c(s(z1))) -> c7(G(s(c(s(z1))), s(z1))) G(x0, c(c(s(z1)))) -> c7(G(s(c(c(s(z1)))), c(s(z1)))) ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) F(s(s(y0))) -> c3(F(s(y0))) G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) S tuples: F(s(s(y0))) -> c3(F(s(y0))) K tuples: G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c7_1, c3_1, c6_1 ---------------------------------------- (25) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(x0, c(c(x1))) -> c7(G(s(c(c(x1))), c(x1))) by G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) G(z0, c(c(c(y1)))) -> c7(G(s(c(c(c(y1)))), c(c(y1)))) ---------------------------------------- (26) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) F(s(s(y0))) -> c3(F(s(y0))) G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) G(z0, c(c(c(y1)))) -> c7(G(s(c(c(c(y1)))), c(c(y1)))) S tuples: F(s(s(y0))) -> c3(F(s(y0))) K tuples: G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c3_1, c6_1, c7_1 ---------------------------------------- (27) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace F(s(s(y0))) -> c3(F(s(y0))) by F(s(s(s(y0)))) -> c3(F(s(s(y0)))) ---------------------------------------- (28) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) G(z0, c(c(c(y1)))) -> c7(G(s(c(c(c(y1)))), c(c(y1)))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) S tuples: F(s(s(s(y0)))) -> c3(F(s(s(y0)))) K tuples: G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c6_1, c7_1, c3_1 ---------------------------------------- (29) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(s(s(s(y0))), s(z1)) -> c6(F(s(s(y0)))) by G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) ---------------------------------------- (30) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) G(z0, c(c(c(y1)))) -> c7(G(s(c(c(c(y1)))), c(c(y1)))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) S tuples: F(s(s(s(y0)))) -> c3(F(s(s(y0)))) K tuples: G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c7_1, c3_1, c6_1 ---------------------------------------- (31) CdtForwardInstantiationProof (BOTH BOUNDS(ID, ID)) Use forward instantiation to replace G(z0, c(c(c(y1)))) -> c7(G(s(c(c(c(y1)))), c(c(y1)))) by G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) G(z0, c(c(c(c(c(y1)))))) -> c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1)))))) ---------------------------------------- (32) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) G(z0, c(c(c(c(c(y1)))))) -> c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1)))))) S tuples: F(s(s(s(y0)))) -> c3(F(s(s(y0)))) K tuples: G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c7_1, c3_1, c6_1 ---------------------------------------- (33) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. F(s(s(s(y0)))) -> c3(F(s(s(y0)))) We considered the (Usable) Rules:none And the Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) G(z0, c(c(c(c(c(y1)))))) -> c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1)))))) The order we found is given by the following interpretation: Matrix interpretation [MATRO]: Non-tuple symbols: <<< M( s_1(x_1) ) = [[0], [2]] + [[1, 4], [0, 1]] * x_1 >>> <<< M( true ) = [[0], [0]] >>> <<< M( c_1(x_1) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 >>> <<< M( f_1(x_1) ) = [[4], [0]] + [[0, 0], [0, 4]] * x_1 >>> <<< M( if_3(x_1, ..., x_3) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 + [[0, 0], [0, 0]] * x_3 >>> <<< M( 0 ) = [[0], [2]] >>> <<< M( 1 ) = [[0], [4]] >>> <<< M( g_2(x_1, x_2) ) = [[0], [0]] + [[0, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 >>> <<< M( false ) = [[1], [4]] >>> Tuple symbols: <<< M( G_2(x_1, x_2) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[0, 0], [0, 0]] * x_2 >>> <<< M( c6_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 >>> <<< M( c3_1(x_1) ) = [[0], [2]] + [[1, 2], [0, 1]] * x_1 >>> <<< M( F_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 1]] * x_1 >>> <<< M( c7_2(x_1, x_2) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 + [[1, 0], [0, 0]] * x_2 >>> <<< M( c7_1(x_1) ) = [[0], [0]] + [[1, 0], [0, 0]] * x_1 >>> Matrix type: We used a basic matrix type which is not further parametrizeable. As matrix orders are CE-compatible, we used usable rules w.r.t. argument filtering in the order. ---------------------------------------- (34) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: G(x0, c(c(c(z1)))) -> c7(G(x0, g(s(c(c(c(z1)))), g(s(c(c(z1))), g(s(c(z1)), z1)))), G(s(c(c(c(z1)))), c(c(z1)))) G(z0, c(c(c(c(y1))))) -> c7(G(s(c(c(c(c(y1))))), c(c(c(y1))))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) G(z0, c(c(c(c(c(y1)))))) -> c7(G(s(c(c(c(c(c(y1)))))), c(c(c(c(y1)))))) S tuples:none K tuples: G(s(s(s(s(y0)))), s(z1)) -> c6(F(s(s(s(y0))))) F(s(s(s(y0)))) -> c3(F(s(s(y0)))) Defined Rule Symbols: f_1, if_3, g_2 Defined Pair Symbols: G_2, F_1 Compound Symbols: c7_2, c7_1, c3_1, c6_1 ---------------------------------------- (35) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (36) BOUNDS(1, 1) ---------------------------------------- (37) CpxTrsToCdtProof (BOTH BOUNDS(ID, ID)) Converted Cpx (relative) TRS with rewrite strategy PARALLEL_INNERMOST to CDT ---------------------------------------- (38) Obligation: Complexity Dependency Tuples Problem Rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) S tuples: F(0) -> c1 F(1) -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), 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_2, c7_2 ---------------------------------------- (39) CdtToCpxRelTrsProof (BOTH BOUNDS(ID, ID)) Converted S to standard rules, and D \ S as well as R to relative rules. ---------------------------------------- (40) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(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, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) The (relative) TRS S consists of the following rules: f(0) -> true f(1) -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (41) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (42) 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, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) The (relative) TRS S consists of the following rules: f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), z1)) Rewrite Strategy: INNERMOST ---------------------------------------- (43) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (44) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), 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 c6 :: c4:c5 -> c1:c2:c3 -> c6:c7 f :: 0':1':s:c -> true:false c :: 0':1':s:c -> 0':1':s:c c7 :: c6:c7 -> c6:c7 -> c6:c7 g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c hole_c1:c2:c31_8 :: c1:c2:c3 hole_0':1':s:c2_8 :: 0':1':s:c hole_c4:c53_8 :: c4:c5 hole_true:false4_8 :: true:false hole_c6:c75_8 :: c6:c7 gen_c1:c2:c36_8 :: Nat -> c1:c2:c3 gen_0':1':s:c7_8 :: Nat -> 0':1':s:c gen_c6:c78_8 :: Nat -> c6:c7 ---------------------------------------- (45) 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 ---------------------------------------- (46) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), 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 c6 :: c4:c5 -> c1:c2:c3 -> c6:c7 f :: 0':1':s:c -> true:false c :: 0':1':s:c -> 0':1':s:c c7 :: c6:c7 -> c6:c7 -> c6:c7 g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c hole_c1:c2:c31_8 :: c1:c2:c3 hole_0':1':s:c2_8 :: 0':1':s:c hole_c4:c53_8 :: c4:c5 hole_true:false4_8 :: true:false hole_c6:c75_8 :: c6:c7 gen_c1:c2:c36_8 :: Nat -> c1:c2:c3 gen_0':1':s:c7_8 :: Nat -> 0':1':s:c gen_c6:c78_8 :: Nat -> c6:c7 Generator Equations: gen_c1:c2:c36_8(0) <=> c1 gen_c1:c2:c36_8(+(x, 1)) <=> c3(gen_c1:c2:c36_8(x)) gen_0':1':s:c7_8(0) <=> 0' gen_0':1':s:c7_8(+(x, 1)) <=> s(gen_0':1':s:c7_8(x)) gen_c6:c78_8(0) <=> c6(c4, c1) gen_c6:c78_8(+(x, 1)) <=> c7(c6(c4, c1), gen_c6:c78_8(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 ---------------------------------------- (47) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: F(gen_0':1':s:c7_8(n10_8)) -> gen_c1:c2:c36_8(n10_8), rt in Omega(1 + n10_8) Induction Base: F(gen_0':1':s:c7_8(0)) ->_R^Omega(1) c1 Induction Step: F(gen_0':1':s:c7_8(+(n10_8, 1))) ->_R^Omega(1) c3(F(gen_0':1':s:c7_8(n10_8))) ->_IH c3(gen_c1:c2:c36_8(c11_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (48) Complex Obligation (BEST) ---------------------------------------- (49) 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, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), 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 c6 :: c4:c5 -> c1:c2:c3 -> c6:c7 f :: 0':1':s:c -> true:false c :: 0':1':s:c -> 0':1':s:c c7 :: c6:c7 -> c6:c7 -> c6:c7 g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c hole_c1:c2:c31_8 :: c1:c2:c3 hole_0':1':s:c2_8 :: 0':1':s:c hole_c4:c53_8 :: c4:c5 hole_true:false4_8 :: true:false hole_c6:c75_8 :: c6:c7 gen_c1:c2:c36_8 :: Nat -> c1:c2:c3 gen_0':1':s:c7_8 :: Nat -> 0':1':s:c gen_c6:c78_8 :: Nat -> c6:c7 Generator Equations: gen_c1:c2:c36_8(0) <=> c1 gen_c1:c2:c36_8(+(x, 1)) <=> c3(gen_c1:c2:c36_8(x)) gen_0':1':s:c7_8(0) <=> 0' gen_0':1':s:c7_8(+(x, 1)) <=> s(gen_0':1':s:c7_8(x)) gen_c6:c78_8(0) <=> c6(c4, c1) gen_c6:c78_8(+(x, 1)) <=> c7(c6(c4, c1), gen_c6:c78_8(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 ---------------------------------------- (50) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (51) BOUNDS(n^1, INF) ---------------------------------------- (52) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), 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 c6 :: c4:c5 -> c1:c2:c3 -> c6:c7 f :: 0':1':s:c -> true:false c :: 0':1':s:c -> 0':1':s:c c7 :: c6:c7 -> c6:c7 -> c6:c7 g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c hole_c1:c2:c31_8 :: c1:c2:c3 hole_0':1':s:c2_8 :: 0':1':s:c hole_c4:c53_8 :: c4:c5 hole_true:false4_8 :: true:false hole_c6:c75_8 :: c6:c7 gen_c1:c2:c36_8 :: Nat -> c1:c2:c3 gen_0':1':s:c7_8 :: Nat -> 0':1':s:c gen_c6:c78_8 :: Nat -> c6:c7 Lemmas: F(gen_0':1':s:c7_8(n10_8)) -> gen_c1:c2:c36_8(n10_8), rt in Omega(1 + n10_8) Generator Equations: gen_c1:c2:c36_8(0) <=> c1 gen_c1:c2:c36_8(+(x, 1)) <=> c3(gen_c1:c2:c36_8(x)) gen_0':1':s:c7_8(0) <=> 0' gen_0':1':s:c7_8(+(x, 1)) <=> s(gen_0':1':s:c7_8(x)) gen_c6:c78_8(0) <=> c6(c4, c1) gen_c6:c78_8(+(x, 1)) <=> c7(c6(c4, c1), gen_c6:c78_8(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 ---------------------------------------- (53) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: f(gen_0':1':s:c7_8(n282_8)) -> true, rt in Omega(0) Induction Base: f(gen_0':1':s:c7_8(0)) ->_R^Omega(0) true Induction Step: f(gen_0':1':s:c7_8(+(n282_8, 1))) ->_R^Omega(0) f(gen_0':1':s:c7_8(n282_8)) ->_IH true We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (54) Obligation: Innermost TRS: Rules: F(0') -> c1 F(1') -> c2 F(s(z0)) -> c3(F(z0)) IF(true, z0, z1) -> c4 IF(false, z0, z1) -> c5 G(s(z0), s(z1)) -> c6(IF(f(z0), s(z0), s(z1)), F(z0)) G(z0, c(z1)) -> c7(G(z0, g(s(c(z1)), z1)), G(s(c(z1)), z1)) f(0') -> true f(1') -> false f(s(z0)) -> f(z0) if(true, z0, z1) -> z0 if(false, z0, z1) -> z1 g(s(z0), s(z1)) -> if(f(z0), s(z0), s(z1)) g(z0, c(z1)) -> g(z0, g(s(c(z1)), 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 c6 :: c4:c5 -> c1:c2:c3 -> c6:c7 f :: 0':1':s:c -> true:false c :: 0':1':s:c -> 0':1':s:c c7 :: c6:c7 -> c6:c7 -> c6:c7 g :: 0':1':s:c -> 0':1':s:c -> 0':1':s:c if :: true:false -> 0':1':s:c -> 0':1':s:c -> 0':1':s:c hole_c1:c2:c31_8 :: c1:c2:c3 hole_0':1':s:c2_8 :: 0':1':s:c hole_c4:c53_8 :: c4:c5 hole_true:false4_8 :: true:false hole_c6:c75_8 :: c6:c7 gen_c1:c2:c36_8 :: Nat -> c1:c2:c3 gen_0':1':s:c7_8 :: Nat -> 0':1':s:c gen_c6:c78_8 :: Nat -> c6:c7 Lemmas: F(gen_0':1':s:c7_8(n10_8)) -> gen_c1:c2:c36_8(n10_8), rt in Omega(1 + n10_8) f(gen_0':1':s:c7_8(n282_8)) -> true, rt in Omega(0) Generator Equations: gen_c1:c2:c36_8(0) <=> c1 gen_c1:c2:c36_8(+(x, 1)) <=> c3(gen_c1:c2:c36_8(x)) gen_0':1':s:c7_8(0) <=> 0' gen_0':1':s:c7_8(+(x, 1)) <=> s(gen_0':1':s:c7_8(x)) gen_c6:c78_8(0) <=> c6(c4, c1) gen_c6:c78_8(+(x, 1)) <=> c7(c6(c4, c1), gen_c6:c78_8(x)) The following defined symbols remain to be analysed: g, G They will be analysed ascendingly in the following order: g < G