/export/starexec/sandbox/solver/bin/starexec_run_rcdcRelativeAlsoLower /export/starexec/sandbox/benchmark/theBenchmark.xml /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^3)) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^3). (0) DCpxTrs (1) DerivationalComplexityToRuntimeComplexityProof [BOTH BOUNDS(ID, ID), 0 ms] (2) CpxRelTRS (3) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 224 ms] (4) CpxRelTRS (5) CpxTrsToCdtProof [UPPER BOUND(ID), 13 ms] (6) CdtProblem (7) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (8) CdtProblem (9) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (12) CdtProblem (13) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CdtProblem (15) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 129 ms] (16) CdtProblem (17) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 435 ms] (18) CdtProblem (19) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 374 ms] (20) CdtProblem (21) CdtRuleRemovalProof [UPPER BOUND(ADD(n^3)), 1851 ms] (22) CdtProblem (23) CdtRuleRemovalProof [UPPER BOUND(ADD(n^3)), 1672 ms] (24) CdtProblem (25) CdtRuleRemovalProof [UPPER BOUND(ADD(n^3)), 1687 ms] (26) CdtProblem (27) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (28) BOUNDS(1, 1) (29) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (30) CpxRelTRS (31) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (32) typed CpxTrs (33) OrderProof [LOWER BOUND(ID), 0 ms] (34) typed CpxTrs (35) RewriteLemmaProof [LOWER BOUND(ID), 12.8 s] (36) BEST (37) proven lower bound (38) LowerBoundPropagationProof [FINISHED, 0 ms] (39) BOUNDS(n^1, INF) (40) typed CpxTrs (41) RewriteLemmaProof [LOWER BOUND(ID), 57 ms] (42) BOUNDS(1, INF) ---------------------------------------- (0) Obligation: The Derivational Complexity (innermost) of the given DCpxTrs could be proven to be BOUNDS(n^1, n^3). 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: INNERMOST ---------------------------------------- (1) DerivationalComplexityToRuntimeComplexityProof (BOTH BOUNDS(ID, ID)) The following rules have been added to S to convert the given derivational complexity problem to a runtime complexity problem: encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). 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) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (4) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^3). 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) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0) -> 0 encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0 encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: INNERMOST ---------------------------------------- (5) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_sort(z0) -> sort(encArg(z0)) encode_nil -> nil encode_cons(z0, z1) -> cons(encArg(z0), encArg(z1)) encode_insert(z0, z1) -> insert(encArg(z0), encArg(z1)) encode_choose(z0, z1, z2, z3) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_0 -> 0 encode_s(z0) -> s(encArg(z0)) 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: ENCARG(nil) -> c ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(0) -> c2 ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) ENCODE_SORT(z0) -> c7(SORT(encArg(z0)), ENCARG(z0)) ENCODE_NIL -> c8 ENCODE_CONS(z0, z1) -> c9(ENCARG(z0), ENCARG(z1)) ENCODE_INSERT(z0, z1) -> c10(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c11(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) ENCODE_0 -> c12 ENCODE_S(z0) -> c13(ENCARG(z0)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4, encArg_1, encode_sort_1, encode_nil, encode_cons_2, encode_insert_2, encode_choose_4, encode_0, encode_s_1 Defined Pair Symbols: ENCARG_1, ENCODE_SORT_1, ENCODE_NIL, ENCODE_CONS_2, ENCODE_INSERT_2, ENCODE_CHOOSE_4, ENCODE_0, ENCODE_S_1, SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c, c1_2, c2, c3_1, c4_2, c5_3, c6_5, c7_2, c8, c9_2, c10_3, c11_5, c12, c13_1, c14, c15_2, c16, c17_1, c18, c19_1, c20_1 ---------------------------------------- (7) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 2 leading nodes: ENCODE_CONS(z0, z1) -> c9(ENCARG(z0), ENCARG(z1)) ENCODE_S(z0) -> c13(ENCARG(z0)) Removed 4 trailing nodes: ENCODE_0 -> c12 ENCARG(nil) -> c ENCARG(0) -> c2 ENCODE_NIL -> c8 ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_sort(z0) -> sort(encArg(z0)) encode_nil -> nil encode_cons(z0, z1) -> cons(encArg(z0), encArg(z1)) encode_insert(z0, z1) -> insert(encArg(z0), encArg(z1)) encode_choose(z0, z1, z2, z3) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_0 -> 0 encode_s(z0) -> s(encArg(z0)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) ENCODE_SORT(z0) -> c7(SORT(encArg(z0)), ENCARG(z0)) ENCODE_INSERT(z0, z1) -> c10(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c11(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) S tuples: SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4, encArg_1, encode_sort_1, encode_nil, encode_cons_2, encode_insert_2, encode_choose_4, encode_0, encode_s_1 Defined Pair Symbols: ENCARG_1, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4, SORT_1, INSERT_2, CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c7_2, c10_3, c11_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1 ---------------------------------------- (9) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_sort(z0) -> sort(encArg(z0)) encode_nil -> nil encode_cons(z0, z1) -> cons(encArg(z0), encArg(z1)) encode_insert(z0, z1) -> insert(encArg(z0), encArg(z1)) encode_choose(z0, z1, z2, z3) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_0 -> 0 encode_s(z0) -> s(encArg(z0)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_SORT(z0) -> c(ENCARG(z0)) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_INSERT(z0, z1) -> c(ENCARG(z0)) ENCODE_INSERT(z0, z1) -> c(ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z0)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z2)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z3)) S tuples: SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4, encArg_1, encode_sort_1, encode_nil, encode_cons_2, encode_insert_2, encode_choose_4, encode_0, encode_s_1 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (11) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 7 leading nodes: ENCODE_SORT(z0) -> c(ENCARG(z0)) ENCODE_INSERT(z0, z1) -> c(ENCARG(z0)) ENCODE_INSERT(z0, z1) -> c(ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z0)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z1)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z2)) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(ENCARG(z3)) ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_sort(z0) -> sort(encArg(z0)) encode_nil -> nil encode_cons(z0, z1) -> cons(encArg(z0), encArg(z1)) encode_insert(z0, z1) -> insert(encArg(z0), encArg(z1)) encode_choose(z0, z1, z2, z3) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_0 -> 0 encode_s(z0) -> s(encArg(z0)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: sort_1, insert_2, choose_4, encArg_1, encode_sort_1, encode_nil, encode_cons_2, encode_insert_2, encode_choose_4, encode_0, encode_s_1 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (13) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: encode_sort(z0) -> sort(encArg(z0)) encode_nil -> nil encode_cons(z0, z1) -> cons(encArg(z0), encArg(z1)) encode_insert(z0, z1) -> insert(encArg(z0), encArg(z1)) encode_choose(z0, z1, z2, z3) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encode_0 -> 0 encode_s(z0) -> s(encArg(z0)) ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples:none Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (15) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SORT(nil) -> c14 We considered the (Usable) Rules:none And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(CHOOSE(x_1, x_2, x_3, x_4)) = 0 POL(ENCARG(x_1)) = x_1 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = x_2 + x_4 POL(ENCODE_INSERT(x_1, x_2)) = x_1 + x_2 POL(ENCODE_SORT(x_1)) = [1] + x_1 POL(INSERT(x_1, x_2)) = 0 POL(SORT(x_1)) = [1] POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(cons(x_1, x_2)) = x_1 + x_2 POL(cons_choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = [1] + x_1 POL(insert(x_1, x_2)) = [1] + x_1 POL(nil) = [1] POL(s(x_1)) = x_1 POL(sort(x_1)) = [1] ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(nil) -> c14 Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) encArg(nil) -> nil insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) encArg(0) -> 0 encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(s(z0)) -> s(encArg(z0)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) 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] POL(ENCARG(x_1)) = [2] + [2]x_1 + x_1^2 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = [2] + [2]x_1 + [2]x_2 + [2]x_3 + x_4 + [2]x_4^2 + [2]x_3*x_4 + [2]x_2*x_4 + [2]x_1*x_4 + [2]x_1^2 + [2]x_1*x_2 + [2]x_1*x_3 + [2]x_3^2 + [2]x_2*x_3 + [2]x_2^2 POL(ENCODE_INSERT(x_1, x_2)) = [2] + [2]x_1 + [2]x_2 + x_2^2 + x_1*x_2 + x_1^2 POL(ENCODE_SORT(x_1)) = [1] + x_1 + [2]x_1^2 POL(INSERT(x_1, x_2)) = [2] POL(SORT(x_1)) = x_1 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 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(cons_choose(x_1, x_2, x_3, x_4)) = [2] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [2] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = x_1 POL(insert(x_1, x_2)) = [2] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = x_1 POL(sort(x_1)) = x_1 ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(nil) -> c14 INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) encArg(nil) -> nil insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) encArg(0) -> 0 encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(s(z0)) -> s(encArg(z0)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) 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)) = [1] POL(ENCARG(x_1)) = x_1^2 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = [1] + [2]x_1 + [2]x_2 + [2]x_3 + [2]x_4 + [2]x_4^2 + [2]x_3*x_4 + x_2*x_4 + [2]x_1*x_4 + [2]x_1^2 + x_1*x_2 + [2]x_1*x_3 + x_3^2 + [2]x_2*x_3 + [2]x_2^2 POL(ENCODE_INSERT(x_1, x_2)) = [1] + x_1 + [2]x_2 + [2]x_2^2 + [2]x_1*x_2 + [2]x_1^2 POL(ENCODE_SORT(x_1)) = [1] + [2]x_1 + x_1^2 POL(INSERT(x_1, x_2)) = [1] POL(SORT(x_1)) = [2]x_1 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_choose(x_1, x_2, x_3, x_4)) = [2] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [2] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = x_1 POL(insert(x_1, x_2)) = [1] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = x_1 POL(sort(x_1)) = x_1 ---------------------------------------- (20) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) K tuples: SORT(nil) -> c14 INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3))) 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)) -> c20(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)) encArg(nil) -> nil insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) encArg(0) -> 0 encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(s(z0)) -> s(encArg(z0)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) 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)) = x_3 + x_1*x_2 POL(ENCARG(x_1)) = x_1^3 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = x_3 + x_1*x_2 + x_3^3 POL(ENCODE_INSERT(x_1, x_2)) = x_1 + x_1*x_2 POL(ENCODE_SORT(x_1)) = x_1 + x_1^2 POL(INSERT(x_1, x_2)) = x_1 + x_1*x_2 POL(SORT(x_1)) = x_1 + x_1^2 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = x_1 POL(insert(x_1, x_2)) = [1] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = [1] + x_1 POL(sort(x_1)) = x_1 ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) K tuples: SORT(nil) -> c14 INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3))) 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)) -> c19(INSERT(z0, z2)) We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) encArg(nil) -> nil insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) encArg(0) -> 0 encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(s(z0)) -> s(encArg(z0)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(CHOOSE(x_1, x_2, x_3, x_4)) = x_3 + x_1*x_2 POL(ENCARG(x_1)) = x_1^3 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = x_3 + x_1*x_2 + x_1^3 + x_4^3 POL(ENCODE_INSERT(x_1, x_2)) = x_1 + x_1*x_2 POL(ENCODE_SORT(x_1)) = [1] + x_1^2 POL(INSERT(x_1, x_2)) = x_1 + x_1*x_2 POL(SORT(x_1)) = [1] + x_1^2 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = x_1 POL(insert(x_1, x_2)) = [1] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = x_1 POL(sort(x_1)) = x_1 ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples: INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) K tuples: SORT(nil) -> c14 INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (25) CdtRuleRemovalProof (UPPER BOUND(ADD(n^3))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) We considered the (Usable) Rules: choose(z0, cons(z1, z2), 0, s(z3)) -> cons(z1, insert(z0, z2)) encArg(nil) -> nil insert(z0, nil) -> cons(z0, nil) choose(z0, cons(z1, z2), z3, 0) -> cons(z0, cons(z1, z2)) encArg(0) -> 0 encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(s(z0)) -> s(encArg(z0)) sort(nil) -> nil insert(z0, cons(z1, z2)) -> choose(z0, cons(z1, z2), z0, z1) sort(cons(z0, z1)) -> insert(z0, sort(z1)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) choose(z0, cons(z1, z2), s(z3), s(z4)) -> choose(z0, cons(z1, z2), z3, z4) And the Tuples: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) The order we found is given by the following interpretation: Polynomial interpretation : POL(0) = [1] POL(CHOOSE(x_1, x_2, x_3, x_4)) = x_3 + x_1*x_2 POL(ENCARG(x_1)) = x_1^3 POL(ENCODE_CHOOSE(x_1, x_2, x_3, x_4)) = x_3 + x_1*x_2 + x_4^3 POL(ENCODE_INSERT(x_1, x_2)) = [1] + x_1 + x_1*x_2 POL(ENCODE_SORT(x_1)) = x_1 + x_1^2 POL(INSERT(x_1, x_2)) = [1] + x_1 + x_1*x_2 POL(SORT(x_1)) = x_1 + x_1^2 POL(c(x_1)) = x_1 POL(c1(x_1, x_2)) = x_1 + x_2 POL(c14) = 0 POL(c15(x_1, x_2)) = x_1 + x_2 POL(c16) = 0 POL(c17(x_1)) = x_1 POL(c18) = 0 POL(c19(x_1)) = x_1 POL(c20(x_1)) = x_1 POL(c3(x_1)) = x_1 POL(c4(x_1, x_2)) = x_1 + x_2 POL(c5(x_1, x_2, x_3)) = x_1 + x_2 + x_3 POL(c6(x_1, x_2, x_3, x_4, x_5)) = x_1 + x_2 + x_3 + x_4 + x_5 POL(choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 POL(cons(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_choose(x_1, x_2, x_3, x_4)) = [1] + x_1 + x_2 + x_3 + x_4 POL(cons_insert(x_1, x_2)) = [1] + x_1 + x_2 POL(cons_sort(x_1)) = [1] + x_1 POL(encArg(x_1)) = x_1 POL(insert(x_1, x_2)) = [1] + x_1 + x_2 POL(nil) = 0 POL(s(x_1)) = x_1 POL(sort(x_1)) = x_1 ---------------------------------------- (26) Obligation: Complexity Dependency Tuples Problem Rules: encArg(nil) -> nil encArg(cons(z0, z1)) -> cons(encArg(z0), encArg(z1)) encArg(0) -> 0 encArg(s(z0)) -> s(encArg(z0)) encArg(cons_sort(z0)) -> sort(encArg(z0)) encArg(cons_insert(z0, z1)) -> insert(encArg(z0), encArg(z1)) encArg(cons_choose(z0, z1, z2, z3)) -> choose(encArg(z0), encArg(z1), encArg(z2), encArg(z3)) 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: ENCARG(cons(z0, z1)) -> c1(ENCARG(z0), ENCARG(z1)) ENCARG(s(z0)) -> c3(ENCARG(z0)) ENCARG(cons_sort(z0)) -> c4(SORT(encArg(z0)), ENCARG(z0)) ENCARG(cons_insert(z0, z1)) -> c5(INSERT(encArg(z0), encArg(z1)), ENCARG(z0), ENCARG(z1)) ENCARG(cons_choose(z0, z1, z2, z3)) -> c6(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3)), ENCARG(z0), ENCARG(z1), ENCARG(z2), ENCARG(z3)) SORT(nil) -> c14 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) INSERT(z0, nil) -> c16 INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) ENCODE_SORT(z0) -> c(SORT(encArg(z0))) ENCODE_INSERT(z0, z1) -> c(INSERT(encArg(z0), encArg(z1))) ENCODE_CHOOSE(z0, z1, z2, z3) -> c(CHOOSE(encArg(z0), encArg(z1), encArg(z2), encArg(z3))) S tuples:none K tuples: SORT(nil) -> c14 INSERT(z0, nil) -> c16 CHOOSE(z0, cons(z1, z2), z3, 0) -> c18 SORT(cons(z0, z1)) -> c15(INSERT(z0, sort(z1)), SORT(z1)) CHOOSE(z0, cons(z1, z2), s(z3), s(z4)) -> c20(CHOOSE(z0, cons(z1, z2), z3, z4)) CHOOSE(z0, cons(z1, z2), 0, s(z3)) -> c19(INSERT(z0, z2)) INSERT(z0, cons(z1, z2)) -> c17(CHOOSE(z0, cons(z1, z2), z0, z1)) Defined Rule Symbols: encArg_1, sort_1, insert_2, choose_4 Defined Pair Symbols: ENCARG_1, SORT_1, INSERT_2, CHOOSE_4, ENCODE_SORT_1, ENCODE_INSERT_2, ENCODE_CHOOSE_4 Compound Symbols: c1_2, c3_1, c4_2, c5_3, c6_5, c14, c15_2, c16, c17_1, c18, c19_1, c20_1, c_1 ---------------------------------------- (27) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (28) BOUNDS(1, 1) ---------------------------------------- (29) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (30) 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) -> 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) The (relative) TRS S consists of the following rules: encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Rewrite Strategy: INNERMOST ---------------------------------------- (31) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (32) Obligation: Innermost TRS: 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) encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose 0' :: nil:cons:0':s:cons_sort:cons_insert:cons_choose s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encArg :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_0 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose hole_nil:cons:0':s:cons_sort:cons_insert:cons_choose1_5 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5 :: Nat -> nil:cons:0':s:cons_sort:cons_insert:cons_choose ---------------------------------------- (33) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: sort, insert, choose, encArg They will be analysed ascendingly in the following order: insert < sort sort < encArg insert = choose insert < encArg choose < encArg ---------------------------------------- (34) Obligation: Innermost TRS: 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) encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose 0' :: nil:cons:0':s:cons_sort:cons_insert:cons_choose s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encArg :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_0 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose hole_nil:cons:0':s:cons_sort:cons_insert:cons_choose1_5 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5 :: Nat -> nil:cons:0':s:cons_sort:cons_insert:cons_choose Generator Equations: gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(0) <=> nil gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(x, 1)) <=> cons(nil, gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(x)) The following defined symbols remain to be analysed: choose, sort, insert, encArg They will be analysed ascendingly in the following order: insert < sort sort < encArg insert = choose insert < encArg choose < encArg ---------------------------------------- (35) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: sort(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(1, n229_5))) -> *3_5, rt in Omega(n229_5) Induction Base: sort(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(1, 0))) Induction Step: sort(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(1, +(n229_5, 1)))) ->_R^Omega(1) insert(nil, sort(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(1, n229_5)))) ->_IH insert(nil, *3_5) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (36) Complex Obligation (BEST) ---------------------------------------- (37) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: 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) encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose 0' :: nil:cons:0':s:cons_sort:cons_insert:cons_choose s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encArg :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_0 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose hole_nil:cons:0':s:cons_sort:cons_insert:cons_choose1_5 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5 :: Nat -> nil:cons:0':s:cons_sort:cons_insert:cons_choose Generator Equations: gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(0) <=> nil gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(x, 1)) <=> cons(nil, gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(x)) The following defined symbols remain to be analysed: sort, encArg They will be analysed ascendingly in the following order: sort < encArg ---------------------------------------- (38) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (39) BOUNDS(n^1, INF) ---------------------------------------- (40) Obligation: Innermost TRS: 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) encArg(nil) -> nil encArg(cons(x_1, x_2)) -> cons(encArg(x_1), encArg(x_2)) encArg(0') -> 0' encArg(s(x_1)) -> s(encArg(x_1)) encArg(cons_sort(x_1)) -> sort(encArg(x_1)) encArg(cons_insert(x_1, x_2)) -> insert(encArg(x_1), encArg(x_2)) encArg(cons_choose(x_1, x_2, x_3, x_4)) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_sort(x_1) -> sort(encArg(x_1)) encode_nil -> nil encode_cons(x_1, x_2) -> cons(encArg(x_1), encArg(x_2)) encode_insert(x_1, x_2) -> insert(encArg(x_1), encArg(x_2)) encode_choose(x_1, x_2, x_3, x_4) -> choose(encArg(x_1), encArg(x_2), encArg(x_3), encArg(x_4)) encode_0 -> 0' encode_s(x_1) -> s(encArg(x_1)) Types: sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose 0' :: nil:cons:0':s:cons_sort:cons_insert:cons_choose s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encArg :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose cons_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_sort :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_nil :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_cons :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_insert :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_choose :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_0 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose encode_s :: nil:cons:0':s:cons_sort:cons_insert:cons_choose -> nil:cons:0':s:cons_sort:cons_insert:cons_choose hole_nil:cons:0':s:cons_sort:cons_insert:cons_choose1_5 :: nil:cons:0':s:cons_sort:cons_insert:cons_choose gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5 :: Nat -> nil:cons:0':s:cons_sort:cons_insert:cons_choose Lemmas: sort(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(1, n229_5))) -> *3_5, rt in Omega(n229_5) Generator Equations: gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(0) <=> nil gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(x, 1)) <=> cons(nil, gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(x)) The following defined symbols remain to be analysed: encArg ---------------------------------------- (41) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: encArg(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(n154297_5)) -> gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(n154297_5), rt in Omega(0) Induction Base: encArg(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(0)) ->_R^Omega(0) nil Induction Step: encArg(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(+(n154297_5, 1))) ->_R^Omega(0) cons(encArg(nil), encArg(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(n154297_5))) ->_R^Omega(0) cons(nil, encArg(gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(n154297_5))) ->_IH cons(nil, gen_nil:cons:0':s:cons_sort:cons_insert:cons_choose2_5(c154298_5)) We have rt in Omega(1) and sz in O(n). Thus, we have irc_R in Omega(n^0). ---------------------------------------- (42) BOUNDS(1, INF)