WORST_CASE(Omega(n^1),O(n^2)) proof of input_RMnMJy4zPz.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) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 89 ms] (6) CdtProblem (7) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 82 ms] (8) CdtProblem (9) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 63 ms] (12) CdtProblem (13) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (14) BOUNDS(1, 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), 8 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 558 ms] (26) typed CpxTrs (27) RewriteLemmaProof [LOWER BOUND(ID), 497 ms] (28) typed CpxTrs (29) RewriteLemmaProof [LOWER BOUND(ID), 90 ms] (30) BEST (31) proven lower bound (32) LowerBoundPropagationProof [FINISHED, 0 ms] (33) BOUNDS(n^1, INF) (34) 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: sort(nil) -> nil sort(cons(x, y)) -> insert(x, sort(y)) insert(x, nil) -> cons(x, nil) insert(x, cons(v, w)) -> choose(x, cons(v, w), x, v) choose(x, cons(v, w), y, 0) -> cons(x, cons(v, w)) choose(x, cons(v, w), 0, s(z)) -> cons(v, insert(x, w)) choose(x, cons(v, w), s(y), s(z)) -> choose(x, cons(v, w), y, z) 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: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c, c1_2, c2, c3_1, c4, c5_1, c6_1 ---------------------------------------- (3) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 3 trailing nodes: CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 INSERT(z0, nil) -> c2 SORT(nil) -> c ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c5_1, c6_1 ---------------------------------------- (5) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) We considered the (Usable) Rules:none And the Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [3] POL(CHOOSE(x_1, x_2, x_3, x_4)) = 0 POL(INSERT(x_1, x_2)) = 0 POL(SORT(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(choose(x_1, x_2, x_3, x_4)) = [3] + [3]x_1 + [3]x_4 POL(cons(x_1, x_2)) = [1] + x_2 POL(insert(x_1, x_2)) = [3] + [3]x_1 POL(nil) = [3] POL(s(x_1)) = x_1 POL(sort(x_1)) = [3] + [3]x_1 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c5_1, c6_1 ---------------------------------------- (7) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(CHOOSE(x_1, x_2, x_3, x_4)) = [2]x_2 POL(INSERT(x_1, x_2)) = [2]x_2 POL(SORT(x_1)) = [2]x_1^2 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_2 POL(cons(x_1, x_2)) = [1] + x_2 POL(insert(x_1, x_2)) = [1] + x_2 POL(nil) = 0 POL(s(x_1)) = 0 POL(sort(x_1)) = x_1 ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c5_1, c6_1 ---------------------------------------- (9) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c5_1, c6_1 ---------------------------------------- (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = 0 POL(CHOOSE(x_1, x_2, x_3, x_4)) = [2]x_3 + x_1*x_2 POL(INSERT(x_1, x_2)) = [2]x_1 + x_1*x_2 POL(SORT(x_1)) = [2]x_1^2 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c3(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(choose(x_1, x_2, x_3, x_4)) = [2] + x_1 + x_2 POL(cons(x_1, x_2)) = [2] + x_1 + x_2 POL(insert(x_1, x_2)) = [2] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = [2] + x_1 POL(sort(x_1)) = [2] + x_1 ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples:none K tuples: SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c5_1, c6_1 ---------------------------------------- (13) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (14) BOUNDS(1, 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: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Tuples: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4 Defined Pair Symbols: SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c, c1_2, c2, c3_1, c4, c5_1, c6_1 ---------------------------------------- (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: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c4 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) The (relative) TRS S consists of the following rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) 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: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) The (relative) TRS S consists of the following rules: sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Rewrite Strategy: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Inferred types. ---------------------------------------- (22) Obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 ---------------------------------------- (23) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: SORT, INSERT, sort, CHOOSE, insert, choose They will be analysed ascendingly in the following order: INSERT < SORT sort < SORT INSERT = CHOOSE insert < sort insert = choose ---------------------------------------- (24) Obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 Generator Equations: gen_c:c16_7(0) <=> c gen_c:c16_7(+(x, 1)) <=> c1(c2, gen_c:c16_7(x)) gen_nil:cons7_7(0) <=> nil gen_nil:cons7_7(+(x, 1)) <=> cons(0', gen_nil:cons7_7(x)) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c4:c5:c69_7(0) <=> c4 gen_c4:c5:c69_7(+(x, 1)) <=> c6(gen_c4:c5:c69_7(x)) The following defined symbols remain to be analysed: choose, SORT, INSERT, sort, CHOOSE, insert They will be analysed ascendingly in the following order: INSERT < SORT sort < SORT INSERT = CHOOSE insert < sort insert = choose ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) -> cons(gen_0':s8_7(a), gen_nil:cons7_7(1)), rt in Omega(0) Induction Base: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(0), gen_0':s8_7(0)) ->_R^Omega(0) cons(gen_0':s8_7(a), cons(0', gen_nil:cons7_7(0))) Induction Step: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(+(n11_7, 1)), gen_0':s8_7(+(n11_7, 1))) ->_R^Omega(0) choose(gen_0':s8_7(a), cons(0', gen_nil:cons7_7(0)), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) ->_IH cons(gen_0':s8_7(a), gen_nil:cons7_7(1)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (26) Obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 Lemmas: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) -> cons(gen_0':s8_7(a), gen_nil:cons7_7(1)), rt in Omega(0) Generator Equations: gen_c:c16_7(0) <=> c gen_c:c16_7(+(x, 1)) <=> c1(c2, gen_c:c16_7(x)) gen_nil:cons7_7(0) <=> nil gen_nil:cons7_7(+(x, 1)) <=> cons(0', gen_nil:cons7_7(x)) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c4:c5:c69_7(0) <=> c4 gen_c4:c5:c69_7(+(x, 1)) <=> c6(gen_c4:c5:c69_7(x)) The following defined symbols remain to be analysed: insert, SORT, INSERT, sort, CHOOSE They will be analysed ascendingly in the following order: INSERT < SORT sort < SORT INSERT = CHOOSE insert < sort insert = choose ---------------------------------------- (27) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: sort(gen_nil:cons7_7(n5274_7)) -> *10_7, rt in Omega(0) Induction Base: sort(gen_nil:cons7_7(0)) Induction Step: sort(gen_nil:cons7_7(+(n5274_7, 1))) ->_R^Omega(0) insert(0', sort(gen_nil:cons7_7(n5274_7))) ->_IH insert(0', *10_7) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (28) Obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 Lemmas: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) -> cons(gen_0':s8_7(a), gen_nil:cons7_7(1)), rt in Omega(0) sort(gen_nil:cons7_7(n5274_7)) -> *10_7, rt in Omega(0) Generator Equations: gen_c:c16_7(0) <=> c gen_c:c16_7(+(x, 1)) <=> c1(c2, gen_c:c16_7(x)) gen_nil:cons7_7(0) <=> nil gen_nil:cons7_7(+(x, 1)) <=> cons(0', gen_nil:cons7_7(x)) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c4:c5:c69_7(0) <=> c4 gen_c4:c5:c69_7(+(x, 1)) <=> c6(gen_c4:c5:c69_7(x)) The following defined symbols remain to be analysed: CHOOSE, SORT, INSERT They will be analysed ascendingly in the following order: INSERT < SORT INSERT = CHOOSE ---------------------------------------- (29) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: CHOOSE(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n9351_7), gen_0':s8_7(n9351_7)) -> gen_c4:c5:c69_7(n9351_7), rt in Omega(1 + n9351_7) Induction Base: CHOOSE(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(0), gen_0':s8_7(0)) ->_R^Omega(1) c4 Induction Step: CHOOSE(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(+(n9351_7, 1)), gen_0':s8_7(+(n9351_7, 1))) ->_R^Omega(1) c6(CHOOSE(gen_0':s8_7(a), cons(0', gen_nil:cons7_7(0)), gen_0':s8_7(n9351_7), gen_0':s8_7(n9351_7))) ->_IH c6(gen_c4:c5:c69_7(c9352_7)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (30) Complex Obligation (BEST) ---------------------------------------- (31) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 Lemmas: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) -> cons(gen_0':s8_7(a), gen_nil:cons7_7(1)), rt in Omega(0) sort(gen_nil:cons7_7(n5274_7)) -> *10_7, rt in Omega(0) Generator Equations: gen_c:c16_7(0) <=> c gen_c:c16_7(+(x, 1)) <=> c1(c2, gen_c:c16_7(x)) gen_nil:cons7_7(0) <=> nil gen_nil:cons7_7(+(x, 1)) <=> cons(0', gen_nil:cons7_7(x)) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c4:c5:c69_7(0) <=> c4 gen_c4:c5:c69_7(+(x, 1)) <=> c6(gen_c4:c5:c69_7(x)) The following defined symbols remain to be analysed: CHOOSE, SORT, INSERT They will be analysed ascendingly in the following order: INSERT < SORT INSERT = CHOOSE ---------------------------------------- (32) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (33) BOUNDS(n^1, INF) ---------------------------------------- (34) Obligation: Innermost TRS: Rules: SORT(nil) -> c SORT(cons(z0, z1)) -> c1(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c2 INSERT(z0, cons(z1, z2)) -> c3(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0') -> c4 CHOOSE(z0, cons(z1, z2), 0', s(z3)) -> c5(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c6(CHOOSE(z0, cons(z1, z2), z3, z4)) sort(nil) -> nil sort(cons(z0, z1)) -> insert(z0, sort(z1)) insert(z0, nil) -> cons(z0, nil) insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) choose(z0, cons(z1, z2), z3, 0') -> cons(z0, cons(z1, z2)) choose(z0, cons(z1, z2), 0', s(z3)) -> cons(z1, insert(z0, z2)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) Types: SORT :: nil:cons -> c:c1 nil :: nil:cons c :: c:c1 cons :: 0':s -> nil:cons -> nil:cons c1 :: c2:c3 -> c:c1 -> c:c1 INSERT :: 0':s -> nil:cons -> c2:c3 sort :: nil:cons -> nil:cons c2 :: c2:c3 c3 :: c4:c5:c6 -> c2:c3 CHOOSE :: 0':s -> nil:cons -> 0':s -> 0':s -> c4:c5:c6 0' :: 0':s c4 :: c4:c5:c6 s :: 0':s -> 0':s c5 :: c2:c3 -> c4:c5:c6 c6 :: c4:c5:c6 -> c4:c5:c6 insert :: 0':s -> nil:cons -> nil:cons choose :: 0':s -> nil:cons -> 0':s -> 0':s -> nil:cons hole_c:c11_7 :: c:c1 hole_nil:cons2_7 :: nil:cons hole_0':s3_7 :: 0':s hole_c2:c34_7 :: c2:c3 hole_c4:c5:c65_7 :: c4:c5:c6 gen_c:c16_7 :: Nat -> c:c1 gen_nil:cons7_7 :: Nat -> nil:cons gen_0':s8_7 :: Nat -> 0':s gen_c4:c5:c69_7 :: Nat -> c4:c5:c6 Lemmas: choose(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n11_7), gen_0':s8_7(n11_7)) -> cons(gen_0':s8_7(a), gen_nil:cons7_7(1)), rt in Omega(0) sort(gen_nil:cons7_7(n5274_7)) -> *10_7, rt in Omega(0) CHOOSE(gen_0':s8_7(a), gen_nil:cons7_7(1), gen_0':s8_7(n9351_7), gen_0':s8_7(n9351_7)) -> gen_c4:c5:c69_7(n9351_7), rt in Omega(1 + n9351_7) Generator Equations: gen_c:c16_7(0) <=> c gen_c:c16_7(+(x, 1)) <=> c1(c2, gen_c:c16_7(x)) gen_nil:cons7_7(0) <=> nil gen_nil:cons7_7(+(x, 1)) <=> cons(0', gen_nil:cons7_7(x)) gen_0':s8_7(0) <=> 0' gen_0':s8_7(+(x, 1)) <=> s(gen_0':s8_7(x)) gen_c4:c5:c69_7(0) <=> c4 gen_c4:c5:c69_7(+(x, 1)) <=> c6(gen_c4:c5:c69_7(x)) The following defined symbols remain to be analysed: INSERT, SORT They will be analysed ascendingly in the following order: INSERT < SORT INSERT = CHOOSE