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