WORST_CASE(Omega(n^1),O(n^1)) proof of /export/starexec/sandbox/benchmark/theBenchmark.trs # AProVE Commit ID: c69e44bd14796315568835c1ffa2502984884775 mhark 20210624 unpublished The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 479 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 82 ms] (10) CdtProblem (11) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 32 ms] (12) CdtProblem (13) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 28 ms] (14) CdtProblem (15) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (16) BOUNDS(1, 1) (17) RenamingProof [BOTH BOUNDS(ID, ID), 0 ms] (18) CpxRelTRS (19) SlicingProof [LOWER BOUND(ID), 0 ms] (20) CpxRelTRS (21) TypeInferenceProof [BOTH BOUNDS(ID, ID), 0 ms] (22) typed CpxTrs (23) OrderProof [LOWER BOUND(ID), 0 ms] (24) typed CpxTrs (25) RewriteLemmaProof [LOWER BOUND(ID), 286 ms] (26) BEST (27) proven lower bound (28) LowerBoundPropagationProof [FINISHED, 0 ms] (29) BOUNDS(n^1, INF) (30) typed CpxTrs ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) The (relative) TRS S consists of the following rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) Rewrite Strategy: INNERMOST ---------------------------------------- (1) SInnermostTerminationProof (BOTH CONCRETE BOUNDS(ID, ID)) proved innermost termination of relative rules ---------------------------------------- (2) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^1). The TRS R consists of the following rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) The (relative) TRS S consists of the following rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) Rewrite Strategy: INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) Tuples: MSORT'(nil) -> c8 MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, nil) -> c10 MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, nil) -> c12 DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(nil) -> c14 MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, nil) -> c17 MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, nil) -> c20 DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples: MSORT''(nil) -> c14 MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, nil) -> c17 MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, nil) -> c20 DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) K tuples:none Defined Rule Symbols: MSORT_1, MIN_2, DEL_2, msort_1, min_2, del_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c8, c9_4, c10, c11_2, c12, c13_1, c14, c15_1, c16_6, c17, c18_1, c19_1, c20, c21_1 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing nodes: DEL'(z0, nil) -> c12 MSORT'(nil) -> c8 MIN'(z0, nil) -> c10 MSORT''(nil) -> c14 MIN''(z0, nil) -> c17 DEL''(z0, nil) -> c20 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples: MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) K tuples:none Defined Rule Symbols: MSORT_1, MIN_2, DEL_2, msort_1, min_2, del_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c9_4, c11_2, c13_1, c15_1, c16_6, c18_1, c19_1, c21_1 ---------------------------------------- (7) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) del(z0, nil) -> nil min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples: MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) K tuples:none Defined Rule Symbols: del_2, min_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c9_4, c11_2, c13_1, c15_1, c16_6, c18_1, c19_1, c21_1 ---------------------------------------- (9) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) We considered the (Usable) Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) And the Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) The order we found is given by the following interpretation: Polynomial interpretation : POL(.(x_1, x_2)) = [1] + x_1 + x_2 POL(<=(x_1, x_2)) = x_1 POL(=(x_1, x_2)) = 0 POL(DEL'(x_1, x_2)) = [1] + x_1 POL(DEL''(x_1, x_2)) = 0 POL(MIN'(x_1, x_2)) = 0 POL(MIN''(x_1, x_2)) = x_2 POL(MSORT'(x_1)) = x_1 POL(MSORT''(x_1)) = [1] + x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1, x_2, x_3, x_4, x_5, x_6)) = x_1 + x_2 + x_3 + x_4 + x_5 + x_6 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c9(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(del(x_1, x_2)) = 0 POL(if(x_1, x_2, x_3)) = x_1 POL(min(x_1, x_2)) = x_1 POL(nil) = 0 ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) del(z0, nil) -> nil min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples: MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) K tuples: MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) Defined Rule Symbols: del_2, min_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c9_4, c11_2, c13_1, c15_1, c16_6, c18_1, c19_1, c21_1 ---------------------------------------- (11) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) We considered the (Usable) Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) And the Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) The order we found is given by the following interpretation: Polynomial interpretation : POL(.(x_1, x_2)) = [1] + x_1 + x_2 POL(<=(x_1, x_2)) = [1] + x_1 + x_2 POL(=(x_1, x_2)) = 0 POL(DEL'(x_1, x_2)) = x_1 POL(DEL''(x_1, x_2)) = 0 POL(MIN'(x_1, x_2)) = 0 POL(MIN''(x_1, x_2)) = 0 POL(MSORT'(x_1)) = x_1 POL(MSORT''(x_1)) = [1] + x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1, x_2, x_3, x_4, x_5, x_6)) = x_1 + x_2 + x_3 + x_4 + x_5 + x_6 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c9(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(del(x_1, x_2)) = 0 POL(if(x_1, x_2, x_3)) = x_1 POL(min(x_1, x_2)) = x_1 + x_2 POL(nil) = 0 ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) del(z0, nil) -> nil min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples: DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) K tuples: MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) Defined Rule Symbols: del_2, min_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c9_4, c11_2, c13_1, c15_1, c16_6, c18_1, c19_1, c21_1 ---------------------------------------- (13) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) We considered the (Usable) Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) And the Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) The order we found is given by the following interpretation: Polynomial interpretation : POL(.(x_1, x_2)) = [1] + x_1 + x_2 POL(<=(x_1, x_2)) = [1] + x_1 + x_2 POL(=(x_1, x_2)) = 0 POL(DEL'(x_1, x_2)) = 0 POL(DEL''(x_1, x_2)) = x_2 POL(MIN'(x_1, x_2)) = 0 POL(MIN''(x_1, x_2)) = 0 POL(MSORT'(x_1)) = x_1 POL(MSORT''(x_1)) = [1] + x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c13(x_1)) = x_1 POL(c15(x_1)) = x_1 POL(c16(x_1, x_2, x_3, x_4, x_5, x_6)) = x_1 + x_2 + x_3 + x_4 + x_5 + x_6 POL(c18(x_1)) = x_1 POL(c19(x_1)) = x_1 POL(c21(x_1)) = x_1 POL(c9(x_1, x_2, x_3, x_4)) = x_1 + x_2 + x_3 + x_4 POL(del(x_1, x_2)) = 0 POL(if(x_1, x_2, x_3)) = x_1 POL(min(x_1, x_2)) = [1] + x_1 + x_2 POL(nil) = 0 ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: del(z0, .(z1, z2)) -> if(=(z0, z1), z2, .(z1, del(z0, z2))) del(z0, nil) -> nil min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) Tuples: MSORT'(.(z0, z1)) -> c9(MIN'(z0, z1), MSORT'(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1)) MIN'(z0, .(z1, z2)) -> c11(MIN'(z0, z2), MIN'(z1, z2)) DEL'(z0, .(z1, z2)) -> c13(DEL'(z0, z2)) MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) S tuples:none K tuples: MSORT''(.(z0, z1)) -> c15(MIN''(z0, z1)) MIN''(z0, .(z1, z2)) -> c18(MIN''(z0, z2)) MIN''(z0, .(z1, z2)) -> c19(MIN''(z1, z2)) MSORT''(.(z0, z1)) -> c16(MSORT''(del(min(z0, z1), .(z0, z1))), DEL'(min(z0, z1), .(z0, z1)), MIN'(z0, z1), DEL''(min(z0, z1), .(z0, z1)), MIN'(z0, z1), MIN''(z0, z1)) DEL''(z0, .(z1, z2)) -> c21(DEL''(z0, z2)) Defined Rule Symbols: del_2, min_2 Defined Pair Symbols: MSORT'_1, MIN'_2, DEL'_2, MSORT''_1, MIN''_2, DEL''_2 Compound Symbols: c9_4, c11_2, c13_1, c15_1, c16_6, c18_1, c19_1, c21_1 ---------------------------------------- (15) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (16) BOUNDS(1, 1) ---------------------------------------- (17) RenamingProof (BOTH BOUNDS(ID, ID)) Renamed function symbols to avoid clashes with predefined symbol. ---------------------------------------- (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: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z0, z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z0, z1)) MIN(z0, nil) -> c3 MIN(z0, .(z1, z2)) -> c4(MIN(z0, z2)) MIN(z0, .(z1, z2)) -> c5(MIN(z1, z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) The (relative) TRS S consists of the following rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(<=(z0, z1), min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(='(z0, z1), z2, .(z1, del(z0, z2))) Rewrite Strategy: INNERMOST ---------------------------------------- (19) SlicingProof (LOWER BOUND(ID)) Sliced the following arguments: MIN/0 if/0 <=/0 <=/1 ='/0 ='/1 ---------------------------------------- (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: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z1)) MIN(nil) -> c3 MIN(.(z1, z2)) -> c4(MIN(z2)) MIN(.(z1, z2)) -> c5(MIN(z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) The (relative) TRS S consists of the following rules: msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(z2, .(z1, del(z0, z2))) Rewrite Strategy: INNERMOST ---------------------------------------- (21) TypeInferenceProof (BOTH BOUNDS(ID, ID)) Infered types. ---------------------------------------- (22) Obligation: Innermost TRS: Rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z1)) MIN(nil) -> c3 MIN(.(z1, z2)) -> c4(MIN(z2)) MIN(.(z1, z2)) -> c5(MIN(z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(z2, .(z1, del(z0, z2))) Types: MSORT :: nil:.:if -> c:c1:c2 nil :: nil:.:if c :: c:c1:c2 . :: nil:.:if -> nil:.:if -> nil:.:if c1 :: c3:c4:c5 -> c:c1:c2 MIN :: nil:.:if -> c3:c4:c5 c2 :: c:c1:c2 -> c6:c7 -> c3:c4:c5 -> c:c1:c2 del :: nil:.:if -> nil:.:if -> nil:.:if min :: nil:.:if -> nil:.:if -> nil:.:if DEL :: nil:.:if -> nil:.:if -> c6:c7 c3 :: c3:c4:c5 c4 :: c3:c4:c5 -> c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 msort :: nil:.:if -> nil:.:if if :: nil:.:if -> nil:.:if -> nil:.:if hole_c:c1:c21_8 :: c:c1:c2 hole_nil:.:if2_8 :: nil:.:if hole_c3:c4:c53_8 :: c3:c4:c5 hole_c6:c74_8 :: c6:c7 gen_c:c1:c25_8 :: Nat -> c:c1:c2 gen_nil:.:if6_8 :: Nat -> nil:.:if gen_c3:c4:c57_8 :: Nat -> c3:c4:c5 gen_c6:c78_8 :: Nat -> c6:c7 ---------------------------------------- (23) OrderProof (LOWER BOUND(ID)) Heuristically decided to analyse the following defined symbols: MSORT, MIN, del, min, DEL, msort They will be analysed ascendingly in the following order: MIN < MSORT del < MSORT min < MSORT DEL < MSORT del < msort min < msort ---------------------------------------- (24) Obligation: Innermost TRS: Rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z1)) MIN(nil) -> c3 MIN(.(z1, z2)) -> c4(MIN(z2)) MIN(.(z1, z2)) -> c5(MIN(z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(z2, .(z1, del(z0, z2))) Types: MSORT :: nil:.:if -> c:c1:c2 nil :: nil:.:if c :: c:c1:c2 . :: nil:.:if -> nil:.:if -> nil:.:if c1 :: c3:c4:c5 -> c:c1:c2 MIN :: nil:.:if -> c3:c4:c5 c2 :: c:c1:c2 -> c6:c7 -> c3:c4:c5 -> c:c1:c2 del :: nil:.:if -> nil:.:if -> nil:.:if min :: nil:.:if -> nil:.:if -> nil:.:if DEL :: nil:.:if -> nil:.:if -> c6:c7 c3 :: c3:c4:c5 c4 :: c3:c4:c5 -> c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 msort :: nil:.:if -> nil:.:if if :: nil:.:if -> nil:.:if -> nil:.:if hole_c:c1:c21_8 :: c:c1:c2 hole_nil:.:if2_8 :: nil:.:if hole_c3:c4:c53_8 :: c3:c4:c5 hole_c6:c74_8 :: c6:c7 gen_c:c1:c25_8 :: Nat -> c:c1:c2 gen_nil:.:if6_8 :: Nat -> nil:.:if gen_c3:c4:c57_8 :: Nat -> c3:c4:c5 gen_c6:c78_8 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c25_8(0) <=> c gen_c:c1:c25_8(+(x, 1)) <=> c2(gen_c:c1:c25_8(x), c6, c3) gen_nil:.:if6_8(0) <=> nil gen_nil:.:if6_8(+(x, 1)) <=> .(nil, gen_nil:.:if6_8(x)) gen_c3:c4:c57_8(0) <=> c3 gen_c3:c4:c57_8(+(x, 1)) <=> c4(gen_c3:c4:c57_8(x)) gen_c6:c78_8(0) <=> c6 gen_c6:c78_8(+(x, 1)) <=> c7(gen_c6:c78_8(x)) The following defined symbols remain to be analysed: MIN, MSORT, del, min, DEL, msort They will be analysed ascendingly in the following order: MIN < MSORT del < MSORT min < MSORT DEL < MSORT del < msort min < msort ---------------------------------------- (25) RewriteLemmaProof (LOWER BOUND(ID)) Proved the following rewrite lemma: MIN(gen_nil:.:if6_8(n10_8)) -> gen_c3:c4:c57_8(n10_8), rt in Omega(1 + n10_8) Induction Base: MIN(gen_nil:.:if6_8(0)) ->_R^Omega(1) c3 Induction Step: MIN(gen_nil:.:if6_8(+(n10_8, 1))) ->_R^Omega(1) c4(MIN(gen_nil:.:if6_8(n10_8))) ->_IH c4(gen_c3:c4:c57_8(c11_8)) We have rt in Omega(n^1) and sz in O(n). Thus, we have irc_R in Omega(n). ---------------------------------------- (26) Complex Obligation (BEST) ---------------------------------------- (27) Obligation: Proved the lower bound n^1 for the following obligation: Innermost TRS: Rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z1)) MIN(nil) -> c3 MIN(.(z1, z2)) -> c4(MIN(z2)) MIN(.(z1, z2)) -> c5(MIN(z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(z2, .(z1, del(z0, z2))) Types: MSORT :: nil:.:if -> c:c1:c2 nil :: nil:.:if c :: c:c1:c2 . :: nil:.:if -> nil:.:if -> nil:.:if c1 :: c3:c4:c5 -> c:c1:c2 MIN :: nil:.:if -> c3:c4:c5 c2 :: c:c1:c2 -> c6:c7 -> c3:c4:c5 -> c:c1:c2 del :: nil:.:if -> nil:.:if -> nil:.:if min :: nil:.:if -> nil:.:if -> nil:.:if DEL :: nil:.:if -> nil:.:if -> c6:c7 c3 :: c3:c4:c5 c4 :: c3:c4:c5 -> c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 msort :: nil:.:if -> nil:.:if if :: nil:.:if -> nil:.:if -> nil:.:if hole_c:c1:c21_8 :: c:c1:c2 hole_nil:.:if2_8 :: nil:.:if hole_c3:c4:c53_8 :: c3:c4:c5 hole_c6:c74_8 :: c6:c7 gen_c:c1:c25_8 :: Nat -> c:c1:c2 gen_nil:.:if6_8 :: Nat -> nil:.:if gen_c3:c4:c57_8 :: Nat -> c3:c4:c5 gen_c6:c78_8 :: Nat -> c6:c7 Generator Equations: gen_c:c1:c25_8(0) <=> c gen_c:c1:c25_8(+(x, 1)) <=> c2(gen_c:c1:c25_8(x), c6, c3) gen_nil:.:if6_8(0) <=> nil gen_nil:.:if6_8(+(x, 1)) <=> .(nil, gen_nil:.:if6_8(x)) gen_c3:c4:c57_8(0) <=> c3 gen_c3:c4:c57_8(+(x, 1)) <=> c4(gen_c3:c4:c57_8(x)) gen_c6:c78_8(0) <=> c6 gen_c6:c78_8(+(x, 1)) <=> c7(gen_c6:c78_8(x)) The following defined symbols remain to be analysed: MIN, MSORT, del, min, DEL, msort They will be analysed ascendingly in the following order: MIN < MSORT del < MSORT min < MSORT DEL < MSORT del < msort min < msort ---------------------------------------- (28) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (29) BOUNDS(n^1, INF) ---------------------------------------- (30) Obligation: Innermost TRS: Rules: MSORT(nil) -> c MSORT(.(z0, z1)) -> c1(MIN(z1)) MSORT(.(z0, z1)) -> c2(MSORT(del(min(z0, z1), .(z0, z1))), DEL(min(z0, z1), .(z0, z1)), MIN(z1)) MIN(nil) -> c3 MIN(.(z1, z2)) -> c4(MIN(z2)) MIN(.(z1, z2)) -> c5(MIN(z2)) DEL(z0, nil) -> c6 DEL(z0, .(z1, z2)) -> c7(DEL(z0, z2)) msort(nil) -> nil msort(.(z0, z1)) -> .(min(z0, z1), msort(del(min(z0, z1), .(z0, z1)))) min(z0, nil) -> z0 min(z0, .(z1, z2)) -> if(min(z0, z2), min(z1, z2)) del(z0, nil) -> nil del(z0, .(z1, z2)) -> if(z2, .(z1, del(z0, z2))) Types: MSORT :: nil:.:if -> c:c1:c2 nil :: nil:.:if c :: c:c1:c2 . :: nil:.:if -> nil:.:if -> nil:.:if c1 :: c3:c4:c5 -> c:c1:c2 MIN :: nil:.:if -> c3:c4:c5 c2 :: c:c1:c2 -> c6:c7 -> c3:c4:c5 -> c:c1:c2 del :: nil:.:if -> nil:.:if -> nil:.:if min :: nil:.:if -> nil:.:if -> nil:.:if DEL :: nil:.:if -> nil:.:if -> c6:c7 c3 :: c3:c4:c5 c4 :: c3:c4:c5 -> c3:c4:c5 c5 :: c3:c4:c5 -> c3:c4:c5 c6 :: c6:c7 c7 :: c6:c7 -> c6:c7 msort :: nil:.:if -> nil:.:if if :: nil:.:if -> nil:.:if -> nil:.:if hole_c:c1:c21_8 :: c:c1:c2 hole_nil:.:if2_8 :: nil:.:if hole_c3:c4:c53_8 :: c3:c4:c5 hole_c6:c74_8 :: c6:c7 gen_c:c1:c25_8 :: Nat -> c:c1:c2 gen_nil:.:if6_8 :: Nat -> nil:.:if gen_c3:c4:c57_8 :: Nat -> c3:c4:c5 gen_c6:c78_8 :: Nat -> c6:c7 Lemmas: MIN(gen_nil:.:if6_8(n10_8)) -> gen_c3:c4:c57_8(n10_8), rt in Omega(1 + n10_8) Generator Equations: gen_c:c1:c25_8(0) <=> c gen_c:c1:c25_8(+(x, 1)) <=> c2(gen_c:c1:c25_8(x), c6, c3) gen_nil:.:if6_8(0) <=> nil gen_nil:.:if6_8(+(x, 1)) <=> .(nil, gen_nil:.:if6_8(x)) gen_c3:c4:c57_8(0) <=> c3 gen_c3:c4:c57_8(+(x, 1)) <=> c4(gen_c3:c4:c57_8(x)) gen_c6:c78_8(0) <=> c6 gen_c6:c78_8(+(x, 1)) <=> c7(gen_c6:c78_8(x)) The following defined symbols remain to be analysed: del, MSORT, min, DEL, msort They will be analysed ascendingly in the following order: del < MSORT min < MSORT DEL < MSORT del < msort min < msort