/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: 794c25de1cacf0d048858bcd21c9a779e1221865 marcel 20200619 unpublished dirty The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, max(4, 4 + 2 * Arg_6) + nat(Arg_6) + nat(2 * Arg_6) + max(4 + 54 * Arg_1, 58 + 54 * Arg_3, 58, 58 + 54 * Arg_5) + nat(2 * Arg_6 * max(28 + 27 * Arg_3, 28 + 27 * Arg_5, 1 + 27 * Arg_1, 28))). (0) CpxIntTrs (1) Koat2 Proof [FINISHED, 968 ms] (2) BOUNDS(1, max(4, 4 + 2 * Arg_6) + nat(Arg_6) + nat(2 * Arg_6) + max(4 + 54 * Arg_1, 58 + 54 * Arg_3, 58, 58 + 54 * Arg_5) + nat(2 * Arg_6 * max(28 + 27 * Arg_3, 28 + 27 * Arg_5, 1 + 27 * Arg_1, 28))) (3) Loat Proof [FINISHED, 588 ms] (4) BOUNDS(n^1, INF) ---------------------------------------- (0) Obligation: Complexity Int TRS consisting of the following rules: l0(A, B, C, F, X, Y, Z) -> Com_1(l1(X, Y, Z, F, X, Y, Z)) :|: TRUE l1(A, B, C, F, X, Y, Z) -> Com_1(l1(A + B, B + C, C - 1, F, X, Y, Z)) :|: A >= 1 l1(A, B, C, F, X, Y, Z) -> Com_1(l2(A, B, C, F - 1, X, Y, Z)) :|: 0 >= A l2(A, B, C, F, X, Y, Z) -> Com_1(l1(X, Y, Z, F, X, Y, Z)) :|: F >= 1 l2(A, B, C, F, X, Y, Z) -> Com_1(l3(A, B, C, F, X, Y, Z)) :|: 0 >= F The start-symbols are:[l0_7] ---------------------------------------- (1) Koat2 Proof (FINISHED) YES( ?, 3+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([4, 4+2*Arg_6])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([0, Arg_6])+max([0, 2*Arg_6])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]) {O(n^2)}) Initial Complexity Problem: Start: l0 Program_Vars: Arg_0, Arg_1, Arg_2, Arg_3, Arg_4, Arg_5, Arg_6 Temp_Vars: Locations: l0, l1, l2, l3 Transitions: 0: l0->l1 1: l1->l1 2: l1->l2 3: l2->l1 4: l2->l3 Timebounds: Overall timebound: 3+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([4, 4+2*Arg_6])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([0, Arg_6])+max([0, 2*Arg_6])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]) {O(n^2)} 0: l0->l1: 1 {O(1)} 1: l1->l1: 1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]) {O(n^2)} 2: l1->l2: max([4, 4+2*Arg_6])+max([0, 2*Arg_6]) {O(n)} 3: l2->l1: max([0, Arg_6]) {O(n)} 4: l2->l3: 1 {O(1)} Costbounds: Overall costbound: 3+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([4, 4+2*Arg_6])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([0, Arg_6])+max([0, 2*Arg_6])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]) {O(n^2)} 0: l0->l1: 1 {O(1)} 1: l1->l1: 1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]) {O(n^2)} 2: l1->l2: max([4, 4+2*Arg_6])+max([0, 2*Arg_6]) {O(n)} 3: l2->l1: max([0, Arg_6]) {O(n)} 4: l2->l3: 1 {O(1)} Sizebounds: `Lower: 0: l0->l1, Arg_0: Arg_1 {O(n)} 0: l0->l1, Arg_1: Arg_1 {O(n)} 0: l0->l1, Arg_2: Arg_3 {O(n)} 0: l0->l1, Arg_3: Arg_3 {O(n)} 0: l0->l1, Arg_4: Arg_5 {O(n)} 0: l0->l1, Arg_5: Arg_5 {O(n)} 0: l0->l1, Arg_6: Arg_6 {O(n)} 1: l1->l1, Arg_0: min([-(-1-Arg_3), min([-(-1-Arg_3), -(-1+(1+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])+max([-(Arg_5), max([-(Arg_3), max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])]))])]) {O(n^4)} 1: l1->l1, Arg_1: Arg_1 {O(n)} 1: l1->l1, Arg_2: min([Arg_5, min([Arg_3, min([Arg_5, -(1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))])])])+(-1+min([0, -(Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])))])+-1-max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+-27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+-27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])]) {O(n^4)} 1: l1->l1, Arg_3: Arg_3 {O(n)} 1: l1->l1, Arg_4: -1+Arg_5+min([0, -(Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])))])+-1-max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+-27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+-27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]) {O(n^2)} 1: l1->l1, Arg_5: Arg_5 {O(n)} 1: l1->l1, Arg_6: min([1, Arg_6]) {O(n)} 2: l1->l2, Arg_0: min([Arg_1, min([-(-1-Arg_3), min([-(-1-Arg_3), -(-1+(1+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])+max([-(Arg_5), max([-(Arg_3), max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])]))])])]) {O(n^4)} 2: l1->l2, Arg_1: Arg_1 {O(n)} 2: l1->l2, Arg_2: min([Arg_3, -((1+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])+max([-(Arg_5), max([-(Arg_3), max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])]))]) {O(n^4)} 2: l1->l2, Arg_3: Arg_3 {O(n)} 2: l1->l2, Arg_4: min([Arg_5, -(1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))]) {O(n^2)} 2: l1->l2, Arg_5: Arg_5 {O(n)} 2: l1->l2, Arg_6: min([0, -(1-Arg_6)]) {O(n)} 3: l2->l1, Arg_0: Arg_1 {O(n)} 3: l2->l1, Arg_1: Arg_1 {O(n)} 3: l2->l1, Arg_2: Arg_3 {O(n)} 3: l2->l1, Arg_3: Arg_3 {O(n)} 3: l2->l1, Arg_4: Arg_5 {O(n)} 3: l2->l1, Arg_5: Arg_5 {O(n)} 3: l2->l1, Arg_6: 1 {O(1)} 4: l2->l3, Arg_0: min([Arg_1, min([-(-1-Arg_3), min([-(-1-Arg_3), -(-1+(1+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])+max([-(Arg_5), max([-(Arg_3), max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])]))])])]) {O(n^4)} 4: l2->l3, Arg_1: Arg_1 {O(n)} 4: l2->l3, Arg_2: min([Arg_3, -((1+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])+max([-(Arg_5), max([-(Arg_3), max([-(Arg_5), 1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])])])]))]) {O(n^4)} 4: l2->l3, Arg_3: Arg_3 {O(n)} 4: l2->l3, Arg_4: min([Arg_5, -(1+-(Arg_5)+2*27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+max([1, 1+Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))]) {O(n^2)} 4: l2->l3, Arg_5: Arg_5 {O(n)} 4: l2->l3, Arg_6: min([0, -(1-Arg_6)]) {O(n)} `Upper: 0: l0->l1, Arg_0: Arg_1 {O(n)} 0: l0->l1, Arg_1: Arg_1 {O(n)} 0: l0->l1, Arg_2: Arg_3 {O(n)} 0: l0->l1, Arg_3: Arg_3 {O(n)} 0: l0->l1, Arg_4: Arg_5 {O(n)} 0: l0->l1, Arg_5: Arg_5 {O(n)} 0: l0->l1, Arg_6: Arg_6 {O(n)} 1: l1->l1, Arg_0: (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, max([Arg_3, (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, Arg_5])+max([Arg_5, max([Arg_5, max([Arg_3, max([Arg_3, Arg_5])])])])])])+max([Arg_3, max([Arg_1, max([Arg_3, (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, Arg_5])+max([Arg_5, max([Arg_5, max([Arg_3, max([Arg_3, Arg_5])])])])])])]) {O(n^5)} 1: l1->l1, Arg_1: Arg_1 {O(n)} 1: l1->l1, Arg_2: (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, Arg_5])+max([Arg_5, max([Arg_5, max([Arg_3, max([Arg_3, Arg_5])])])]) {O(n^3)} 1: l1->l1, Arg_3: Arg_3 {O(n)} 1: l1->l1, Arg_4: Arg_5 {O(n)} 1: l1->l1, Arg_5: Arg_5 {O(n)} 1: l1->l1, Arg_6: Arg_6 {O(n)} 2: l1->l2, Arg_0: 0 {O(1)} 2: l1->l2, Arg_1: Arg_1 {O(n)} 2: l1->l2, Arg_2: max([Arg_3, (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, Arg_5])+max([Arg_5, max([Arg_5, max([Arg_3, max([Arg_3, Arg_5])])])])]) {O(n^3)} 2: l1->l2, Arg_3: Arg_3 {O(n)} 2: l1->l2, Arg_4: Arg_5 {O(n)} 2: l1->l2, Arg_5: Arg_5 {O(n)} 2: l1->l2, Arg_6: Arg_6 {O(n)} 3: l2->l1, Arg_0: Arg_1 {O(n)} 3: l2->l1, Arg_1: Arg_1 {O(n)} 3: l2->l1, Arg_2: Arg_3 {O(n)} 3: l2->l1, Arg_3: Arg_3 {O(n)} 3: l2->l1, Arg_4: Arg_5 {O(n)} 3: l2->l1, Arg_5: Arg_5 {O(n)} 3: l2->l1, Arg_6: Arg_6 {O(n)} 4: l2->l3, Arg_0: 0 {O(1)} 4: l2->l3, Arg_1: Arg_1 {O(n)} 4: l2->l3, Arg_2: max([Arg_3, (1+1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))])+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])])+max([0, Arg_6*(1+27*max([1, max([Arg_1, max([1+Arg_5, 1+Arg_3])])]))]))*max([0, Arg_5])+max([Arg_5, max([Arg_5, max([Arg_3, max([Arg_3, Arg_5])])])])]) {O(n^3)} 4: l2->l3, Arg_3: Arg_3 {O(n)} 4: l2->l3, Arg_4: Arg_5 {O(n)} 4: l2->l3, Arg_5: Arg_5 {O(n)} 4: l2->l3, Arg_6: 0 {O(1)} ---------------------------------------- (2) BOUNDS(1, max(4, 4 + 2 * Arg_6) + nat(Arg_6) + nat(2 * Arg_6) + max(4 + 54 * Arg_1, 58 + 54 * Arg_3, 58, 58 + 54 * Arg_5) + nat(2 * Arg_6 * max(28 + 27 * Arg_3, 28 + 27 * Arg_5, 1 + 27 * Arg_1, 28))) ---------------------------------------- (3) Loat Proof (FINISHED) ### Pre-processing the ITS problem ### Initial linear ITS problem Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 1: l1 -> l1 : A'=C+A, C'=C+E, E'=-1+E, [ A>=1 ], cost: 1 2: l1 -> l2 : G'=-1+G, [ 0>=A ], cost: 1 3: l2 -> l1 : A'=B, C'=D, E'=F, [ G>=1 ], cost: 1 4: l2 -> l3 : [ 0>=G ], cost: 1 Checking for constant complexity: The following rule is satisfiable with cost >= 1, yielding constant complexity: 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 Removed unreachable and leaf rules: Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 1: l1 -> l1 : A'=C+A, C'=C+E, E'=-1+E, [ A>=1 ], cost: 1 2: l1 -> l2 : G'=-1+G, [ 0>=A ], cost: 1 3: l2 -> l1 : A'=B, C'=D, E'=F, [ G>=1 ], cost: 1 ### Simplification by acceleration and chaining ### Accelerating simple loops of location 1. Accelerating the following rules: 1: l1 -> l1 : A'=C+A, C'=C+E, E'=-1+E, [ A>=1 ], cost: 1 Found no metering function for rule 1. Removing the simple loops:. Accelerated all simple loops using metering functions (where possible): Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 1: l1 -> l1 : A'=C+A, C'=C+E, E'=-1+E, [ A>=1 ], cost: 1 2: l1 -> l2 : G'=-1+G, [ 0>=A ], cost: 1 3: l2 -> l1 : A'=B, C'=D, E'=F, [ G>=1 ], cost: 1 Chained accelerated rules (with incoming rules): Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 5: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, [ B>=1 ], cost: 2 2: l1 -> l2 : G'=-1+G, [ 0>=A ], cost: 1 3: l2 -> l1 : A'=B, C'=D, E'=F, [ G>=1 ], cost: 1 6: l2 -> l1 : A'=D+B, C'=F+D, E'=-1+F, [ G>=1 && B>=1 ], cost: 2 Eliminated locations (on tree-shaped paths): Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 5: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, [ B>=1 ], cost: 2 7: l1 -> l1 : A'=B, C'=D, E'=F, G'=-1+G, [ 0>=A && -1+G>=1 ], cost: 2 8: l1 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=-1+G, [ 0>=A && -1+G>=1 && B>=1 ], cost: 3 Accelerating simple loops of location 1. Accelerating the following rules: 7: l1 -> l1 : A'=B, C'=D, E'=F, G'=-1+G, [ 0>=A && -1+G>=1 ], cost: 2 8: l1 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=-1+G, [ 0>=A && -1+G>=1 && B>=1 ], cost: 3 Accelerated rule 7 with metering function -1+G (after strengthening guard), yielding the new rule 9. Accelerated rule 8 with metering function -1+G (after strengthening guard), yielding the new rule 10. Removing the simple loops:. Accelerated all simple loops using metering functions (where possible): Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 5: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, [ B>=1 ], cost: 2 7: l1 -> l1 : A'=B, C'=D, E'=F, G'=-1+G, [ 0>=A && -1+G>=1 ], cost: 2 8: l1 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=-1+G, [ 0>=A && -1+G>=1 && B>=1 ], cost: 3 9: l1 -> l1 : A'=B, C'=D, E'=F, G'=1, [ 0>=A && -1+G>=1 && 0>=B ], cost: -2+2*G 10: l1 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=1, [ 0>=A && -1+G>=1 && B>=1 && 0>=D+B ], cost: -3+3*G Chained accelerated rules (with incoming rules): Start location: l0 0: l0 -> l1 : A'=B, C'=D, E'=F, [], cost: 1 5: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, [ B>=1 ], cost: 2 11: l0 -> l1 : A'=B, C'=D, E'=F, G'=-1+G, [ 0>=B && -1+G>=1 ], cost: 3 12: l0 -> l1 : A'=B, C'=D, E'=F, G'=-1+G, [ B>=1 && 0>=D+B && -1+G>=1 ], cost: 4 13: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=-1+G, [ B>=1 && 0>=D+B && -1+G>=1 ], cost: 5 14: l0 -> l1 : A'=B, C'=D, E'=F, G'=1, [ 0>=B && -1+G>=1 ], cost: -1+2*G 15: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=1, [ B>=1 && 0>=D+B && -1+G>=1 ], cost: -1+3*G Removed unreachable locations (and leaf rules with constant cost): Start location: l0 14: l0 -> l1 : A'=B, C'=D, E'=F, G'=1, [ 0>=B && -1+G>=1 ], cost: -1+2*G 15: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=1, [ B>=1 && 0>=D+B && -1+G>=1 ], cost: -1+3*G ### Computing asymptotic complexity ### Fully simplified ITS problem Start location: l0 14: l0 -> l1 : A'=B, C'=D, E'=F, G'=1, [ 0>=B && -1+G>=1 ], cost: -1+2*G 15: l0 -> l1 : A'=D+B, C'=F+D, E'=-1+F, G'=1, [ B>=1 && 0>=D+B && -1+G>=1 ], cost: -1+3*G Computing asymptotic complexity for rule 14 Solved the limit problem by the following transformations: Created initial limit problem: -1+2*G (+), 1-B (+/+!), -1+G (+/+!) [not solved] removing all constraints (solved by SMT) resulting limit problem: [solved] applying transformation rule (C) using substitution {G==n,B==-n} resulting limit problem: [solved] Solution: G / n B / -n Resulting cost -1+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: -1+2*n Rule cost: -1+2*G Rule guard: [ 0>=B && -1+G>=1 ] WORST_CASE(Omega(n^1),?) ---------------------------------------- (4) BOUNDS(n^1, INF)