6.65/3.02 WORST_CASE(Omega(n^1), O(n^1)) 6.65/3.03 proof of /export/starexec/sandbox/benchmark/theBenchmark.koat 6.65/3.03 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 6.65/3.03 6.65/3.03 6.65/3.03 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). 6.65/3.03 6.65/3.03 (0) CpxIntTrs 6.65/3.03 (1) Koat Proof [FINISHED, 544 ms] 6.65/3.03 (2) BOUNDS(1, n^1) 6.65/3.03 (3) Loat Proof [FINISHED, 1301 ms] 6.65/3.03 (4) BOUNDS(n^1, INF) 6.65/3.03 6.65/3.03 6.65/3.03 ---------------------------------------- 6.65/3.03 6.65/3.03 (0) 6.65/3.03 Obligation: 6.65/3.03 Complexity Int TRS consisting of the following rules: 6.65/3.03 evalfstart(A, B, C, D) -> Com_1(evalfentryin(A, B, C, D)) :|: TRUE 6.65/3.03 evalfentryin(A, B, C, D) -> Com_1(evalfbb5in(B, B, C, D)) :|: TRUE 6.65/3.03 evalfbb5in(A, B, C, D) -> Com_1(evalfbbin(A, B, C, D)) :|: B >= 2 6.65/3.03 evalfbb5in(A, B, C, D) -> Com_1(evalfreturnin(A, B, C, D)) :|: 1 >= B 6.65/3.03 evalfbbin(A, B, C, D) -> Com_1(evalfbb2in(A, B, B - 1, A + B - 1)) :|: TRUE 6.65/3.03 evalfbb2in(A, B, C, D) -> Com_1(evalfbb4in(A, B, C, D)) :|: C >= D + 1 6.65/3.03 evalfbb2in(A, B, C, D) -> Com_1(evalfbb3in(A, B, C, D)) :|: D >= C 6.65/3.03 evalfbb3in(A, B, C, D) -> Com_1(evalfbb1in(A, B, C, D)) :|: 0 >= E + 1 6.65/3.03 evalfbb3in(A, B, C, D) -> Com_1(evalfbb1in(A, B, C, D)) :|: E >= 1 6.65/3.03 evalfbb3in(A, B, C, D) -> Com_1(evalfbb4in(A, B, C, D)) :|: TRUE 6.65/3.03 evalfbb1in(A, B, C, D) -> Com_1(evalfbb2in(A, B, C, D - 1)) :|: TRUE 6.65/3.03 evalfbb4in(A, B, C, D) -> Com_1(evalfbb5in(D - C + 1, C - 1, C, D)) :|: TRUE 6.65/3.03 evalfreturnin(A, B, C, D) -> Com_1(evalfstop(A, B, C, D)) :|: TRUE 6.65/3.03 6.65/3.03 The start-symbols are:[evalfstart_4] 6.65/3.03 6.65/3.03 6.65/3.03 ---------------------------------------- 6.65/3.03 6.65/3.03 (1) Koat Proof (FINISHED) 6.65/3.03 YES(?, 32*ar_1 + 14) 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Initial complexity problem: 6.65/3.03 6.65/3.03 1: T: 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Repeatedly propagating knowledge in problem 1 produces the following problem: 6.65/3.03 6.65/3.03 2: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 A polynomial rank function with 6.65/3.03 6.65/3.03 Pol(evalfstart) = 2 6.65/3.03 6.65/3.03 Pol(evalfentryin) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb5in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbbin) = 2 6.65/3.03 6.65/3.03 Pol(evalfreturnin) = 1 6.65/3.03 6.65/3.03 Pol(evalfbb2in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb4in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb3in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb1in) = 2 6.65/3.03 6.65/3.03 Pol(evalfstop) = 0 6.65/3.03 6.65/3.03 Pol(koat_start) = 2 6.65/3.03 6.65/3.03 orients all transitions weakly and the transitions 6.65/3.03 6.65/3.03 evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 strictly and produces the following problem: 6.65/3.03 6.65/3.03 3: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 A polynomial rank function with 6.65/3.03 6.65/3.03 Pol(evalfstart) = V_2 + 1 6.65/3.03 6.65/3.03 Pol(evalfentryin) = V_2 + 1 6.65/3.03 6.65/3.03 Pol(evalfbb5in) = V_2 + 1 6.65/3.03 6.65/3.03 Pol(evalfbbin) = V_2 - 1 6.65/3.03 6.65/3.03 Pol(evalfreturnin) = V_2 6.65/3.03 6.65/3.03 Pol(evalfbb2in) = V_3 6.65/3.03 6.65/3.03 Pol(evalfbb4in) = V_3 6.65/3.03 6.65/3.03 Pol(evalfbb3in) = V_3 6.65/3.03 6.65/3.03 Pol(evalfbb1in) = V_3 6.65/3.03 6.65/3.03 Pol(evalfstop) = V_2 6.65/3.03 6.65/3.03 Pol(koat_start) = V_2 + 1 6.65/3.03 6.65/3.03 orients all transitions weakly and the transition 6.65/3.03 6.65/3.03 evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 strictly and produces the following problem: 6.65/3.03 6.65/3.03 4: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Repeatedly propagating knowledge in problem 4 produces the following problem: 6.65/3.03 6.65/3.03 5: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 A polynomial rank function with 6.65/3.03 6.65/3.03 Pol(evalfbb4in) = 1 6.65/3.03 6.65/3.03 Pol(evalfbb5in) = 0 6.65/3.03 6.65/3.03 Pol(evalfbb3in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb1in) = 2 6.65/3.03 6.65/3.03 Pol(evalfbb2in) = 2 6.65/3.03 6.65/3.03 and size complexities 6.65/3.03 6.65/3.03 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-0) = ar_0 6.65/3.03 6.65/3.03 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-1) = ar_1 6.65/3.03 6.65/3.03 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-2) = ar_2 6.65/3.03 6.65/3.03 S("koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ]", 0-3) = ar_3 6.65/3.03 6.65/3.03 S("evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3))", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3))", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3))", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3))", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3))", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3))", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3))", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3))", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1))", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1))", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1))", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1))", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3))", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3))", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3))", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3))", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1))", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1))", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1))", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1))", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ]", 0-0) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ]", 0-1) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ]", 0-2) = ? 6.65/3.03 6.65/3.03 S("evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ]", 0-3) = ? 6.65/3.03 6.65/3.03 S("evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3))", 0-0) = ar_1 6.65/3.03 6.65/3.03 S("evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3))", 0-1) = ar_1 6.65/3.03 6.65/3.03 S("evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3))", 0-2) = ar_2 6.65/3.03 6.65/3.03 S("evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3))", 0-3) = ar_3 6.65/3.03 6.65/3.03 S("evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3))", 0-0) = ar_0 6.65/3.03 6.65/3.03 S("evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3))", 0-1) = ar_1 6.65/3.03 6.65/3.03 S("evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3))", 0-2) = ar_2 6.65/3.03 6.65/3.03 S("evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3))", 0-3) = ar_3 6.65/3.03 6.65/3.03 orients the transitions 6.65/3.03 6.65/3.03 evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 weakly and the transitions 6.65/3.03 6.65/3.03 evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 strictly and produces the following problem: 6.65/3.03 6.65/3.03 6: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Applied AI with 'oct' on problem 6 to obtain the following invariants: 6.65/3.03 6.65/3.03 For symbol evalfbb1in: X_4 - 1 >= 0 /\ X_3 + X_4 - 2 >= 0 /\ -X_3 + X_4 >= 0 /\ X_2 + X_4 - 3 >= 0 /\ -X_2 + X_4 + 1 >= 0 /\ X_2 - X_3 - 1 >= 0 /\ X_3 - 1 >= 0 /\ X_2 + X_3 - 3 >= 0 /\ -X_2 + X_3 + 1 >= 0 /\ X_2 - 2 >= 0 6.65/3.03 6.65/3.03 For symbol evalfbb2in: X_2 - X_3 - 1 >= 0 /\ X_3 - 1 >= 0 /\ X_2 + X_3 - 3 >= 0 /\ -X_2 + X_3 + 1 >= 0 /\ X_2 - 2 >= 0 6.65/3.03 6.65/3.03 For symbol evalfbb3in: X_4 - 1 >= 0 /\ X_3 + X_4 - 2 >= 0 /\ -X_3 + X_4 >= 0 /\ X_2 + X_4 - 3 >= 0 /\ -X_2 + X_4 + 1 >= 0 /\ X_2 - X_3 - 1 >= 0 /\ X_3 - 1 >= 0 /\ X_2 + X_3 - 3 >= 0 /\ -X_2 + X_3 + 1 >= 0 /\ X_2 - 2 >= 0 6.65/3.03 6.65/3.03 For symbol evalfbb4in: X_2 - X_3 - 1 >= 0 /\ X_3 - 1 >= 0 /\ X_2 + X_3 - 3 >= 0 /\ -X_2 + X_3 + 1 >= 0 /\ X_2 - 2 >= 0 6.65/3.03 6.65/3.03 For symbol evalfbbin: X_2 - 2 >= 0 6.65/3.03 6.65/3.03 For symbol evalfreturnin: -X_2 + 1 >= 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 This yielded the following problem: 6.65/3.03 6.65/3.03 7: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) [ -ar_1 + 1 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: ?, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) [ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 A polynomial rank function with 6.65/3.03 6.65/3.03 Pol(koat_start) = 6*V_2 6.65/3.03 6.65/3.03 Pol(evalfstart) = 6*V_2 6.65/3.03 6.65/3.03 Pol(evalfreturnin) = 3*V_1 + 3*V_2 6.65/3.03 6.65/3.03 Pol(evalfstop) = 3*V_1 + 3*V_2 6.65/3.03 6.65/3.03 Pol(evalfbb4in) = 3*V_4 6.65/3.03 6.65/3.03 Pol(evalfbb5in) = 3*V_1 + 3*V_2 6.65/3.03 6.65/3.03 Pol(evalfbb1in) = 3*V_4 - 1 6.65/3.03 6.65/3.03 Pol(evalfbb2in) = 3*V_4 + 1 6.65/3.03 6.65/3.03 Pol(evalfbb3in) = 3*V_4 6.65/3.03 6.65/3.03 Pol(evalfbbin) = 3*V_1 + 3*V_2 - 2 6.65/3.03 6.65/3.03 Pol(evalfentryin) = 6*V_2 6.65/3.03 6.65/3.03 orients all transitions weakly and the transitions 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ e >= 1 ] 6.65/3.03 6.65/3.03 evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 strictly and produces the following problem: 6.65/3.03 6.65/3.03 8: T: 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfstop(ar_0, ar_1, ar_2, ar_3)) [ -ar_1 + 1 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb4in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_3 - ar_2 + 1, ar_2 - 1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 6*ar_1, Cost: 1) evalfbb1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_2, ar_3 - 1)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 6*ar_1, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ e >= 1 ] 6.65/3.03 6.65/3.03 (Comp: 6*ar_1, Cost: 1) evalfbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 - 1 >= 0 /\ ar_2 + ar_3 - 2 >= 0 /\ -ar_2 + ar_3 >= 0 /\ ar_1 + ar_3 - 3 >= 0 /\ -ar_1 + ar_3 + 1 >= 0 /\ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ 0 >= e + 1 ] 6.65/3.03 6.65/3.03 (Comp: 6*ar_1, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ ar_3 >= ar_2 ] 6.65/3.03 6.65/3.03 (Comp: 2*ar_1 + 2, Cost: 1) evalfbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb4in(ar_0, ar_1, ar_2, ar_3)) [ ar_1 - ar_2 - 1 >= 0 /\ ar_2 - 1 >= 0 /\ ar_1 + ar_2 - 3 >= 0 /\ -ar_1 + ar_2 + 1 >= 0 /\ ar_1 - 2 >= 0 /\ ar_2 >= ar_3 + 1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb2in(ar_0, ar_1, ar_1 - 1, ar_0 + ar_1 - 1)) [ ar_1 - 2 >= 0 ] 6.65/3.03 6.65/3.03 (Comp: 2, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfreturnin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_1 ] 6.65/3.03 6.65/3.03 (Comp: ar_1 + 1, Cost: 1) evalfbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= 2 ] 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfbb5in(ar_1, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 (Comp: 1, Cost: 1) evalfstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalfentryin(ar_0, ar_1, ar_2, ar_3)) 6.65/3.03 6.65/3.03 start location: koat_start 6.65/3.03 6.65/3.03 leaf cost: 0 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Complexity upper bound 32*ar_1 + 14 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Time: 0.494 sec (SMT: 0.414 sec) 6.65/3.03 6.65/3.03 6.65/3.03 ---------------------------------------- 6.65/3.03 6.65/3.03 (2) 6.65/3.03 BOUNDS(1, n^1) 6.65/3.03 6.65/3.03 ---------------------------------------- 6.65/3.03 6.65/3.03 (3) Loat Proof (FINISHED) 6.65/3.03 6.65/3.03 6.65/3.03 ### Pre-processing the ITS problem ### 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Initial linear ITS problem 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 0: evalfstart -> evalfentryin : [], cost: 1 6.65/3.03 6.65/3.03 1: evalfentryin -> evalfbb5in : A'=B, [], cost: 1 6.65/3.03 6.65/3.03 2: evalfbb5in -> evalfbbin : [ B>=2 ], cost: 1 6.65/3.03 6.65/3.03 3: evalfbb5in -> evalfreturnin : [ 1>=B ], cost: 1 6.65/3.03 6.65/3.03 4: evalfbbin -> evalfbb2in : C'=-1+B, D'=-1+A+B, [], cost: 1 6.65/3.03 6.65/3.03 5: evalfbb2in -> evalfbb4in : [ C>=1+D ], cost: 1 6.65/3.03 6.65/3.03 6: evalfbb2in -> evalfbb3in : [ D>=C ], cost: 1 6.65/3.03 6.65/3.03 7: evalfbb3in -> evalfbb1in : [ 0>=1+free ], cost: 1 6.65/3.03 6.65/3.03 8: evalfbb3in -> evalfbb1in : [ free_1>=1 ], cost: 1 6.65/3.03 6.65/3.03 9: evalfbb3in -> evalfbb4in : [], cost: 1 6.65/3.03 6.65/3.03 10: evalfbb1in -> evalfbb2in : D'=-1+D, [], cost: 1 6.65/3.03 6.65/3.03 11: evalfbb4in -> evalfbb5in : A'=1-C+D, B'=-1+C, [], cost: 1 6.65/3.03 6.65/3.03 12: evalfreturnin -> evalfstop : [], cost: 1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Removed unreachable and leaf rules: 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 0: evalfstart -> evalfentryin : [], cost: 1 6.65/3.03 6.65/3.03 1: evalfentryin -> evalfbb5in : A'=B, [], cost: 1 6.65/3.03 6.65/3.03 2: evalfbb5in -> evalfbbin : [ B>=2 ], cost: 1 6.65/3.03 6.65/3.03 4: evalfbbin -> evalfbb2in : C'=-1+B, D'=-1+A+B, [], cost: 1 6.65/3.03 6.65/3.03 5: evalfbb2in -> evalfbb4in : [ C>=1+D ], cost: 1 6.65/3.03 6.65/3.03 6: evalfbb2in -> evalfbb3in : [ D>=C ], cost: 1 6.65/3.03 6.65/3.03 7: evalfbb3in -> evalfbb1in : [ 0>=1+free ], cost: 1 6.65/3.03 6.65/3.03 8: evalfbb3in -> evalfbb1in : [ free_1>=1 ], cost: 1 6.65/3.03 6.65/3.03 9: evalfbb3in -> evalfbb4in : [], cost: 1 6.65/3.03 6.65/3.03 10: evalfbb1in -> evalfbb2in : D'=-1+D, [], cost: 1 6.65/3.03 6.65/3.03 11: evalfbb4in -> evalfbb5in : A'=1-C+D, B'=-1+C, [], cost: 1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Simplified all rules, resulting in: 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 0: evalfstart -> evalfentryin : [], cost: 1 6.65/3.03 6.65/3.03 1: evalfentryin -> evalfbb5in : A'=B, [], cost: 1 6.65/3.03 6.65/3.03 2: evalfbb5in -> evalfbbin : [ B>=2 ], cost: 1 6.65/3.03 6.65/3.03 4: evalfbbin -> evalfbb2in : C'=-1+B, D'=-1+A+B, [], cost: 1 6.65/3.03 6.65/3.03 5: evalfbb2in -> evalfbb4in : [ C>=1+D ], cost: 1 6.65/3.03 6.65/3.03 6: evalfbb2in -> evalfbb3in : [ D>=C ], cost: 1 6.65/3.03 6.65/3.03 8: evalfbb3in -> evalfbb1in : [], cost: 1 6.65/3.03 6.65/3.03 9: evalfbb3in -> evalfbb4in : [], cost: 1 6.65/3.03 6.65/3.03 10: evalfbb1in -> evalfbb2in : D'=-1+D, [], cost: 1 6.65/3.03 6.65/3.03 11: evalfbb4in -> evalfbb5in : A'=1-C+D, B'=-1+C, [], cost: 1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 ### Simplification by acceleration and chaining ### 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Eliminated locations (on linear paths): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 14: evalfbb5in -> evalfbb2in : C'=-1+B, D'=-1+A+B, [ B>=2 ], cost: 2 6.65/3.03 6.65/3.03 5: evalfbb2in -> evalfbb4in : [ C>=1+D ], cost: 1 6.65/3.03 6.65/3.03 6: evalfbb2in -> evalfbb3in : [ D>=C ], cost: 1 6.65/3.03 6.65/3.03 9: evalfbb3in -> evalfbb4in : [], cost: 1 6.65/3.03 6.65/3.03 15: evalfbb3in -> evalfbb2in : D'=-1+D, [], cost: 2 6.65/3.03 6.65/3.03 11: evalfbb4in -> evalfbb5in : A'=1-C+D, B'=-1+C, [], cost: 1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Eliminated locations (on tree-shaped paths): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 14: evalfbb5in -> evalfbb2in : C'=-1+B, D'=-1+A+B, [ B>=2 ], cost: 2 6.65/3.03 6.65/3.03 17: evalfbb2in -> evalfbb2in : D'=-1+D, [ D>=C ], cost: 3 6.65/3.03 6.65/3.03 18: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ C>=1+D ], cost: 2 6.65/3.03 6.65/3.03 19: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ D>=C ], cost: 3 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerating simple loops of location 4. 6.65/3.03 6.65/3.03 Accelerating the following rules: 6.65/3.03 6.65/3.03 17: evalfbb2in -> evalfbb2in : D'=-1+D, [ D>=C ], cost: 3 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerated rule 17 with metering function 1-C+D, yielding the new rule 20. 6.65/3.03 6.65/3.03 Removing the simple loops: 17. 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerated all simple loops using metering functions (where possible): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 14: evalfbb5in -> evalfbb2in : C'=-1+B, D'=-1+A+B, [ B>=2 ], cost: 2 6.65/3.03 6.65/3.03 18: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ C>=1+D ], cost: 2 6.65/3.03 6.65/3.03 19: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ D>=C ], cost: 3 6.65/3.03 6.65/3.03 20: evalfbb2in -> evalfbb2in : D'=-1+C, [ D>=C ], cost: 3-3*C+3*D 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Chained accelerated rules (with incoming rules): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 14: evalfbb5in -> evalfbb2in : C'=-1+B, D'=-1+A+B, [ B>=2 ], cost: 2 6.65/3.03 6.65/3.03 21: evalfbb5in -> evalfbb2in : C'=-1+B, D'=-2+B, [ B>=2 && -1+A+B>=-1+B ], cost: 5+3*A 6.65/3.03 6.65/3.03 18: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ C>=1+D ], cost: 2 6.65/3.03 6.65/3.03 19: evalfbb2in -> evalfbb5in : A'=1-C+D, B'=-1+C, [ D>=C ], cost: 3 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Eliminated locations (on tree-shaped paths): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 22: evalfbb5in -> evalfbb5in : A'=1+A, B'=-2+B, C'=-1+B, D'=-1+A+B, [ B>=2 && -1+B>=A+B ], cost: 4 6.65/3.03 6.65/3.03 23: evalfbb5in -> evalfbb5in : A'=1+A, B'=-2+B, C'=-1+B, D'=-1+A+B, [ B>=2 && -1+A+B>=-1+B ], cost: 5 6.65/3.03 6.65/3.03 24: evalfbb5in -> evalfbb5in : A'=0, B'=-2+B, C'=-1+B, D'=-2+B, [ B>=2 && -1+A+B>=-1+B ], cost: 7+3*A 6.65/3.03 6.65/3.03 25: evalfbb5in -> [11] : [ B>=2 && -1+A+B>=-1+B ], cost: 5+3*A 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerating simple loops of location 2. 6.65/3.03 6.65/3.03 Accelerating the following rules: 6.65/3.03 6.65/3.03 22: evalfbb5in -> evalfbb5in : A'=1+A, B'=-2+B, C'=-1+B, D'=-1+A+B, [ B>=2 && -1+B>=A+B ], cost: 4 6.65/3.03 6.65/3.03 23: evalfbb5in -> evalfbb5in : A'=1+A, B'=-2+B, C'=-1+B, D'=-1+A+B, [ B>=2 && -1+A+B>=-1+B ], cost: 5 6.65/3.03 6.65/3.03 24: evalfbb5in -> evalfbb5in : A'=0, B'=-2+B, C'=-1+B, D'=-2+B, [ B>=2 && -1+A+B>=-1+B ], cost: 7+3*A 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerated rule 22 with NONTERM (after adding A>=B), yielding the new rule 26. 6.65/3.03 6.65/3.03 Accelerated rule 22 with backward acceleration, yielding the new rule 27. 6.65/3.03 6.65/3.03 Accelerated rule 23 with metering function meter (where 2*meter==-1+B), yielding the new rule 28. 6.65/3.03 6.65/3.03 Accelerated rule 24 with metering function meter_1 (where 2*meter_1==-1+B), yielding the new rule 29. 6.65/3.03 6.65/3.03 During metering: Instantiating temporary variables by {meter==1} 6.65/3.03 6.65/3.03 During metering: Instantiating temporary variables by {meter_1==1} 6.65/3.03 6.65/3.03 Removing the simple loops: 22 23 24. 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Accelerated all simple loops using metering functions (where possible): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 25: evalfbb5in -> [11] : [ B>=2 && -1+A+B>=-1+B ], cost: 5+3*A 6.65/3.03 6.65/3.03 26: evalfbb5in -> [12] : [ B>=2 && -1+B>=A+B && A>=B ], cost: INF 6.65/3.03 6.65/3.03 27: evalfbb5in -> evalfbb5in : A'=k+A, B'=-2*k+B, C'=1-2*k+B, D'=-k+A+B, [ B>=2 && -1+B>=A+B && k>0 && 2-2*k+B>=2 && 1-2*k+B>=1-k+A+B ], cost: 4*k 6.65/3.03 6.65/3.03 28: evalfbb5in -> evalfbb5in : A'=A+meter, B'=-2*meter+B, C'=1-2*meter+B, D'=A-meter+B, [ B>=2 && -1+A+B>=-1+B && 2*meter==-1+B && meter>=1 ], cost: 5*meter 6.65/3.03 6.65/3.03 29: evalfbb5in -> evalfbb5in : A'=0, B'=-2*meter_1+B, C'=1-2*meter_1+B, D'=-2*meter_1+B, [ B>=2 && -1+A+B>=-1+B && 2*meter_1==-1+B && meter_1>=1 ], cost: 7*meter_1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Chained accelerated rules (with incoming rules): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 30: evalfstart -> evalfbb5in : A'=meter+B, B'=-2*meter+B, C'=1-2*meter+B, D'=-meter+2*B, [ B>=2 && 2*meter==-1+B && meter>=1 ], cost: 2+5*meter 6.65/3.03 6.65/3.03 31: evalfstart -> evalfbb5in : A'=0, B'=-2*meter_1+B, C'=1-2*meter_1+B, D'=-2*meter_1+B, [ B>=2 && 2*meter_1==-1+B && meter_1>=1 ], cost: 2+7*meter_1 6.65/3.03 6.65/3.03 25: evalfbb5in -> [11] : [ B>=2 && -1+A+B>=-1+B ], cost: 5+3*A 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Removed unreachable locations (and leaf rules with constant cost): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 13: evalfstart -> evalfbb5in : A'=B, [], cost: 2 6.65/3.03 6.65/3.03 30: evalfstart -> evalfbb5in : A'=meter+B, B'=-2*meter+B, C'=1-2*meter+B, D'=-meter+2*B, [ B>=2 && 2*meter==-1+B && meter>=1 ], cost: 2+5*meter 6.65/3.03 6.65/3.03 31: evalfstart -> evalfbb5in : A'=0, B'=-2*meter_1+B, C'=1-2*meter_1+B, D'=-2*meter_1+B, [ B>=2 && 2*meter_1==-1+B && meter_1>=1 ], cost: 2+7*meter_1 6.65/3.03 6.65/3.03 25: evalfbb5in -> [11] : [ B>=2 && -1+A+B>=-1+B ], cost: 5+3*A 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Eliminated locations (on tree-shaped paths): 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 32: evalfstart -> [11] : A'=B, [ B>=2 ], cost: 7+3*B 6.65/3.03 6.65/3.03 33: evalfstart -> [13] : [ B>=2 && 2*meter==-1+B && meter>=1 ], cost: 2+5*meter 6.65/3.03 6.65/3.03 34: evalfstart -> [13] : [ B>=2 && 2*meter_1==-1+B && meter_1>=1 ], cost: 2+7*meter_1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 ### Computing asymptotic complexity ### 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Fully simplified ITS problem 6.65/3.03 6.65/3.03 Start location: evalfstart 6.65/3.03 6.65/3.03 32: evalfstart -> [11] : A'=B, [ B>=2 ], cost: 7+3*B 6.65/3.03 6.65/3.03 33: evalfstart -> [13] : [ B>=2 && 2*meter==-1+B && meter>=1 ], cost: 2+5*meter 6.65/3.03 6.65/3.03 34: evalfstart -> [13] : [ B>=2 && 2*meter_1==-1+B && meter_1>=1 ], cost: 2+7*meter_1 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Computing asymptotic complexity for rule 32 6.65/3.03 6.65/3.03 Solved the limit problem by the following transformations: 6.65/3.03 6.65/3.03 Created initial limit problem: 6.65/3.03 6.65/3.03 7+3*B (+), -1+B (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 removing all constraints (solved by SMT) 6.65/3.03 6.65/3.03 resulting limit problem: [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {B==n} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Solution: 6.65/3.03 6.65/3.03 B / n 6.65/3.03 6.65/3.03 Resulting cost 7+3*n has complexity: Poly(n^1) 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Found new complexity Poly(n^1). 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Computing asymptotic complexity for rule 33 6.65/3.03 6.65/3.03 Solved the limit problem by the following transformations: 6.65/3.03 6.65/3.03 Created initial limit problem: 6.65/3.03 6.65/3.03 2+2*meter-B (+/+!), -1+B (+/+!), -2*meter+B (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {B==1+2*meter} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 1 (+/+!), 2*meter (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (B), deleting 1 (+/+!) 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 2*meter (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 removing all constraints (solved by SMT) 6.65/3.03 6.65/3.03 resulting limit problem: [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {meter==n} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Solved the limit problem by the following transformations: 6.65/3.03 6.65/3.03 Created initial limit problem: 6.65/3.03 6.65/3.03 2+2*meter-B (+/+!), -1+B (+/+!), -2*meter+B (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {B==1+2*meter} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 1 (+/+!), 2*meter (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (B), deleting 1 (+/+!) 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 2*meter (+/+!), 2+5*meter (+) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 removing all constraints (solved by SMT) 6.65/3.03 6.65/3.03 resulting limit problem: [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {meter==n} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Solution: 6.65/3.03 6.65/3.03 meter / n 6.65/3.03 6.65/3.03 B / 1+2*n 6.65/3.03 6.65/3.03 Resulting cost 2+5*n has complexity: Poly(n^1) 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Computing asymptotic complexity for rule 34 6.65/3.03 6.65/3.03 Solved the limit problem by the following transformations: 6.65/3.03 6.65/3.03 Created initial limit problem: 6.65/3.03 6.65/3.03 -2*meter_1+B (+/+!), 2+2*meter_1-B (+/+!), 2+7*meter_1 (+), -1+B (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {B==1+2*meter_1} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 1 (+/+!), 2+7*meter_1 (+), 2*meter_1 (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (B), deleting 1 (+/+!) 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 2+7*meter_1 (+), 2*meter_1 (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 removing all constraints (solved by SMT) 6.65/3.03 6.65/3.03 resulting limit problem: [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {meter_1==n} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Solved the limit problem by the following transformations: 6.65/3.03 6.65/3.03 Created initial limit problem: 6.65/3.03 6.65/3.03 -2*meter_1+B (+/+!), 2+2*meter_1-B (+/+!), 2+7*meter_1 (+), -1+B (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {B==1+2*meter_1} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 1 (+/+!), 2+7*meter_1 (+), 2*meter_1 (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (B), deleting 1 (+/+!) 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 2+7*meter_1 (+), 2*meter_1 (+/+!) [not solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 removing all constraints (solved by SMT) 6.65/3.03 6.65/3.03 resulting limit problem: [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 applying transformation rule (C) using substitution {meter_1==n} 6.65/3.03 6.65/3.03 resulting limit problem: 6.65/3.03 6.65/3.03 [solved] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Solution: 6.65/3.03 6.65/3.03 meter_1 / n 6.65/3.03 6.65/3.03 B / 1+2*n 6.65/3.03 6.65/3.03 Resulting cost 2+7*n has complexity: Poly(n^1) 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 Obtained the following overall complexity (w.r.t. the length of the input n): 6.65/3.03 6.65/3.03 Complexity: Poly(n^1) 6.65/3.03 6.65/3.03 Cpx degree: 1 6.65/3.03 6.65/3.03 Solved cost: 7+3*n 6.65/3.03 6.65/3.03 Rule cost: 7+3*B 6.65/3.03 6.65/3.03 Rule guard: [ B>=2 ] 6.65/3.03 6.65/3.03 6.65/3.03 6.65/3.03 WORST_CASE(Omega(n^1),?) 6.65/3.03 6.65/3.03 6.65/3.03 ---------------------------------------- 6.65/3.03 6.65/3.03 (4) 6.65/3.03 BOUNDS(n^1, INF) 6.65/3.05 EOF