/export/starexec/sandbox2/solver/bin/starexec_run_complexity /export/starexec/sandbox2/benchmark/theBenchmark.koat /export/starexec/sandbox2/output/output_files -------------------------------------------------------------------------------- WORST_CASE(Omega(n^1), O(n^2)) proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, nat(-2 + 2 * Arg_0) + max(3, -1 + 2 * Arg_0) + max(4, 2 * Arg_0) + max(3, 3 + Arg_0 * max(4, 2 * Arg_0) + min(-2 * Arg_0, -4)) + max(1, Arg_0)). (0) CpxIntTrs (1) Koat2 Proof [FINISHED, 6279 ms] (2) BOUNDS(1, nat(-2 + 2 * Arg_0) + max(3, -1 + 2 * Arg_0) + max(4, 2 * Arg_0) + max(3, 3 + Arg_0 * max(4, 2 * Arg_0) + min(-2 * Arg_0, -4)) + max(1, Arg_0)) (3) Loat Proof [FINISHED, 898 ms] (4) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: start(A, B, C, D, E, F, G, H, I, J) -> Com_1(stop(A, B, C, D, E, F, G, H, 1, J)) :|: 1 >= A && B >= C && B <= C && D >= E && D <= E && F >= A && F <= A && G >= H && G <= H && I >= J && I <= J start(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl31(A, K, C, D, E, F, G, H, 1, J)) :|: A >= 2 && B >= C && B <= C && D >= E && D <= E && F >= A && F <= A && G >= H && G <= H && I >= J && I <= J lbl43(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl43(A, B, C, D, E, F, G - 1, H, I, J)) :|: G >= 0 && I >= G + 2 && G + 1 >= 0 && A >= I + 1 && F >= A && F <= A lbl43(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl13(A, B, C, I, E, F, G, H, 1 + I, J)) :|: I >= G + 2 && G + 1 >= 0 && A >= I + 1 && F >= A && F <= A lbl31(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl43(A, B, C, D, E, F, I - 2, H, I, J)) :|: I >= 1 && A >= I + 1 && F >= A && F <= A lbl31(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl13(A, B, C, I, E, F, I - 1, H, 1 + I, J)) :|: I >= 1 && A >= I + 1 && F >= A && F <= A lbl13(A, B, C, D, E, F, G, H, I, J) -> Com_1(stop(A, B, C, D, E, F, G, H, I, J)) :|: G + A >= 2 && G + 1 >= 0 && A >= 2 + G && F >= A && F <= A && I >= A && I <= A && D + 1 >= A && D + 1 <= A lbl13(A, B, C, D, E, F, G, H, I, J) -> Com_1(lbl31(A, K, C, D, E, F, G, H, I, J)) :|: A >= D + 2 && G + D >= 1 && G + 1 >= 0 && A >= D + 1 && D >= G + 1 && F >= A && F <= A && I >= D + 1 && I <= D + 1 start0(A, B, C, D, E, F, G, H, I, J) -> Com_1(start(A, C, C, E, E, A, H, H, J, J)) :|: TRUE The start-symbols are:[start0_10] ---------------------------------------- (1) Koat2 Proof (FINISHED) YES( ?, 3+max([0, (-1+Arg_0)*max([4, 2*Arg_0])])+max([1, Arg_0])+max([0, -1+Arg_0])+max([3, -1+2*Arg_0])+max([0, -1+Arg_0])+max([4, 2*Arg_0]) {O(n^2)}) Initial Complexity Problem: Start: start0 Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5, Arg_6, Arg_7, Arg_8, Arg_9 Temp_Vars: K Locations: lbl13, lbl31, lbl43, start, start0, stop Transitions: lbl13(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl31(Arg_0,K,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9):|:Arg_8 <= Arg_5 && Arg_8 <= 1+Arg_3 && Arg_8 <= Arg_0 && 2 <= Arg_8 && 2+Arg_6 <= Arg_8 && 4 <= Arg_5+Arg_8 && 3 <= Arg_3+Arg_8 && 1+Arg_3 <= Arg_8 && 4 <= Arg_0+Arg_8 && 2+Arg_6 <= Arg_5 && 1+Arg_6 <= Arg_3 && 2+Arg_6 <= Arg_0 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 3 <= Arg_3+Arg_5 && 1+Arg_3 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 1+Arg_3 <= Arg_0 && 1 <= Arg_3 && 3 <= Arg_0+Arg_3 && 2 <= Arg_0 && Arg_3+2 <= Arg_0 && 1 <= Arg_6+Arg_3 && 0 <= 1+Arg_6 && Arg_3+1 <= Arg_0 && Arg_6+1 <= Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_8 <= Arg_3+1 && Arg_3+1 <= Arg_8 lbl13(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> stop(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9):|:Arg_8 <= Arg_5 && Arg_8 <= 1+Arg_3 && Arg_8 <= Arg_0 && 2 <= Arg_8 && 2+Arg_6 <= Arg_8 && 4 <= Arg_5+Arg_8 && 3 <= Arg_3+Arg_8 && 1+Arg_3 <= Arg_8 && 4 <= Arg_0+Arg_8 && 2+Arg_6 <= Arg_5 && 1+Arg_6 <= Arg_3 && 2+Arg_6 <= Arg_0 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 3 <= Arg_3+Arg_5 && 1+Arg_3 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 1+Arg_3 <= Arg_0 && 1 <= Arg_3 && 3 <= Arg_0+Arg_3 && 2 <= Arg_0 && 2 <= Arg_6+Arg_0 && 0 <= 1+Arg_6 && 2+Arg_6 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_8 <= Arg_0 && Arg_0 <= Arg_8 && Arg_3+1 <= Arg_0 && Arg_0 <= Arg_3+1 lbl31(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl13(Arg_0,Arg_1,Arg_2,Arg_8,Arg_4,Arg_5,Arg_8-1,Arg_7,1+Arg_8,Arg_9):|:1+Arg_8 <= Arg_5 && 1+Arg_8 <= Arg_0 && 1 <= Arg_8 && 3 <= Arg_5+Arg_8 && 3 <= Arg_0+Arg_8 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 2 <= Arg_0 && 1 <= Arg_8 && Arg_8+1 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl31(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl43(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_8-2,Arg_7,Arg_8,Arg_9):|:1+Arg_8 <= Arg_5 && 1+Arg_8 <= Arg_0 && 1 <= Arg_8 && 3 <= Arg_5+Arg_8 && 3 <= Arg_0+Arg_8 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 2 <= Arg_0 && 1 <= Arg_8 && Arg_8+1 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl43(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl13(Arg_0,Arg_1,Arg_2,Arg_8,Arg_4,Arg_5,Arg_6,Arg_7,1+Arg_8,Arg_9):|:1+Arg_8 <= Arg_5 && 1+Arg_8 <= Arg_0 && 1 <= Arg_8 && 0 <= Arg_6+Arg_8 && 2+Arg_6 <= Arg_8 && 3 <= Arg_5+Arg_8 && 3 <= Arg_0+Arg_8 && 3+Arg_6 <= Arg_5 && 3+Arg_6 <= Arg_0 && 0 <= 1+Arg_6 && 1 <= Arg_5+Arg_6 && 1 <= Arg_0+Arg_6 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 2 <= Arg_0 && Arg_6+2 <= Arg_8 && 0 <= 1+Arg_6 && Arg_8+1 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl43(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl43(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6-1,Arg_7,Arg_8,Arg_9):|:1+Arg_8 <= Arg_5 && 1+Arg_8 <= Arg_0 && 1 <= Arg_8 && 0 <= Arg_6+Arg_8 && 2+Arg_6 <= Arg_8 && 3 <= Arg_5+Arg_8 && 3 <= Arg_0+Arg_8 && 3+Arg_6 <= Arg_5 && 3+Arg_6 <= Arg_0 && 0 <= 1+Arg_6 && 1 <= Arg_5+Arg_6 && 1 <= Arg_0+Arg_6 && Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 2 <= Arg_0 && 0 <= Arg_6 && Arg_6+2 <= Arg_8 && 0 <= 1+Arg_6 && Arg_8+1 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 start(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> lbl31(Arg_0,K,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,1,Arg_9):|:Arg_9 <= Arg_8 && Arg_8 <= Arg_9 && Arg_7 <= Arg_6 && Arg_6 <= Arg_7 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_4 <= Arg_3 && Arg_3 <= Arg_4 && Arg_2 <= Arg_1 && Arg_1 <= Arg_2 && 2 <= Arg_0 && Arg_1 <= Arg_2 && Arg_2 <= Arg_1 && Arg_3 <= Arg_4 && Arg_4 <= Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_6 <= Arg_7 && Arg_7 <= Arg_6 && Arg_8 <= Arg_9 && Arg_9 <= Arg_8 start(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> stop(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,1,Arg_9):|:Arg_9 <= Arg_8 && Arg_8 <= Arg_9 && Arg_7 <= Arg_6 && Arg_6 <= Arg_7 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_4 <= Arg_3 && Arg_3 <= Arg_4 && Arg_2 <= Arg_1 && Arg_1 <= Arg_2 && Arg_0 <= 1 && Arg_1 <= Arg_2 && Arg_2 <= Arg_1 && Arg_3 <= Arg_4 && Arg_4 <= Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_6 <= Arg_7 && Arg_7 <= Arg_6 && Arg_8 <= Arg_9 && Arg_9 <= Arg_8 start0(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5,Arg_6,Arg_7,Arg_8,Arg_9) -> start(Arg_0,Arg_2,Arg_2,Arg_4,Arg_4,Arg_0,Arg_7,Arg_7,Arg_9,Arg_9):|: Timebounds: Overall timebound: 3+max([0, (-1+Arg_0)*max([4, 2*Arg_0])])+max([1, Arg_0])+max([0, -1+Arg_0])+max([3, -1+2*Arg_0])+max([0, -1+Arg_0])+max([4, 2*Arg_0]) {O(n^2)} 6: lbl13->stop: 1 {O(1)} 7: lbl13->lbl31: max([0, -1+Arg_0]) {O(n)} 4: lbl31->lbl43: max([3, -1+2*Arg_0]) {O(n)} 5: lbl31->lbl13: max([0, -1+Arg_0]) {O(n)} 2: lbl43->lbl43: max([0, (-1+Arg_0)*max([4, 2*Arg_0])])+max([4, 2*Arg_0]) {O(n^2)} 3: lbl43->lbl13: max([0, -1+Arg_0]) {O(n)} 0: start->stop: 1 {O(1)} 1: start->lbl31: 1 {O(1)} 8: start0->start: 1 {O(1)} Costbounds: Overall costbound: 3+max([0, (-1+Arg_0)*max([4, 2*Arg_0])])+max([1, Arg_0])+max([0, -1+Arg_0])+max([3, -1+2*Arg_0])+max([0, -1+Arg_0])+max([4, 2*Arg_0]) {O(n^2)} 6: lbl13->stop: 1 {O(1)} 7: lbl13->lbl31: max([0, -1+Arg_0]) {O(n)} 4: lbl31->lbl43: max([3, -1+2*Arg_0]) {O(n)} 5: lbl31->lbl13: max([0, -1+Arg_0]) {O(n)} 2: lbl43->lbl43: max([0, (-1+Arg_0)*max([4, 2*Arg_0])])+max([4, 2*Arg_0]) {O(n^2)} 3: lbl43->lbl13: max([0, -1+Arg_0]) {O(n)} 0: start->stop: 1 {O(1)} 1: start->lbl31: 1 {O(1)} 8: start0->start: 1 {O(1)} Sizebounds: `Lower: 6: lbl13->stop, Arg_0: 2 {O(1)} 6: lbl13->stop, Arg_2: Arg_2 {O(n)} 6: lbl13->stop, Arg_3: 1 {O(1)} 6: lbl13->stop, Arg_4: Arg_4 {O(n)} 6: lbl13->stop, Arg_5: 2 {O(1)} 6: lbl13->stop, Arg_6: -1 {O(1)} 6: lbl13->stop, Arg_7: Arg_7 {O(n)} 6: lbl13->stop, Arg_8: 2 {O(1)} 6: lbl13->stop, Arg_9: Arg_9 {O(n)} 7: lbl13->lbl31, Arg_0: 3 {O(1)} 7: lbl13->lbl31, Arg_2: Arg_2 {O(n)} 7: lbl13->lbl31, Arg_3: 1 {O(1)} 7: lbl13->lbl31, Arg_4: Arg_4 {O(n)} 7: lbl13->lbl31, Arg_5: 3 {O(1)} 7: lbl13->lbl31, Arg_6: -1 {O(1)} 7: lbl13->lbl31, Arg_7: Arg_7 {O(n)} 7: lbl13->lbl31, Arg_8: 2 {O(1)} 7: lbl13->lbl31, Arg_9: Arg_9 {O(n)} 4: lbl31->lbl43, Arg_0: 2 {O(1)} 4: lbl31->lbl43, Arg_2: Arg_2 {O(n)} 4: lbl31->lbl43, Arg_3: min([1, Arg_4]) {O(n)} 4: lbl31->lbl43, Arg_4: Arg_4 {O(n)} 4: lbl31->lbl43, Arg_5: 2 {O(1)} 4: lbl31->lbl43, Arg_6: -1 {O(1)} 4: lbl31->lbl43, Arg_7: Arg_7 {O(n)} 4: lbl31->lbl43, Arg_8: 1 {O(1)} 4: lbl31->lbl43, Arg_9: Arg_9 {O(n)} 5: lbl31->lbl13, Arg_0: 2 {O(1)} 5: lbl31->lbl13, Arg_2: Arg_2 {O(n)} 5: lbl31->lbl13, Arg_3: 1 {O(1)} 5: lbl31->lbl13, Arg_4: Arg_4 {O(n)} 5: lbl31->lbl13, Arg_5: 2 {O(1)} 5: lbl31->lbl13, Arg_6: 0 {O(1)} 5: lbl31->lbl13, Arg_7: Arg_7 {O(n)} 5: lbl31->lbl13, Arg_8: 2 {O(1)} 5: lbl31->lbl13, Arg_9: Arg_9 {O(n)} 2: lbl43->lbl43, Arg_0: 3 {O(1)} 2: lbl43->lbl43, Arg_2: Arg_2 {O(n)} 2: lbl43->lbl43, Arg_3: min([1, Arg_4]) {O(n)} 2: lbl43->lbl43, Arg_4: Arg_4 {O(n)} 2: lbl43->lbl43, Arg_5: 3 {O(1)} 2: lbl43->lbl43, Arg_6: -1 {O(1)} 2: lbl43->lbl43, Arg_7: Arg_7 {O(n)} 2: lbl43->lbl43, Arg_8: 2 {O(1)} 2: lbl43->lbl43, Arg_9: Arg_9 {O(n)} 3: lbl43->lbl13, Arg_0: 2 {O(1)} 3: lbl43->lbl13, Arg_2: Arg_2 {O(n)} 3: lbl43->lbl13, Arg_3: 1 {O(1)} 3: lbl43->lbl13, Arg_4: Arg_4 {O(n)} 3: lbl43->lbl13, Arg_5: 2 {O(1)} 3: lbl43->lbl13, Arg_6: -1 {O(1)} 3: lbl43->lbl13, Arg_7: Arg_7 {O(n)} 3: lbl43->lbl13, Arg_8: 2 {O(1)} 3: lbl43->lbl13, Arg_9: Arg_9 {O(n)} 0: start->stop, Arg_0: Arg_0 {O(n)} 0: start->stop, Arg_1: Arg_2 {O(n)} 0: start->stop, Arg_2: Arg_2 {O(n)} 0: start->stop, Arg_3: Arg_4 {O(n)} 0: start->stop, Arg_4: Arg_4 {O(n)} 0: start->stop, Arg_5: Arg_0 {O(n)} 0: start->stop, Arg_6: Arg_7 {O(n)} 0: start->stop, Arg_7: Arg_7 {O(n)} 0: start->stop, Arg_8: 1 {O(1)} 0: start->stop, Arg_9: Arg_9 {O(n)} 1: start->lbl31, Arg_0: 2 {O(1)} 1: start->lbl31, Arg_2: Arg_2 {O(n)} 1: start->lbl31, Arg_3: Arg_4 {O(n)} 1: start->lbl31, Arg_4: Arg_4 {O(n)} 1: start->lbl31, Arg_5: 2 {O(1)} 1: start->lbl31, Arg_6: Arg_7 {O(n)} 1: start->lbl31, Arg_7: Arg_7 {O(n)} 1: start->lbl31, Arg_8: 1 {O(1)} 1: start->lbl31, Arg_9: Arg_9 {O(n)} 8: start0->start, Arg_0: Arg_0 {O(n)} 8: start0->start, Arg_1: Arg_2 {O(n)} 8: start0->start, Arg_2: Arg_2 {O(n)} 8: start0->start, Arg_3: Arg_4 {O(n)} 8: start0->start, Arg_4: Arg_4 {O(n)} 8: start0->start, Arg_5: Arg_0 {O(n)} 8: start0->start, Arg_6: Arg_7 {O(n)} 8: start0->start, Arg_7: Arg_7 {O(n)} 8: start0->start, Arg_8: Arg_9 {O(n)} 8: start0->start, Arg_9: Arg_9 {O(n)} `Upper: 6: lbl13->stop, Arg_0: Arg_0 {O(n)} 6: lbl13->stop, Arg_2: Arg_2 {O(n)} 6: lbl13->stop, Arg_3: max([1, 1+2*max([0, -1+Arg_0])]) {O(n)} 6: lbl13->stop, Arg_4: Arg_4 {O(n)} 6: lbl13->stop, Arg_5: Arg_0 {O(n)} 6: lbl13->stop, Arg_6: max([0, max([-1, max([-1+2*max([0, -1+Arg_0]), 2*max([0, -1+Arg_0])])])]) {O(n)} 6: lbl13->stop, Arg_7: Arg_7 {O(n)} 6: lbl13->stop, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 6: lbl13->stop, Arg_9: Arg_9 {O(n)} 7: lbl13->lbl31, Arg_0: Arg_0 {O(n)} 7: lbl13->lbl31, Arg_2: Arg_2 {O(n)} 7: lbl13->lbl31, Arg_3: max([1, 1+2*max([0, -1+Arg_0])]) {O(n)} 7: lbl13->lbl31, Arg_4: Arg_4 {O(n)} 7: lbl13->lbl31, Arg_5: Arg_0 {O(n)} 7: lbl13->lbl31, Arg_6: max([0, max([-1, max([-1+2*max([0, -1+Arg_0]), 2*max([0, -1+Arg_0])])])]) {O(n)} 7: lbl13->lbl31, Arg_7: Arg_7 {O(n)} 7: lbl13->lbl31, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 7: lbl13->lbl31, Arg_9: Arg_9 {O(n)} 4: lbl31->lbl43, Arg_0: Arg_0 {O(n)} 4: lbl31->lbl43, Arg_2: Arg_2 {O(n)} 4: lbl31->lbl43, Arg_3: max([1, max([Arg_4, 1+2*max([0, -1+Arg_0])])]) {O(n)} 4: lbl31->lbl43, Arg_4: Arg_4 {O(n)} 4: lbl31->lbl43, Arg_5: Arg_0 {O(n)} 4: lbl31->lbl43, Arg_6: max([-1, -1+2*max([0, -1+Arg_0])]) {O(n)} 4: lbl31->lbl43, Arg_7: Arg_7 {O(n)} 4: lbl31->lbl43, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 4: lbl31->lbl43, Arg_9: Arg_9 {O(n)} 5: lbl31->lbl13, Arg_0: Arg_0 {O(n)} 5: lbl31->lbl13, Arg_2: Arg_2 {O(n)} 5: lbl31->lbl13, Arg_3: max([1, 1+2*max([0, -1+Arg_0])]) {O(n)} 5: lbl31->lbl13, Arg_4: Arg_4 {O(n)} 5: lbl31->lbl13, Arg_5: Arg_0 {O(n)} 5: lbl31->lbl13, Arg_6: max([0, 2*max([0, -1+Arg_0])]) {O(n)} 5: lbl31->lbl13, Arg_7: Arg_7 {O(n)} 5: lbl31->lbl13, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 5: lbl31->lbl13, Arg_9: Arg_9 {O(n)} 2: lbl43->lbl43, Arg_0: Arg_0 {O(n)} 2: lbl43->lbl43, Arg_2: Arg_2 {O(n)} 2: lbl43->lbl43, Arg_3: max([1, max([Arg_4, 1+2*max([0, -1+Arg_0])])]) {O(n)} 2: lbl43->lbl43, Arg_4: Arg_4 {O(n)} 2: lbl43->lbl43, Arg_5: Arg_0 {O(n)} 2: lbl43->lbl43, Arg_6: max([-1, -1+2*max([0, -1+Arg_0])]) {O(n)} 2: lbl43->lbl43, Arg_7: Arg_7 {O(n)} 2: lbl43->lbl43, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 2: lbl43->lbl43, Arg_9: Arg_9 {O(n)} 3: lbl43->lbl13, Arg_0: Arg_0 {O(n)} 3: lbl43->lbl13, Arg_2: Arg_2 {O(n)} 3: lbl43->lbl13, Arg_3: 1+2*max([0, -1+Arg_0]) {O(n)} 3: lbl43->lbl13, Arg_4: Arg_4 {O(n)} 3: lbl43->lbl13, Arg_5: Arg_0 {O(n)} 3: lbl43->lbl13, Arg_6: max([-1, -1+2*max([0, -1+Arg_0])]) {O(n)} 3: lbl43->lbl13, Arg_7: Arg_7 {O(n)} 3: lbl43->lbl13, Arg_8: 1+2*max([0, -1+Arg_0]) {O(n)} 3: lbl43->lbl13, Arg_9: Arg_9 {O(n)} 0: start->stop, Arg_0: 1 {O(1)} 0: start->stop, Arg_1: Arg_2 {O(n)} 0: start->stop, Arg_2: Arg_2 {O(n)} 0: start->stop, Arg_3: Arg_4 {O(n)} 0: start->stop, Arg_4: Arg_4 {O(n)} 0: start->stop, Arg_5: 1 {O(1)} 0: start->stop, Arg_6: Arg_7 {O(n)} 0: start->stop, Arg_7: Arg_7 {O(n)} 0: start->stop, Arg_8: 1 {O(1)} 0: start->stop, Arg_9: Arg_9 {O(n)} 1: start->lbl31, Arg_0: Arg_0 {O(n)} 1: start->lbl31, Arg_2: Arg_2 {O(n)} 1: start->lbl31, Arg_3: Arg_4 {O(n)} 1: start->lbl31, Arg_4: Arg_4 {O(n)} 1: start->lbl31, Arg_5: Arg_0 {O(n)} 1: start->lbl31, Arg_6: Arg_7 {O(n)} 1: start->lbl31, Arg_7: Arg_7 {O(n)} 1: start->lbl31, Arg_8: 1 {O(1)} 1: start->lbl31, Arg_9: Arg_9 {O(n)} 8: start0->start, Arg_0: Arg_0 {O(n)} 8: start0->start, Arg_1: Arg_2 {O(n)} 8: start0->start, Arg_2: Arg_2 {O(n)} 8: start0->start, Arg_3: Arg_4 {O(n)} 8: start0->start, Arg_4: Arg_4 {O(n)} 8: start0->start, Arg_5: Arg_0 {O(n)} 8: start0->start, Arg_6: Arg_7 {O(n)} 8: start0->start, Arg_7: Arg_7 {O(n)} 8: start0->start, Arg_8: Arg_9 {O(n)} 8: start0->start, Arg_9: Arg_9 {O(n)} ---------------------------------------- (2) BOUNDS(1, nat(-2 + 2 * Arg_0) + max(3, -1 + 2 * Arg_0) + max(4, 2 * Arg_0) + max(3, 3 + Arg_0 * max(4, 2 * Arg_0) + min(-2 * Arg_0, -4)) + max(1, Arg_0)) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: start0 0: start -> stop : Q'=1, [ 1>=A && B==C && D==E && F==A && G==H && Q==J ], cost: 1 1: start -> lbl31 : B'=free, Q'=1, [ A>=2 && B==C && D==E && F==A && G==H && Q==J ], cost: 1 2: lbl43 -> lbl43 : G'=-1+G, [ G>=0 && Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 6: lbl13 -> stop : [ G+A>=2 && 1+G>=0 && A>=2+G && F==A && Q==A && 1+D==A ], cost: 1 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && A>=1+D && D>=1+G && F==A && Q==1+D ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, G'=H, Q'=J, [], cost: 1 Removed unreachable and leaf rules: Start location: start0 1: start -> lbl31 : B'=free, Q'=1, [ A>=2 && B==C && D==E && F==A && G==H && Q==J ], cost: 1 2: lbl43 -> lbl43 : G'=-1+G, [ G>=0 && Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && A>=1+D && D>=1+G && F==A && Q==1+D ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, G'=H, Q'=J, [], cost: 1 Simplified all rules, resulting in: Start location: start0 1: start -> lbl31 : B'=free, Q'=1, [ A>=2 && B==C && D==E && F==A && G==H && Q==J ], cost: 1 2: lbl43 -> lbl43 : G'=-1+G, [ G>=0 && Q>=2+G && A>=1+Q && F==A ], cost: 1 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && D>=1+G && F==A && Q==1+D ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, G'=H, Q'=J, [], cost: 1 ### Simplification by acceleration and chaining ### Accelerating simple loops of location 1. Accelerating the following rules: 2: lbl43 -> lbl43 : G'=-1+G, [ G>=0 && Q>=2+G && A>=1+Q && F==A ], cost: 1 Accelerated rule 2 with metering function 1+G, yielding the new rule 9. Removing the simple loops: 2. Accelerated all simple loops using metering functions (where possible): Start location: start0 1: start -> lbl31 : B'=free, Q'=1, [ A>=2 && B==C && D==E && F==A && G==H && Q==J ], cost: 1 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 9: lbl43 -> lbl43 : G'=-1, [ G>=0 && Q>=2+G && A>=1+Q && F==A ], cost: 1+G 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && D>=1+G && F==A && Q==1+D ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, G'=H, Q'=J, [], cost: 1 Chained accelerated rules (with incoming rules): Start location: start0 1: start -> lbl31 : B'=free, Q'=1, [ A>=2 && B==C && D==E && F==A && G==H && Q==J ], cost: 1 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 10: lbl31 -> lbl43 : G'=-1, [ A>=1+Q && F==A && -2+Q>=0 ], cost: Q 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && D>=1+G && F==A && Q==1+D ], cost: 1 8: start0 -> start : B'=C, D'=E, F'=A, G'=H, Q'=J, [], cost: 1 Eliminated locations (on linear paths): Start location: start0 3: lbl43 -> lbl13 : D'=Q, Q'=1+Q, [ Q>=2+G && 1+G>=0 && A>=1+Q && F==A ], cost: 1 4: lbl31 -> lbl43 : G'=-2+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 5: lbl31 -> lbl13 : D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && A>=1+Q && F==A ], cost: 1 10: lbl31 -> lbl43 : G'=-1, [ A>=1+Q && F==A && -2+Q>=0 ], cost: Q 7: lbl13 -> lbl31 : B'=free_1, [ A>=2+D && G+D>=1 && 1+G>=0 && D>=1+G && F==A && Q==1+D ], cost: 1 11: start0 -> lbl31 : B'=free, D'=E, F'=A, G'=H, Q'=1, [ A>=2 ], cost: 2 Eliminated locations (on tree-shaped paths): Start location: start0 14: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && F==A && A>=2+Q && -1+2*Q>=1 ], cost: 2 15: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-2+Q, Q'=1+Q, [ Q>=1 && F==A && A>=2+Q && -2+2*Q>=1 ], cost: 3 16: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-1, Q'=1+Q, [ F==A && -2+Q>=0 && A>=2+Q ], cost: 2+Q 11: start0 -> lbl31 : B'=free, D'=E, F'=A, G'=H, Q'=1, [ A>=2 ], cost: 2 Accelerating simple loops of location 2. Accelerating the following rules: 14: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-1+Q, Q'=1+Q, [ Q>=1 && F==A && A>=2+Q && -1+2*Q>=1 ], cost: 2 15: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-2+Q, Q'=1+Q, [ Q>=1 && F==A && A>=2+Q && -2+2*Q>=1 ], cost: 3 16: lbl31 -> lbl31 : B'=free_1, D'=Q, G'=-1, Q'=1+Q, [ F==A && -2+Q>=0 && A>=2+Q ], cost: 2+Q Accelerated rule 14 with metering function -1-Q+A, yielding the new rule 17. Accelerated rule 15 with metering function -1-Q+A, yielding the new rule 18. Accelerated rule 16 with metering function -1-Q+A, yielding the new rule 19. Removing the simple loops: 14 15 16. Accelerated all simple loops using metering functions (where possible): Start location: start0 17: lbl31 -> lbl31 : B'=free_1, D'=-2+A, G'=-3+A, Q'=-1+A, [ Q>=1 && F==A && A>=2+Q && -1+2*Q>=1 ], cost: -2-2*Q+2*A 18: lbl31 -> lbl31 : B'=free_1, D'=-2+A, G'=-4+A, Q'=-1+A, [ Q>=1 && F==A && A>=2+Q && -2+2*Q>=1 ], cost: -3-3*Q+3*A 19: lbl31 -> lbl31 : B'=free_1, D'=-2+A, G'=-1, Q'=-1+A, [ F==A && -2+Q>=0 && A>=2+Q ], cost: -3/2-3/2*Q+1/2*(1+Q-A)^2+3/2*A-Q*(1+Q-A) 11: start0 -> lbl31 : B'=free, D'=E, F'=A, G'=H, Q'=1, [ A>=2 ], cost: 2 Chained accelerated rules (with incoming rules): Start location: start0 11: start0 -> lbl31 : B'=free, D'=E, F'=A, G'=H, Q'=1, [ A>=2 ], cost: 2 20: start0 -> lbl31 : B'=free_1, D'=-2+A, F'=A, G'=-3+A, Q'=-1+A, [ A>=3 ], cost: -2+2*A Removed unreachable locations (and leaf rules with constant cost): Start location: start0 20: start0 -> lbl31 : B'=free_1, D'=-2+A, F'=A, G'=-3+A, Q'=-1+A, [ A>=3 ], cost: -2+2*A ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: start0 20: start0 -> lbl31 : B'=free_1, D'=-2+A, F'=A, G'=-3+A, Q'=-1+A, [ A>=3 ], cost: -2+2*A Computing asymptotic complexity for rule 20 Solved the limit problem by the following transformations: Created initial limit problem: -2+2*A (+), -2+A (+/+!) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {A==n} resulting limit problem: [solved] Solution: A / n Resulting cost -2+2*n has complexity: Poly(n^1) Found new complexity Poly(n^1). Obtained the following overall complexity (w.r.t. the length of the input n): Complexity: Poly(n^1) Cpx degree: 1 Solved cost: -2+2*n Rule cost: -2+2*A Rule guard: [ A>=3 ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (4) BOUNDS(n^1, INF)