6.96/3.17 WORST_CASE(?, O(n^1)) 6.96/3.18 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 6.96/3.18 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.96/3.18 6.96/3.18 6.96/3.18 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(1, nat(-65280 * Arg_1 + -16646400 * Arg_2) + nat(256 * Arg_1) + nat(-1 * Arg_1 + 255 * Arg_2) + max(10 + -1 * Arg_1 + -255 * Arg_2, 10) + nat(255 + -1 * Arg_1) + nat(-65280 * Arg_1 + 16646400 * Arg_2)). 6.96/3.18 6.96/3.18 (0) CpxIntTrs 6.96/3.18 (1) Koat2 Proof [FINISHED, 1255 ms] 6.96/3.18 (2) BOUNDS(1, nat(-65280 * Arg_1 + -16646400 * Arg_2) + nat(256 * Arg_1) + nat(-1 * Arg_1 + 255 * Arg_2) + max(10 + -1 * Arg_1 + -255 * Arg_2, 10) + nat(255 + -1 * Arg_1) + nat(-65280 * Arg_1 + 16646400 * Arg_2)) 6.96/3.18 6.96/3.18 6.96/3.18 ---------------------------------------- 6.96/3.18 6.96/3.18 (0) 6.96/3.18 Obligation: 6.96/3.18 Complexity Int TRS consisting of the following rules: 6.96/3.18 eval_ex3_start(v__0, v_b, v_x) -> Com_1(eval_ex3_bb0_in(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_bb0_in(v__0, v_b, v_x) -> Com_1(eval_ex3_0(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_0(v__0, v_b, v_x) -> Com_1(eval_ex3_1(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_1(v__0, v_b, v_x) -> Com_1(eval_ex3_2(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_2(v__0, v_b, v_x) -> Com_1(eval_ex3_3(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_3(v__0, v_b, v_x) -> Com_1(eval_ex3_4(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_4(v__0, v_b, v_x) -> Com_1(eval_ex3_bb1_in(v_x, v_b, v_x)) :|: TRUE 6.96/3.18 eval_ex3_bb1_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb2_in(v__0, v_b, v_x)) :|: 0 < v__0 && v__0 < 255 6.96/3.18 eval_ex3_bb1_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb3_in(v__0, v_b, v_x)) :|: 0 >= v__0 6.96/3.18 eval_ex3_bb1_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb3_in(v__0, v_b, v_x)) :|: v__0 >= 255 6.96/3.18 eval_ex3_bb2_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb1_in(v__0 + 1, v_b, v_x)) :|: v_b < 0 6.96/3.18 eval_ex3_bb2_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb1_in(v__0 + 1, v_b, v_x)) :|: v_b > 0 6.96/3.18 eval_ex3_bb2_in(v__0, v_b, v_x) -> Com_1(eval_ex3_bb1_in(v__0 - 1, v_b, v_x)) :|: v_b >= 0 && v_b <= 0 6.96/3.18 eval_ex3_bb3_in(v__0, v_b, v_x) -> Com_1(eval_ex3_stop(v__0, v_b, v_x)) :|: TRUE 6.96/3.18 6.96/3.18 The start-symbols are:[eval_ex3_start_3] 6.96/3.18 6.96/3.18 6.96/3.18 ---------------------------------------- 6.96/3.18 6.96/3.18 (1) Koat2 Proof (FINISHED) 6.96/3.18 YES( ?, 4+6+max([0, -(Arg_1)+-255*Arg_2])+max([0, 255-Arg_1])+255*(max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]))+max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, -(Arg_1)+255*Arg_2])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]) {O(n)}) 6.96/3.18 6.96/3.18 6.96/3.18 6.96/3.18 Initial Complexity Problem: 6.96/3.18 6.96/3.18 Start: evalex3start 6.96/3.18 6.96/3.18 Program_Vars: Arg_0, Arg_1, Arg_2 6.96/3.18 6.96/3.18 Temp_Vars: 6.96/3.18 6.96/3.18 Locations: evalex30, evalex31, evalex32, evalex33, evalex34, evalex3bb0in, evalex3bb1in, evalex3bb2in, evalex3bb3in, evalex3start, evalex3stop 6.96/3.18 6.96/3.18 Transitions: 6.96/3.18 6.96/3.18 evalex30(Arg_0,Arg_1,Arg_2) -> evalex31(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex31(Arg_0,Arg_1,Arg_2) -> evalex32(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex32(Arg_0,Arg_1,Arg_2) -> evalex33(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex33(Arg_0,Arg_1,Arg_2) -> evalex34(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex34(Arg_0,Arg_1,Arg_2) -> evalex3bb1in(Arg_1,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex3bb0in(Arg_0,Arg_1,Arg_2) -> evalex30(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex3bb1in(Arg_0,Arg_1,Arg_2) -> evalex3bb2in(Arg_0,Arg_1,Arg_2):|:1 <= Arg_0 && Arg_0 <= 254 6.96/3.18 6.96/3.18 evalex3bb1in(Arg_0,Arg_1,Arg_2) -> evalex3bb3in(Arg_0,Arg_1,Arg_2):|:Arg_0 <= 0 6.96/3.18 6.96/3.18 evalex3bb1in(Arg_0,Arg_1,Arg_2) -> evalex3bb3in(Arg_0,Arg_1,Arg_2):|:255 <= Arg_0 6.96/3.18 6.96/3.18 evalex3bb2in(Arg_0,Arg_1,Arg_2) -> evalex3bb1in(Arg_0+1,Arg_1,Arg_2):|:Arg_0 <= 254 && 1 <= Arg_0 && Arg_2+1 <= 0 6.96/3.18 6.96/3.18 evalex3bb2in(Arg_0,Arg_1,Arg_2) -> evalex3bb1in(Arg_0+1,Arg_1,Arg_2):|:Arg_0 <= 254 && 1 <= Arg_0 && 1 <= Arg_2 6.96/3.18 6.96/3.18 evalex3bb2in(Arg_0,Arg_1,Arg_2) -> evalex3bb1in(Arg_0-1,Arg_1,Arg_2):|:Arg_0 <= 254 && 1 <= Arg_0 && Arg_2 <= 0 && 0 <= Arg_2 6.96/3.18 6.96/3.18 evalex3bb3in(Arg_0,Arg_1,Arg_2) -> evalex3stop(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 evalex3start(Arg_0,Arg_1,Arg_2) -> evalex3bb0in(Arg_0,Arg_1,Arg_2):|: 6.96/3.18 6.96/3.18 6.96/3.18 6.96/3.18 Timebounds: 6.96/3.18 6.96/3.18 Overall timebound: 4+6+max([0, -(Arg_1)+-255*Arg_2])+max([0, 255-Arg_1])+255*(max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]))+max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, -(Arg_1)+255*Arg_2])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31: 1 {O(1)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32: 1 {O(1)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33: 1 {O(1)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34: 1 {O(1)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in: 1 {O(1)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30: 1 {O(1)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in: 255*(max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]))+max([0, 255-Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in: 1 {O(1)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in: 1 {O(1)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in: max([0, -(Arg_1)+-255*Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in: max([0, -(Arg_1)+255*Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in: max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop: 1 {O(1)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in: 1 {O(1)} 6.96/3.18 6.96/3.18 6.96/3.18 6.96/3.18 Costbounds: 6.96/3.18 6.96/3.18 Overall costbound: 4+6+max([0, -(Arg_1)+-255*Arg_2])+max([0, 255-Arg_1])+255*(max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]))+max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, -(Arg_1)+255*Arg_2])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31: 1 {O(1)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32: 1 {O(1)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33: 1 {O(1)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34: 1 {O(1)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in: 1 {O(1)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30: 1 {O(1)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in: 255*(max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]))+max([0, 255-Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in: 1 {O(1)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in: 1 {O(1)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in: max([0, -(Arg_1)+-255*Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in: max([0, -(Arg_1)+255*Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in: max([0, 255*(-(Arg_1)+255*Arg_2)])+max([0, 255*(-(Arg_1)+-255*Arg_2)])+max([0, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop: 1 {O(1)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in: 1 {O(1)} 6.96/3.18 6.96/3.18 6.96/3.18 6.96/3.18 Sizebounds: 6.96/3.18 6.96/3.18 `Lower: 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_0: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_0: 1 {O(1)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_2: min([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_0: min([0, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_2: min([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_0: 255 {O(1)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_2: min([0, min([1, Arg_2])]) {O(n)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_0: 2 {O(1)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_2: min([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_0: 2 {O(1)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_2: 1 {O(1)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_0: 0 {O(1)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_2: 0 {O(1)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_0: min([255, min([0, Arg_1])]) {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_2: min([1, min([0, Arg_2])]) {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 `Upper: 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 2: evalex30->evalex31, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 3: evalex31->evalex32, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 4: evalex32->evalex33, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 5: evalex33->evalex34, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_0: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 6: evalex34->evalex3bb1in, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 1: evalex3bb0in->evalex30, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_0: 254 {O(1)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 7: evalex3bb1in->evalex3bb2in, Arg_2: max([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_0: 0 {O(1)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 8: evalex3bb1in->evalex3bb3in, Arg_2: max([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_0: max([255, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 9: evalex3bb1in->evalex3bb3in, Arg_2: max([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_0: 255 {O(1)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 10: evalex3bb2in->evalex3bb1in, Arg_2: -1 {O(1)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_0: 255 {O(1)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 11: evalex3bb2in->evalex3bb1in, Arg_2: max([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_0: 253 {O(1)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 12: evalex3bb2in->evalex3bb1in, Arg_2: 0 {O(1)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_0: max([255, Arg_1]) {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 13: evalex3bb3in->evalex3stop, Arg_2: max([0, Arg_2]) {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_0: Arg_0 {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_1: Arg_1 {O(n)} 6.96/3.18 6.96/3.18 0: evalex3start->evalex3bb0in, Arg_2: Arg_2 {O(n)} 6.96/3.18 6.96/3.18 6.96/3.18 ---------------------------------------- 6.96/3.18 6.96/3.18 (2) 6.96/3.18 BOUNDS(1, nat(-65280 * Arg_1 + -16646400 * Arg_2) + nat(256 * Arg_1) + nat(-1 * Arg_1 + 255 * Arg_2) + max(10 + -1 * Arg_1 + -255 * Arg_2, 10) + nat(255 + -1 * Arg_1) + nat(-65280 * Arg_1 + 16646400 * Arg_2)) 7.05/3.20 EOF