/export/starexec/sandbox/solver/bin/starexec_run_complexity /export/starexec/sandbox/benchmark/theBenchmark.koat /export/starexec/sandbox/output/output_files -------------------------------------------------------------------------------- WORST_CASE(?, O(n^2)) proof of /export/starexec/sandbox/benchmark/theBenchmark.koat # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(1, nat(2 * Arg_0 * max(-4 + 4 * Arg_0, 8) + min(8 + -8 * Arg_0, -16)) + nat(-1 + Arg_0) + max(-8 + 8 * Arg_0, 8) + max(4, 2 * Arg_0) + max(6, 6 + Arg_0)). (0) CpxIntTrs (1) Koat2 Proof [FINISHED, 3395 ms] (2) BOUNDS(1, nat(2 * Arg_0 * max(-4 + 4 * Arg_0, 8) + min(8 + -8 * Arg_0, -16)) + nat(-1 + Arg_0) + max(-8 + 8 * Arg_0, 8) + max(4, 2 * Arg_0) + max(6, 6 + Arg_0)) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: start(A, B, C, D, E, F) -> Com_1(stop(A, B, C, F, E, F)) :|: 0 >= A + 1 && B >= C && B <= C && D >= E && D <= E && F >= A && F <= A start(A, B, C, D, E, F) -> Com_1(lbl121(A, 1, C, F - 1, E, F)) :|: A >= 0 && 1 >= A && B >= C && B <= C && D >= E && D <= E && F >= A && F <= A start(A, B, C, D, E, F) -> Com_1(lbl101(A, 2, C, F, E, F)) :|: A >= 2 && B >= C && B <= C && D >= E && D <= E && F >= A && F <= A lbl121(A, B, C, D, E, F) -> Com_1(stop(A, B, C, D, E, F)) :|: A >= 0 && B >= 0 && B >= 1 && D + 1 >= 0 && D + 1 <= 0 && F >= A && F <= A lbl121(A, B, C, D, E, F) -> Com_1(lbl121(A, 1, C, D - 1, E, F)) :|: D >= 0 && 1 >= D && A >= D + 1 && B >= D + 1 && B >= 1 && D + 1 >= 0 && F >= A && F <= A lbl121(A, B, C, D, E, F) -> Com_1(lbl101(A, 2, C, D, E, F)) :|: D >= 2 && A >= D + 1 && B >= D + 1 && B >= 1 && D + 1 >= 0 && F >= A && F <= A lbl101(A, B, C, D, E, F) -> Com_1(lbl101(A, 2 * B, C, D, E, F)) :|: D >= B + 1 && B >= 2 && 2 * D >= B + 2 && A >= D && F >= A && F <= A lbl101(A, B, C, D, E, F) -> Com_1(lbl121(A, B, C, D - 1, E, F)) :|: B >= D && B >= 2 && 2 * D >= B + 2 && A >= D && F >= A && F <= A start0(A, B, C, D, E, F) -> Com_1(start(A, C, C, E, E, A)) :|: TRUE The start-symbols are:[start0_6] ---------------------------------------- (1) Koat2 Proof (FINISHED) YES( ?, 5+max([1, 1+Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([0, -1+Arg_0])+max([4, -4+4*Arg_0])+max([4, 2*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0]) {O(n^2)}) Initial Complexity Problem: Start: start0 Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5 Temp_Vars: Locations: lbl101, lbl121, start, start0, stop Transitions: lbl101(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl101(Arg_0,(2)*Arg_1,Arg_2,Arg_3,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_3+Arg_5 && Arg_3 <= Arg_5 && 4 <= Arg_1+Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && Arg_3 <= Arg_0 && 2 <= Arg_3 && 4 <= Arg_1+Arg_3 && 4 <= Arg_0+Arg_3 && 2 <= Arg_1 && 4 <= Arg_0+Arg_1 && 2 <= Arg_0 && Arg_1+1 <= Arg_3 && 2 <= Arg_1 && Arg_1+2 <= (2)*Arg_3 && Arg_3 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl101(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl121(Arg_0,Arg_1,Arg_2,Arg_3-1,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && 2 <= Arg_5 && 4 <= Arg_3+Arg_5 && Arg_3 <= Arg_5 && 4 <= Arg_1+Arg_5 && 4 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && Arg_3 <= Arg_0 && 2 <= Arg_3 && 4 <= Arg_1+Arg_3 && 4 <= Arg_0+Arg_3 && 2 <= Arg_1 && 4 <= Arg_0+Arg_1 && 2 <= Arg_0 && Arg_3 <= Arg_1 && 2 <= Arg_1 && Arg_1+2 <= (2)*Arg_3 && Arg_3 <= Arg_0 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl121(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl101(Arg_0,2,Arg_2,Arg_3,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && 0 <= Arg_5 && 0 <= 1+Arg_3+Arg_5 && 1+Arg_3 <= Arg_5 && 1 <= Arg_1+Arg_5 && 0 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 1+Arg_3 <= Arg_1 && 1+Arg_3 <= Arg_0 && 0 <= 1+Arg_3 && 0 <= Arg_1+Arg_3 && 0 <= 1+Arg_0+Arg_3 && 1 <= Arg_1 && 1 <= Arg_0+Arg_1 && 0 <= Arg_0 && 2 <= Arg_3 && Arg_3+1 <= Arg_0 && Arg_3+1 <= Arg_1 && 1 <= Arg_1 && 0 <= 1+Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl121(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl121(Arg_0,1,Arg_2,Arg_3-1,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && 0 <= Arg_5 && 0 <= 1+Arg_3+Arg_5 && 1+Arg_3 <= Arg_5 && 1 <= Arg_1+Arg_5 && 0 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 1+Arg_3 <= Arg_1 && 1+Arg_3 <= Arg_0 && 0 <= 1+Arg_3 && 0 <= Arg_1+Arg_3 && 0 <= 1+Arg_0+Arg_3 && 1 <= Arg_1 && 1 <= Arg_0+Arg_1 && 0 <= Arg_0 && 0 <= Arg_3 && Arg_3 <= 1 && Arg_3+1 <= Arg_0 && Arg_3+1 <= Arg_1 && 1 <= Arg_1 && 0 <= 1+Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 lbl121(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> stop(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && 0 <= Arg_5 && 0 <= 1+Arg_3+Arg_5 && 1+Arg_3 <= Arg_5 && 1 <= Arg_1+Arg_5 && 0 <= Arg_0+Arg_5 && Arg_0 <= Arg_5 && 1+Arg_3 <= Arg_1 && 1+Arg_3 <= Arg_0 && 0 <= 1+Arg_3 && 0 <= Arg_1+Arg_3 && 0 <= 1+Arg_0+Arg_3 && 1 <= Arg_1 && 1 <= Arg_0+Arg_1 && 0 <= Arg_0 && 0 <= Arg_0 && 0 <= Arg_1 && 1 <= Arg_1 && Arg_3+1 <= 0 && 0 <= 1+Arg_3 && Arg_5 <= Arg_0 && Arg_0 <= Arg_5 start(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl101(Arg_0,2,Arg_2,Arg_5,Arg_4,Arg_5):|: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 start(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> lbl121(Arg_0,1,Arg_2,Arg_5-1,Arg_4,Arg_5):|:Arg_5 <= Arg_0 && Arg_0 <= Arg_5 && Arg_4 <= Arg_3 && Arg_3 <= Arg_4 && Arg_2 <= Arg_1 && Arg_1 <= Arg_2 && 0 <= Arg_0 && 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 start(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> stop(Arg_0,Arg_1,Arg_2,Arg_5,Arg_4,Arg_5):|: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 <= 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 start0(Arg_0,Arg_1,Arg_2,Arg_3,Arg_4,Arg_5) -> start(Arg_0,Arg_2,Arg_2,Arg_4,Arg_4,Arg_0):|: Timebounds: Overall timebound: 5+max([1, 1+Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([0, -1+Arg_0])+max([4, -4+4*Arg_0])+max([4, 2*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0]) {O(n^2)} 6: lbl101->lbl101: max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])]) {O(n^2)} 7: lbl101->lbl121: max([4, 2*Arg_0]) {O(n)} 3: lbl121->stop: 1 {O(1)} 4: lbl121->lbl121: max([1, 1+Arg_0]) {O(n)} 5: lbl121->lbl101: max([0, -1+Arg_0]) {O(n)} 0: start->stop: 1 {O(1)} 1: start->lbl121: 1 {O(1)} 2: start->lbl101: 1 {O(1)} 8: start0->start: 1 {O(1)} Costbounds: Overall costbound: 5+max([1, 1+Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([0, -1+Arg_0])+max([4, -4+4*Arg_0])+max([4, 2*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0]) {O(n^2)} 6: lbl101->lbl101: max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])]) {O(n^2)} 7: lbl101->lbl121: max([4, 2*Arg_0]) {O(n)} 3: lbl121->stop: 1 {O(1)} 4: lbl121->lbl121: max([1, 1+Arg_0]) {O(n)} 5: lbl121->lbl101: max([0, -1+Arg_0]) {O(n)} 0: start->stop: 1 {O(1)} 1: start->lbl121: 1 {O(1)} 2: start->lbl101: 1 {O(1)} 8: start0->start: 1 {O(1)} Sizebounds: `Lower: 6: lbl101->lbl101, Arg_0: 3 {O(1)} 6: lbl101->lbl101, Arg_1: 4 {O(1)} 6: lbl101->lbl101, Arg_2: Arg_2 {O(n)} 6: lbl101->lbl101, Arg_3: 3 {O(1)} 6: lbl101->lbl101, Arg_4: Arg_4 {O(n)} 6: lbl101->lbl101, Arg_5: 3 {O(1)} 7: lbl101->lbl121, Arg_0: 2 {O(1)} 7: lbl101->lbl121, Arg_1: 2 {O(1)} 7: lbl101->lbl121, Arg_2: Arg_2 {O(n)} 7: lbl101->lbl121, Arg_3: 1 {O(1)} 7: lbl101->lbl121, Arg_4: Arg_4 {O(n)} 7: lbl101->lbl121, Arg_5: 2 {O(1)} 3: lbl121->stop, Arg_0: 0 {O(1)} 3: lbl121->stop, Arg_1: 1 {O(1)} 3: lbl121->stop, Arg_2: Arg_2 {O(n)} 3: lbl121->stop, Arg_3: -1 {O(1)} 3: lbl121->stop, Arg_4: Arg_4 {O(n)} 3: lbl121->stop, Arg_5: 0 {O(1)} 4: lbl121->lbl121, Arg_0: 1 {O(1)} 4: lbl121->lbl121, Arg_1: 1 {O(1)} 4: lbl121->lbl121, Arg_2: Arg_2 {O(n)} 4: lbl121->lbl121, Arg_3: -1 {O(1)} 4: lbl121->lbl121, Arg_4: Arg_4 {O(n)} 4: lbl121->lbl121, Arg_5: 1 {O(1)} 5: lbl121->lbl101, Arg_0: 3 {O(1)} 5: lbl121->lbl101, Arg_1: 2 {O(1)} 5: lbl121->lbl101, Arg_2: Arg_2 {O(n)} 5: lbl121->lbl101, Arg_3: 2 {O(1)} 5: lbl121->lbl101, Arg_4: Arg_4 {O(n)} 5: lbl121->lbl101, Arg_5: 3 {O(1)} 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_0 {O(n)} 0: start->stop, Arg_4: Arg_4 {O(n)} 0: start->stop, Arg_5: Arg_0 {O(n)} 1: start->lbl121, Arg_0: 0 {O(1)} 1: start->lbl121, Arg_1: 1 {O(1)} 1: start->lbl121, Arg_2: Arg_2 {O(n)} 1: start->lbl121, Arg_3: -1 {O(1)} 1: start->lbl121, Arg_4: Arg_4 {O(n)} 1: start->lbl121, Arg_5: 0 {O(1)} 2: start->lbl101, Arg_0: 2 {O(1)} 2: start->lbl101, Arg_1: 2 {O(1)} 2: start->lbl101, Arg_2: Arg_2 {O(n)} 2: start->lbl101, Arg_3: 2 {O(1)} 2: start->lbl101, Arg_4: Arg_4 {O(n)} 2: start->lbl101, Arg_5: 2 {O(1)} 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)} `Upper: 6: lbl101->lbl101, Arg_0: Arg_0 {O(n)} 6: lbl101->lbl101, Arg_1: 2*2^(max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])) {O(EXP)} 6: lbl101->lbl101, Arg_2: Arg_2 {O(n)} 6: lbl101->lbl101, Arg_3: Arg_0 {O(n)} 6: lbl101->lbl101, Arg_4: Arg_4 {O(n)} 6: lbl101->lbl101, Arg_5: Arg_0 {O(n)} 7: lbl101->lbl121, Arg_0: Arg_0 {O(n)} 7: lbl101->lbl121, Arg_1: max([2, 2*2^(max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])])+max([4, -4+4*Arg_0])+max([0, (-1+Arg_0)*max([8, -4+4*Arg_0])]))]) {O(EXP)} 7: lbl101->lbl121, Arg_2: Arg_2 {O(n)} 7: lbl101->lbl121, Arg_3: Arg_0 {O(n)} 7: lbl101->lbl121, Arg_4: Arg_4 {O(n)} 7: lbl101->lbl121, Arg_5: Arg_0 {O(n)} 3: lbl121->stop, Arg_0: max([1, max([1, Arg_0])]) {O(n)} 3: lbl121->stop, Arg_1: 1 {O(1)} 3: lbl121->stop, Arg_2: Arg_2 {O(n)} 3: lbl121->stop, Arg_3: -1 {O(1)} 3: lbl121->stop, Arg_4: Arg_4 {O(n)} 3: lbl121->stop, Arg_5: max([1, max([1, Arg_0])]) {O(n)} 4: lbl121->lbl121, Arg_0: max([1, Arg_0]) {O(n)} 4: lbl121->lbl121, Arg_1: 1 {O(1)} 4: lbl121->lbl121, Arg_2: Arg_2 {O(n)} 4: lbl121->lbl121, Arg_3: 0 {O(1)} 4: lbl121->lbl121, Arg_4: Arg_4 {O(n)} 4: lbl121->lbl121, Arg_5: max([1, Arg_0]) {O(n)} 5: lbl121->lbl101, Arg_0: Arg_0 {O(n)} 5: lbl121->lbl101, Arg_1: 2 {O(1)} 5: lbl121->lbl101, Arg_2: Arg_2 {O(n)} 5: lbl121->lbl101, Arg_3: Arg_0 {O(n)} 5: lbl121->lbl101, Arg_4: Arg_4 {O(n)} 5: lbl121->lbl101, Arg_5: Arg_0 {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: -1 {O(1)} 0: start->stop, Arg_4: Arg_4 {O(n)} 0: start->stop, Arg_5: -1 {O(1)} 1: start->lbl121, Arg_0: 1 {O(1)} 1: start->lbl121, Arg_1: 1 {O(1)} 1: start->lbl121, Arg_2: Arg_2 {O(n)} 1: start->lbl121, Arg_3: 0 {O(1)} 1: start->lbl121, Arg_4: Arg_4 {O(n)} 1: start->lbl121, Arg_5: 1 {O(1)} 2: start->lbl101, Arg_0: Arg_0 {O(n)} 2: start->lbl101, Arg_1: 2 {O(1)} 2: start->lbl101, Arg_2: Arg_2 {O(n)} 2: start->lbl101, Arg_3: Arg_0 {O(n)} 2: start->lbl101, Arg_4: Arg_4 {O(n)} 2: start->lbl101, Arg_5: Arg_0 {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)} ---------------------------------------- (2) BOUNDS(1, nat(2 * Arg_0 * max(-4 + 4 * Arg_0, 8) + min(8 + -8 * Arg_0, -16)) + nat(-1 + Arg_0) + max(-8 + 8 * Arg_0, 8) + max(4, 2 * Arg_0) + max(6, 6 + Arg_0))