WORST_CASE(Omega(n^1), O(n^2)) proof of /export/starexec/sandbox/benchmark/theBenchmark.xml # AProVE Commit ID: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). (0) CpxRelTRS (1) SInnermostTerminationProof [BOTH CONCRETE BOUNDS(ID, ID), 160 ms] (2) CpxRelTRS (3) CpxTrsToCdtProof [UPPER BOUND(ID), 0 ms] (4) CdtProblem (5) CdtLeafRemovalProof [BOTH BOUNDS(ID, ID), 0 ms] (6) CdtProblem (7) CdtRhsSimplificationProcessorProof [BOTH BOUNDS(ID, ID), 0 ms] (8) CdtProblem (9) CdtGraphSplitRhsProof [BOTH BOUNDS(ID, ID), 0 ms] (10) CdtProblem (11) CdtLeafRemovalProof [ComplexityIfPolyImplication, 0 ms] (12) CdtProblem (13) CdtKnowledgeProof [BOTH BOUNDS(ID, ID), 0 ms] (14) CdtProblem (15) CdtUsableRulesProof [BOTH BOUNDS(ID, ID), 0 ms] (16) CdtProblem (17) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 79 ms] (18) CdtProblem (19) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 40 ms] (20) CdtProblem (21) CdtRuleRemovalProof [UPPER BOUND(ADD(n^1)), 22 ms] (22) CdtProblem (23) CdtRuleRemovalProof [UPPER BOUND(ADD(n^2)), 180 ms] (24) CdtProblem (25) SIsEmptyProof [BOTH BOUNDS(ID, ID), 0 ms] (26) BOUNDS(1, 1) (27) RelTrsToDecreasingLoopProblemProof [LOWER BOUND(ID), 0 ms] (28) TRS for Loop Detection (29) DecreasingLoopProof [LOWER BOUND(ID), 0 ms] (30) BEST (31) proven lower bound (32) LowerBoundPropagationProof [FINISHED, 0 ms] (33) BOUNDS(n^1, INF) (34) TRS for Loop Detection ---------------------------------------- (0) Obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: bsort(S(x'), Cons(x, xs)) -> bsort(x', bubble(x, xs)) len(Cons(x, xs)) -> +(S(0), len(xs)) bubble(x', Cons(x, xs)) -> bubble[Ite][False][Ite](<(x', x), x', Cons(x, xs)) len(Nil) -> 0 bubble(x, Nil) -> Cons(x, Nil) bsort(0, xs) -> xs bubblesort(xs) -> bsort(len(xs), xs) The (relative) TRS S consists of the following rules: +(x, S(0)) -> S(x) +(S(0), y) -> S(y) <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False bubble[Ite][False][Ite](False, x', Cons(x, xs)) -> Cons(x, bubble(x', xs)) bubble[Ite][False][Ite](True, x', Cons(x, xs)) -> Cons(x', bubble(x, xs)) 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^2). The TRS R consists of the following rules: bsort(S(x'), Cons(x, xs)) -> bsort(x', bubble(x, xs)) len(Cons(x, xs)) -> +(S(0), len(xs)) bubble(x', Cons(x, xs)) -> bubble[Ite][False][Ite](<(x', x), x', Cons(x, xs)) len(Nil) -> 0 bubble(x, Nil) -> Cons(x, Nil) bsort(0, xs) -> xs bubblesort(xs) -> bsort(len(xs), xs) The (relative) TRS S consists of the following rules: +(x, S(0)) -> S(x) +(S(0), y) -> S(y) <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False bubble[Ite][False][Ite](False, x', Cons(x, xs)) -> Cons(x, bubble(x', xs)) bubble[Ite][False][Ite](True, x', Cons(x, xs)) -> Cons(x', bubble(x, xs)) Rewrite Strategy: INNERMOST ---------------------------------------- (3) CpxTrsToCdtProof (UPPER BOUND(ID)) Converted Cpx (relative) TRS to CDT ---------------------------------------- (4) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: +'(z0, S(0)) -> c +'(S(0), z0) -> c1 <'(S(z0), S(z1)) -> c2(<'(z0, z1)) <'(0, S(z0)) -> c3 <'(z0, 0) -> c4 BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BSORT(0, z0) -> c8 LEN(Cons(z0, z1)) -> c9(+'(S(0), len(z1)), LEN(z1)) LEN(Nil) -> c10 BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BSORT(0, z0) -> c8 LEN(Cons(z0, z1)) -> c9(+'(S(0), len(z1)), LEN(z1)) LEN(Nil) -> c10 BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) K tuples:none Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: +'_2, <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, LEN_1, BUBBLE_2, BUBBLESORT_1 Compound Symbols: c, c1, c2_1, c3, c4, c5_1, c6_1, c7_2, c8, c9_2, c10, c11_2, c12, c13_2 ---------------------------------------- (5) CdtLeafRemovalProof (BOTH BOUNDS(ID, ID)) Removed 6 trailing nodes: <'(0, S(z0)) -> c3 +'(S(0), z0) -> c1 LEN(Nil) -> c10 <'(z0, 0) -> c4 +'(z0, S(0)) -> c BSORT(0, z0) -> c8 ---------------------------------------- (6) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) LEN(Cons(z0, z1)) -> c9(+'(S(0), len(z1)), LEN(z1)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) LEN(Cons(z0, z1)) -> c9(+'(S(0), len(z1)), LEN(z1)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) K tuples:none Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, LEN_1, BUBBLE_2, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c9_2, c11_2, c12, c13_2 ---------------------------------------- (7) CdtRhsSimplificationProcessorProof (BOTH BOUNDS(ID, ID)) Removed 1 trailing tuple parts ---------------------------------------- (8) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 BUBBLESORT(z0) -> c13(BSORT(len(z0), z0), LEN(z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) K tuples:none Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, BUBBLESORT_1, LEN_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c13_2, c9_1 ---------------------------------------- (9) CdtGraphSplitRhsProof (BOTH BOUNDS(ID, ID)) Split RHS of tuples not part of any SCC ---------------------------------------- (10) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) BUBBLESORT(z0) -> c(LEN(z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) BUBBLESORT(z0) -> c(LEN(z0)) K tuples:none Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (11) CdtLeafRemovalProof (ComplexityIfPolyImplication) Removed 1 leading nodes: BUBBLESORT(z0) -> c(LEN(z0)) ---------------------------------------- (12) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) K tuples:none Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (13) CdtKnowledgeProof (BOTH BOUNDS(ID, ID)) The following tuples could be moved from S to K by knowledge propagation: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) ---------------------------------------- (14) Obligation: Complexity Dependency Tuples Problem Rules: +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubblesort(z0) -> bsort(len(z0), z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) Defined Rule Symbols: bsort_2, len_1, bubble_2, bubblesort_1, +_2, <_2, bubble[Ite][False][Ite]_3 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (15) CdtUsableRulesProof (BOTH BOUNDS(ID, ID)) The following rules are not usable and were removed: bsort(S(z0), Cons(z1, z2)) -> bsort(z0, bubble(z1, z2)) bsort(0, z0) -> z0 bubblesort(z0) -> bsort(len(z0), z0) ---------------------------------------- (16) Obligation: Complexity Dependency Tuples Problem Rules: bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) Defined Rule Symbols: bubble_2, bubble[Ite][False][Ite]_3, <_2, len_1, +_2 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (17) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. LEN(Cons(z0, z1)) -> c9(LEN(z1)) We considered the (Usable) Rules:none And the Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = [1] + x_1 + x_2 POL(0) = 0 POL(<(x_1, x_2)) = [1] + x_2 POL(<'(x_1, x_2)) = 0 POL(BSORT(x_1, x_2)) = [1] POL(BUBBLE(x_1, x_2)) = 0 POL(BUBBLESORT(x_1)) = [1] POL(BUBBLE[ITE][FALSE][ITE](x_1, x_2, x_3)) = 0 POL(Cons(x_1, x_2)) = [1] + x_1 + x_2 POL(False) = [1] POL(LEN(x_1)) = x_1 POL(Nil) = [1] POL(S(x_1)) = 0 POL(True) = [1] POL(bubble(x_1, x_2)) = [1] + x_1 + x_2 POL(bubble[Ite][False][Ite](x_1, x_2, x_3)) = [1] + x_2 + x_3 POL(c(x_1)) = x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c12) = 0 POL(c2(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(len(x_1)) = [1] + x_1 ---------------------------------------- (18) Obligation: Complexity Dependency Tuples Problem Rules: bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) Defined Rule Symbols: bubble_2, bubble[Ite][False][Ite]_3, <_2, len_1, +_2 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (19) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. BUBBLE(z0, Nil) -> c12 We considered the (Usable) Rules: <(z0, 0) -> False len(Nil) -> 0 len(Cons(z0, z1)) -> +(S(0), len(z1)) <(0, S(z0)) -> True <(S(z0), S(z1)) -> <(z0, z1) +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) And the Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(<(x_1, x_2)) = [1] POL(<'(x_1, x_2)) = 0 POL(BSORT(x_1, x_2)) = [3] + [2]x_1 POL(BUBBLE(x_1, x_2)) = [2] POL(BUBBLESORT(x_1)) = [3] + [2]x_1 POL(BUBBLE[ITE][FALSE][ITE](x_1, x_2, x_3)) = [1] + x_1 POL(Cons(x_1, x_2)) = [2] + x_2 POL(False) = [1] POL(LEN(x_1)) = [3]x_1 POL(Nil) = 0 POL(S(x_1)) = [1] + x_1 POL(True) = [1] POL(bubble(x_1, x_2)) = [3] + [2]x_1 + [2]x_2 POL(bubble[Ite][False][Ite](x_1, x_2, x_3)) = [3] + [3]x_2 POL(c(x_1)) = x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c12) = 0 POL(c2(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(len(x_1)) = x_1 ---------------------------------------- (20) Obligation: Complexity Dependency Tuples Problem Rules: bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLE(z0, Nil) -> c12 Defined Rule Symbols: bubble_2, bubble[Ite][False][Ite]_3, <_2, len_1, +_2 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (21) CdtRuleRemovalProof (UPPER BOUND(ADD(n^1))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) We considered the (Usable) Rules: <(z0, 0) -> False len(Nil) -> 0 len(Cons(z0, z1)) -> +(S(0), len(z1)) <(0, S(z0)) -> True <(S(z0), S(z1)) -> <(z0, z1) +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) And the Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(<(x_1, x_2)) = [1] POL(<'(x_1, x_2)) = 0 POL(BSORT(x_1, x_2)) = [3] + [3]x_1 POL(BUBBLE(x_1, x_2)) = [3] POL(BUBBLESORT(x_1)) = [3] + [3]x_1 POL(BUBBLE[ITE][FALSE][ITE](x_1, x_2, x_3)) = [1] + [2]x_1 POL(Cons(x_1, x_2)) = [3] + x_2 POL(False) = [1] POL(LEN(x_1)) = [3]x_1 POL(Nil) = 0 POL(S(x_1)) = [3] + x_1 POL(True) = [1] POL(bubble(x_1, x_2)) = [3] + [2]x_1 + [2]x_2 POL(bubble[Ite][False][Ite](x_1, x_2, x_3)) = [3] + [3]x_2 POL(c(x_1)) = x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c12) = 0 POL(c2(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(len(x_1)) = x_1 ---------------------------------------- (22) Obligation: Complexity Dependency Tuples Problem Rules: bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples: BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLE(z0, Nil) -> c12 BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) Defined Rule Symbols: bubble_2, bubble[Ite][False][Ite]_3, <_2, len_1, +_2 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (23) CdtRuleRemovalProof (UPPER BOUND(ADD(n^2))) Found a reduction pair which oriented the following tuples strictly. Hence they can be removed from S. BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) We considered the (Usable) Rules: bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) len(Nil) -> 0 bubble(z0, Nil) -> Cons(z0, Nil) len(Cons(z0, z1)) -> +(S(0), len(z1)) bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) And the Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) The order we found is given by the following interpretation: Polynomial interpretation : POL(+(x_1, x_2)) = x_1 + x_2 POL(0) = 0 POL(<(x_1, x_2)) = 0 POL(<'(x_1, x_2)) = 0 POL(BSORT(x_1, x_2)) = [2]x_1 + [2]x_1*x_2 POL(BUBBLE(x_1, x_2)) = [2] + [2]x_2 POL(BUBBLESORT(x_1)) = [2] + [2]x_1 + [2]x_1^2 POL(BUBBLE[ITE][FALSE][ITE](x_1, x_2, x_3)) = [2]x_3 POL(Cons(x_1, x_2)) = [1] + x_2 POL(False) = 0 POL(LEN(x_1)) = [2]x_1 + x_1^2 POL(Nil) = 0 POL(S(x_1)) = [1] + x_1 POL(True) = 0 POL(bubble(x_1, x_2)) = [1] + x_2 POL(bubble[Ite][False][Ite](x_1, x_2, x_3)) = [1] + x_3 POL(c(x_1)) = x_1 POL(c11(x_1, x_2)) = x_1 + x_2 POL(c12) = 0 POL(c2(x_1)) = x_1 POL(c5(x_1)) = x_1 POL(c6(x_1)) = x_1 POL(c7(x_1, x_2)) = x_1 + x_2 POL(c9(x_1)) = x_1 POL(len(x_1)) = x_1 ---------------------------------------- (24) Obligation: Complexity Dependency Tuples Problem Rules: bubble(z0, Cons(z1, z2)) -> bubble[Ite][False][Ite](<(z0, z1), z0, Cons(z1, z2)) bubble(z0, Nil) -> Cons(z0, Nil) bubble[Ite][False][Ite](False, z0, Cons(z1, z2)) -> Cons(z1, bubble(z0, z2)) bubble[Ite][False][Ite](True, z0, Cons(z1, z2)) -> Cons(z0, bubble(z1, z2)) <(S(z0), S(z1)) -> <(z0, z1) <(0, S(z0)) -> True <(z0, 0) -> False len(Cons(z0, z1)) -> +(S(0), len(z1)) len(Nil) -> 0 +(z0, S(0)) -> S(z0) +(S(0), z0) -> S(z0) Tuples: <'(S(z0), S(z1)) -> c2(<'(z0, z1)) BUBBLE[ITE][FALSE][ITE](False, z0, Cons(z1, z2)) -> c5(BUBBLE(z0, z2)) BUBBLE[ITE][FALSE][ITE](True, z0, Cons(z1, z2)) -> c6(BUBBLE(z1, z2)) BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) BUBBLE(z0, Nil) -> c12 LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) S tuples:none K tuples: BUBBLESORT(z0) -> c(BSORT(len(z0), z0)) LEN(Cons(z0, z1)) -> c9(LEN(z1)) BUBBLE(z0, Nil) -> c12 BSORT(S(z0), Cons(z1, z2)) -> c7(BSORT(z0, bubble(z1, z2)), BUBBLE(z1, z2)) BUBBLE(z0, Cons(z1, z2)) -> c11(BUBBLE[ITE][FALSE][ITE](<(z0, z1), z0, Cons(z1, z2)), <'(z0, z1)) Defined Rule Symbols: bubble_2, bubble[Ite][False][Ite]_3, <_2, len_1, +_2 Defined Pair Symbols: <'_2, BUBBLE[ITE][FALSE][ITE]_3, BSORT_2, BUBBLE_2, LEN_1, BUBBLESORT_1 Compound Symbols: c2_1, c5_1, c6_1, c7_2, c11_2, c12, c9_1, c_1 ---------------------------------------- (25) SIsEmptyProof (BOTH BOUNDS(ID, ID)) The set S is empty ---------------------------------------- (26) BOUNDS(1, 1) ---------------------------------------- (27) RelTrsToDecreasingLoopProblemProof (LOWER BOUND(ID)) Transformed a relative TRS into a decreasing-loop problem. ---------------------------------------- (28) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: bsort(S(x'), Cons(x, xs)) -> bsort(x', bubble(x, xs)) len(Cons(x, xs)) -> +(S(0), len(xs)) bubble(x', Cons(x, xs)) -> bubble[Ite][False][Ite](<(x', x), x', Cons(x, xs)) len(Nil) -> 0 bubble(x, Nil) -> Cons(x, Nil) bsort(0, xs) -> xs bubblesort(xs) -> bsort(len(xs), xs) The (relative) TRS S consists of the following rules: +(x, S(0)) -> S(x) +(S(0), y) -> S(y) <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False bubble[Ite][False][Ite](False, x', Cons(x, xs)) -> Cons(x, bubble(x', xs)) bubble[Ite][False][Ite](True, x', Cons(x, xs)) -> Cons(x', bubble(x, xs)) Rewrite Strategy: INNERMOST ---------------------------------------- (29) DecreasingLoopProof (LOWER BOUND(ID)) The following loop(s) give(s) rise to the lower bound Omega(n^1): The rewrite sequence len(Cons(x, xs)) ->^+ +(S(0), len(xs)) gives rise to a decreasing loop by considering the right hand sides subterm at position [1]. The pumping substitution is [xs / Cons(x, xs)]. The result substitution is [ ]. ---------------------------------------- (30) Complex Obligation (BEST) ---------------------------------------- (31) Obligation: Proved the lower bound n^1 for the following obligation: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: bsort(S(x'), Cons(x, xs)) -> bsort(x', bubble(x, xs)) len(Cons(x, xs)) -> +(S(0), len(xs)) bubble(x', Cons(x, xs)) -> bubble[Ite][False][Ite](<(x', x), x', Cons(x, xs)) len(Nil) -> 0 bubble(x, Nil) -> Cons(x, Nil) bsort(0, xs) -> xs bubblesort(xs) -> bsort(len(xs), xs) The (relative) TRS S consists of the following rules: +(x, S(0)) -> S(x) +(S(0), y) -> S(y) <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False bubble[Ite][False][Ite](False, x', Cons(x, xs)) -> Cons(x, bubble(x', xs)) bubble[Ite][False][Ite](True, x', Cons(x, xs)) -> Cons(x', bubble(x, xs)) Rewrite Strategy: INNERMOST ---------------------------------------- (32) LowerBoundPropagationProof (FINISHED) Propagated lower bound. ---------------------------------------- (33) BOUNDS(n^1, INF) ---------------------------------------- (34) Obligation: Analyzing the following TRS for decreasing loops: The Runtime Complexity (innermost) of the given CpxRelTRS could be proven to be BOUNDS(n^1, n^2). The TRS R consists of the following rules: bsort(S(x'), Cons(x, xs)) -> bsort(x', bubble(x, xs)) len(Cons(x, xs)) -> +(S(0), len(xs)) bubble(x', Cons(x, xs)) -> bubble[Ite][False][Ite](<(x', x), x', Cons(x, xs)) len(Nil) -> 0 bubble(x, Nil) -> Cons(x, Nil) bsort(0, xs) -> xs bubblesort(xs) -> bsort(len(xs), xs) The (relative) TRS S consists of the following rules: +(x, S(0)) -> S(x) +(S(0), y) -> S(y) <(S(x), S(y)) -> <(x, y) <(0, S(y)) -> True <(x, 0) -> False bubble[Ite][False][Ite](False, x', Cons(x, xs)) -> Cons(x, bubble(x', xs)) bubble[Ite][False][Ite](True, x', Cons(x, xs)) -> Cons(x', bubble(x, xs)) Rewrite Strategy: INNERMOST