4.10/2.16 WORST_CASE(?, O(n^1)) 4.10/2.17 proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat 4.10/2.17 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 4.10/2.17 4.10/2.17 4.10/2.17 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(1, max(3, 105 + -1 * Arg_0 + Arg_1 + -1 * Arg_2) + max(2, 103 + -1 * Arg_0 + Arg_1 + -1 * Arg_2)). 4.10/2.17 4.10/2.17 (0) CpxIntTrs 4.10/2.17 (1) Koat2 Proof [FINISHED, 481 ms] 4.10/2.17 (2) BOUNDS(1, max(3, 105 + -1 * Arg_0 + Arg_1 + -1 * Arg_2) + max(2, 103 + -1 * Arg_0 + Arg_1 + -1 * Arg_2)) 4.10/2.17 4.10/2.17 4.10/2.17 ---------------------------------------- 4.10/2.17 4.10/2.17 (0) 4.10/2.17 Obligation: 4.10/2.17 Complexity Int TRS consisting of the following rules: 4.10/2.17 evalterminatestart(A, B, C) -> Com_1(evalterminateentryin(A, B, C)) :|: TRUE 4.10/2.17 evalterminateentryin(A, B, C) -> Com_1(evalterminatebb1in(B, A, C)) :|: TRUE 4.10/2.17 evalterminatebb1in(A, B, C) -> Com_1(evalterminatebbin(A, B, C)) :|: 100 >= B && A >= C 4.10/2.17 evalterminatebb1in(A, B, C) -> Com_1(evalterminatereturnin(A, B, C)) :|: B >= 101 4.10/2.17 evalterminatebb1in(A, B, C) -> Com_1(evalterminatereturnin(A, B, C)) :|: C >= A + 1 4.10/2.17 evalterminatebbin(A, B, C) -> Com_1(evalterminatebb1in(A - 1, C, B + 1)) :|: TRUE 4.10/2.17 evalterminatereturnin(A, B, C) -> Com_1(evalterminatestop(A, B, C)) :|: TRUE 4.10/2.17 4.10/2.17 The start-symbols are:[evalterminatestart_3] 4.10/2.17 4.10/2.17 4.10/2.17 ---------------------------------------- 4.10/2.17 4.10/2.17 (1) Koat2 Proof (FINISHED) 4.10/2.17 YES( ?, 3+max([0, 102+Arg_1+-(Arg_2)-Arg_0])+max([2, 103+Arg_1+-(Arg_2)-Arg_0]) {O(n)}) 4.10/2.17 4.10/2.17 4.10/2.17 4.10/2.17 Initial Complexity Problem: 4.10/2.17 4.10/2.17 Start: evalterminatestart 4.10/2.17 4.10/2.17 Program_Vars: Arg_0, Arg_1, Arg_2 4.10/2.17 4.10/2.17 Temp_Vars: 4.10/2.17 4.10/2.17 Locations: evalterminatebb1in, evalterminatebbin, evalterminateentryin, evalterminatereturnin, evalterminatestart, evalterminatestop 4.10/2.17 4.10/2.17 Transitions: 4.10/2.17 4.10/2.17 evalterminatebb1in(Arg_0,Arg_1,Arg_2) -> evalterminatebbin(Arg_0,Arg_1,Arg_2):|:Arg_1 <= 100 && Arg_2 <= Arg_0 4.10/2.17 4.10/2.17 evalterminatebb1in(Arg_0,Arg_1,Arg_2) -> evalterminatereturnin(Arg_0,Arg_1,Arg_2):|:101 <= Arg_1 4.10/2.17 4.10/2.17 evalterminatebb1in(Arg_0,Arg_1,Arg_2) -> evalterminatereturnin(Arg_0,Arg_1,Arg_2):|:Arg_0+1 <= Arg_2 4.10/2.17 4.10/2.17 evalterminatebbin(Arg_0,Arg_1,Arg_2) -> evalterminatebb1in(Arg_0-1,Arg_2,Arg_1+1):|:Arg_2 <= Arg_0 && Arg_1 <= 100 4.10/2.17 4.10/2.17 evalterminateentryin(Arg_0,Arg_1,Arg_2) -> evalterminatebb1in(Arg_1,Arg_0,Arg_2):|: 4.10/2.17 4.10/2.17 evalterminatereturnin(Arg_0,Arg_1,Arg_2) -> evalterminatestop(Arg_0,Arg_1,Arg_2):|: 4.10/2.17 4.10/2.17 evalterminatestart(Arg_0,Arg_1,Arg_2) -> evalterminateentryin(Arg_0,Arg_1,Arg_2):|: 4.10/2.17 4.10/2.17 4.10/2.17 4.10/2.17 Timebounds: 4.10/2.17 4.10/2.17 Overall timebound: 3+max([0, 102+Arg_1+-(Arg_2)-Arg_0])+max([2, 103+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin: max([0, 101+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin: 1 {O(1)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin: 1 {O(1)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in: max([0, 102+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in: 1 {O(1)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop: 1 {O(1)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin: 1 {O(1)} 4.10/2.17 4.10/2.17 4.10/2.17 4.10/2.17 Costbounds: 4.10/2.17 4.10/2.17 Overall costbound: 3+max([0, 102+Arg_1+-(Arg_2)-Arg_0])+max([2, 103+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin: max([0, 101+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin: 1 {O(1)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin: 1 {O(1)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in: max([0, 102+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in: 1 {O(1)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop: 1 {O(1)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin: 1 {O(1)} 4.10/2.17 4.10/2.17 4.10/2.17 4.10/2.17 Sizebounds: 4.10/2.17 4.10/2.17 `Lower: 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_0: Arg_1-max([0, 102+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_1: min([Arg_2, Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_2: min([Arg_2, Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_0: min([Arg_1, -(-(Arg_1)+max([0, 102+Arg_1+-(Arg_2)-Arg_0]))]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_1: 101 {O(1)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_2: min([Arg_2, min([Arg_2, Arg_0])]) {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_0: min([Arg_1, -(-(Arg_1)+max([0, 102+Arg_1+-(Arg_2)-Arg_0]))]) {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_1: min([Arg_0, min([Arg_2, Arg_0])]) {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_2: min([Arg_2, min([Arg_2, Arg_0])]) {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_0: Arg_1-max([0, 102+Arg_1+-(Arg_2)-Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_1: min([Arg_2, Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_2: min([Arg_2, Arg_0]) {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_1: Arg_0 {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_2: Arg_2 {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_0: min([Arg_1, -(-(Arg_1)+max([0, 102+Arg_1+-(Arg_2)-Arg_0]))]) {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_1: min([101, min([Arg_2, Arg_0])]) {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_2: min([Arg_2, min([Arg_2, Arg_0])]) {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_0: Arg_0 {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_1: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_2: Arg_2 {O(n)} 4.10/2.17 4.10/2.17 `Upper: 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_1: 100 {O(1)} 4.10/2.17 4.10/2.17 2: evalterminatebb1in->evalterminatebbin, Arg_2: max([101, Arg_2]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_1: max([101, max([Arg_0, Arg_2])]) {O(n)} 4.10/2.17 4.10/2.17 3: evalterminatebb1in->evalterminatereturnin, Arg_2: max([101, Arg_2]) {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_1: max([101, max([Arg_0, Arg_2])]) {O(n)} 4.10/2.17 4.10/2.17 4: evalterminatebb1in->evalterminatereturnin, Arg_2: max([101, Arg_2]) {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_1: max([101, Arg_2]) {O(n)} 4.10/2.17 4.10/2.17 5: evalterminatebbin->evalterminatebb1in, Arg_2: 101 {O(1)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_1: Arg_0 {O(n)} 4.10/2.17 4.10/2.17 1: evalterminateentryin->evalterminatebb1in, Arg_2: Arg_2 {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_0: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_1: max([101, max([Arg_0, Arg_2])]) {O(n)} 4.10/2.17 4.10/2.17 6: evalterminatereturnin->evalterminatestop, Arg_2: max([101, Arg_2]) {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_0: Arg_0 {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_1: Arg_1 {O(n)} 4.10/2.17 4.10/2.17 0: evalterminatestart->evalterminateentryin, Arg_2: Arg_2 {O(n)} 4.10/2.17 4.10/2.17 4.10/2.17 ---------------------------------------- 4.10/2.17 4.10/2.17 (2) 4.10/2.17 BOUNDS(1, max(3, 105 + -1 * Arg_0 + Arg_1 + -1 * Arg_2) + max(2, 103 + -1 * Arg_0 + Arg_1 + -1 * Arg_2)) 4.24/2.20 EOF