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