8.23/3.80 WORST_CASE(Omega(n^1), O(n^1)) 8.23/3.81 proof of /export/starexec/sandbox2/benchmark/theBenchmark.koat 8.23/3.81 # AProVE Commit ID: 48fb2092695e11cc9f56e44b17a92a5f88ffb256 marcel 20180622 unpublished dirty 8.23/3.81 8.23/3.81 8.23/3.81 The runtime complexity of the given CpxIntTrs could be proven to be BOUNDS(n^1, n^1). 8.23/3.81 8.23/3.81 (0) CpxIntTrs 8.23/3.81 (1) Koat Proof [FINISHED, 395 ms] 8.23/3.81 (2) BOUNDS(1, n^1) 8.23/3.81 (3) Loat Proof [FINISHED, 2105 ms] 8.23/3.81 (4) BOUNDS(n^1, INF) 8.23/3.81 8.23/3.81 8.23/3.81 ---------------------------------------- 8.23/3.81 8.23/3.81 (0) 8.23/3.81 Obligation: 8.23/3.81 Complexity Int TRS consisting of the following rules: 8.23/3.81 evalrandom2dstart(A, B, C, D) -> Com_1(evalrandom2dentryin(A, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dentryin(A, B, C, D) -> Com_1(evalrandom2dbb10in(0, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dbb10in(A, B, C, D) -> Com_1(evalrandom2dbbin(A, B, C, D)) :|: B >= A + 1 8.23/3.81 evalrandom2dbb10in(A, B, C, D) -> Com_1(evalrandom2dreturnin(A, B, C, D)) :|: A >= B 8.23/3.81 evalrandom2dbbin(A, B, C, D) -> Com_1(evalrandom2dbb2in(A, B, A + 1, E)) :|: E >= 0 && 3 >= E 8.23/3.81 evalrandom2dbbin(A, B, C, D) -> Com_1(evalrandom2dbb10in(A + 1, B, C, D)) :|: 0 >= E + 1 8.23/3.81 evalrandom2dbbin(A, B, C, D) -> Com_1(evalrandom2dbb10in(A + 1, B, C, D)) :|: E >= 4 8.23/3.81 evalrandom2dbb2in(A, B, C, D) -> Com_1(evalrandom2dNodeBlock9in(A, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dNodeBlock9in(A, B, C, D) -> Com_1(evalrandom2dNodeBlockin(A, B, C, D)) :|: 1 >= D 8.23/3.81 evalrandom2dNodeBlock9in(A, B, C, D) -> Com_1(evalrandom2dNodeBlock7in(A, B, C, D)) :|: D >= 2 8.23/3.81 evalrandom2dNodeBlockin(A, B, C, D) -> Com_1(evalrandom2dLeafBlockin(A, B, C, D)) :|: 0 >= D 8.23/3.81 evalrandom2dNodeBlockin(A, B, C, D) -> Com_1(evalrandom2dLeafBlock1in(A, B, C, D)) :|: D >= 1 8.23/3.81 evalrandom2dLeafBlockin(A, B, C, D) -> Com_1(evalrandom2dbb3in(A, B, C, D)) :|: D >= 0 && D <= 0 8.23/3.81 evalrandom2dLeafBlockin(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: 0 >= D + 1 8.23/3.81 evalrandom2dLeafBlockin(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: D >= 1 8.23/3.81 evalrandom2dbb3in(A, B, C, D) -> Com_1(evalrandom2dbb10in(C, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dLeafBlock1in(A, B, C, D) -> Com_1(evalrandom2dbb5in(A, B, C, D)) :|: D >= 1 && D <= 1 8.23/3.81 evalrandom2dLeafBlock1in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: 0 >= D 8.23/3.81 evalrandom2dLeafBlock1in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: D >= 2 8.23/3.81 evalrandom2dbb5in(A, B, C, D) -> Com_1(evalrandom2dbb10in(C, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dNodeBlock7in(A, B, C, D) -> Com_1(evalrandom2dLeafBlock3in(A, B, C, D)) :|: 2 >= D 8.23/3.81 evalrandom2dNodeBlock7in(A, B, C, D) -> Com_1(evalrandom2dLeafBlock5in(A, B, C, D)) :|: D >= 3 8.23/3.81 evalrandom2dLeafBlock3in(A, B, C, D) -> Com_1(evalrandom2dbb7in(A, B, C, D)) :|: D >= 2 && D <= 2 8.23/3.81 evalrandom2dLeafBlock3in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: 1 >= D 8.23/3.81 evalrandom2dLeafBlock3in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: D >= 3 8.23/3.81 evalrandom2dbb7in(A, B, C, D) -> Com_1(evalrandom2dbb10in(C, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dLeafBlock5in(A, B, C, D) -> Com_1(evalrandom2dbb9in(A, B, C, D)) :|: D >= 3 && D <= 3 8.23/3.81 evalrandom2dLeafBlock5in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: 2 >= D 8.23/3.81 evalrandom2dLeafBlock5in(A, B, C, D) -> Com_1(evalrandom2dNewDefaultin(A, B, C, D)) :|: D >= 4 8.23/3.81 evalrandom2dbb9in(A, B, C, D) -> Com_1(evalrandom2dbb10in(C, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dNewDefaultin(A, B, C, D) -> Com_1(evalrandom2dbb10in(C, B, C, D)) :|: TRUE 8.23/3.81 evalrandom2dreturnin(A, B, C, D) -> Com_1(evalrandom2dstop(A, B, C, D)) :|: TRUE 8.23/3.81 8.23/3.81 The start-symbols are:[evalrandom2dstart_4] 8.23/3.81 8.23/3.81 8.23/3.81 ---------------------------------------- 8.23/3.81 8.23/3.81 (1) Koat Proof (FINISHED) 8.23/3.81 YES(?, 27*ar_1 + 6) 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Initial complexity problem: 8.23/3.81 8.23/3.81 1: T: 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Testing for reachability in the complexity graph removes the following transitions from problem 1: 8.23/3.81 8.23/3.81 evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 We thus obtain the following problem: 8.23/3.81 8.23/3.81 2: T: 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Repeatedly propagating knowledge in problem 2 produces the following problem: 8.23/3.81 8.23/3.81 3: T: 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 A polynomial rank function with 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb9in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb10in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb7in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb5in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dNewDefaultin) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb3in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock5in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock3in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock1in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlockin) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlock7in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlockin) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlock9in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb2in) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dreturnin) = 1 8.23/3.81 8.23/3.81 Pol(evalrandom2dstop) = 0 8.23/3.81 8.23/3.81 Pol(evalrandom2dbbin) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dentryin) = 2 8.23/3.81 8.23/3.81 Pol(evalrandom2dstart) = 2 8.23/3.81 8.23/3.81 Pol(koat_start) = 2 8.23/3.81 8.23/3.81 orients all transitions weakly and the transitions 8.23/3.81 8.23/3.81 evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 strictly and produces the following problem: 8.23/3.81 8.23/3.81 4: T: 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 A polynomial rank function with 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb9in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb10in) = -V_1 + V_2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb7in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb5in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dNewDefaultin) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb3in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock5in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock3in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlock1in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dLeafBlockin) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlock7in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlockin) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dNodeBlock9in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dbb2in) = V_2 - V_3 8.23/3.81 8.23/3.81 Pol(evalrandom2dreturnin) = -V_1 + V_2 8.23/3.81 8.23/3.81 Pol(evalrandom2dstop) = -V_1 + V_2 8.23/3.81 8.23/3.81 Pol(evalrandom2dbbin) = -V_1 + V_2 - 1 8.23/3.81 8.23/3.81 Pol(evalrandom2dentryin) = V_2 8.23/3.81 8.23/3.81 Pol(evalrandom2dstart) = V_2 8.23/3.81 8.23/3.81 Pol(koat_start) = V_2 8.23/3.81 8.23/3.81 orients all transitions weakly and the transition 8.23/3.81 8.23/3.81 evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 strictly and produces the following problem: 8.23/3.81 8.23/3.81 5: T: 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ?, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Repeatedly propagating knowledge in problem 5 produces the following problem: 8.23/3.81 8.23/3.81 6: T: 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 4*ar_1, Cost: 1) evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_2, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb9in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 2 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNewDefaultin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 + 1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb3in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 = 0 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock5in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock3in(ar_0, ar_1, ar_2, ar_3)) [ 2 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlock1in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dLeafBlockin(ar_0, ar_1, ar_2, ar_3)) [ 0 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock7in(ar_0, ar_1, ar_2, ar_3)) [ ar_3 >= 2 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlockin(ar_0, ar_1, ar_2, ar_3)) [ 1 >= ar_3 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb2in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dNodeBlock9in(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstop(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ e >= 4 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(ar_0 + 1, ar_1, ar_2, ar_3)) [ 0 >= e + 1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb2in(ar_0, ar_1, ar_0 + 1, e)) [ e >= 0 /\ 3 >= e ] 8.23/3.81 8.23/3.81 (Comp: 2, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dreturnin(ar_0, ar_1, ar_2, ar_3)) [ ar_0 >= ar_1 ] 8.23/3.81 8.23/3.81 (Comp: ar_1, Cost: 1) evalrandom2dbb10in(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbbin(ar_0, ar_1, ar_2, ar_3)) [ ar_1 >= ar_0 + 1 ] 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dbb10in(0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 1) evalrandom2dstart(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dentryin(ar_0, ar_1, ar_2, ar_3)) 8.23/3.81 8.23/3.81 (Comp: 1, Cost: 0) koat_start(ar_0, ar_1, ar_2, ar_3) -> Com_1(evalrandom2dstart(ar_0, ar_1, ar_2, ar_3)) [ 0 <= 0 ] 8.23/3.81 8.23/3.81 start location: koat_start 8.23/3.81 8.23/3.81 leaf cost: 0 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Complexity upper bound 27*ar_1 + 6 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Time: 0.365 sec (SMT: 0.302 sec) 8.23/3.81 8.23/3.81 8.23/3.81 ---------------------------------------- 8.23/3.81 8.23/3.81 (2) 8.23/3.81 BOUNDS(1, n^1) 8.23/3.81 8.23/3.81 ---------------------------------------- 8.23/3.81 8.23/3.81 (3) Loat Proof (FINISHED) 8.23/3.81 8.23/3.81 8.23/3.81 ### Pre-processing the ITS problem ### 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Initial linear ITS problem 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 0: evalrandom2dstart -> evalrandom2dentryin : [], cost: 1 8.23/3.81 8.23/3.81 1: evalrandom2dentryin -> evalrandom2dbb10in : A'=0, [], cost: 1 8.23/3.81 8.23/3.81 2: evalrandom2dbb10in -> evalrandom2dbbin : [ B>=1+A ], cost: 1 8.23/3.81 8.23/3.81 3: evalrandom2dbb10in -> evalrandom2dreturnin : [ A>=B ], cost: 1 8.23/3.81 8.23/3.81 4: evalrandom2dbbin -> evalrandom2dbb2in : C'=1+A, D'=free, [ free>=0 && 3>=free ], cost: 1 8.23/3.81 8.23/3.81 5: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [ 0>=1+free_1 ], cost: 1 8.23/3.81 8.23/3.81 6: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [ free_2>=4 ], cost: 1 8.23/3.81 8.23/3.81 7: evalrandom2dbb2in -> evalrandom2dNodeBlock9in : [], cost: 1 8.23/3.81 8.23/3.81 8: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlockin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 9: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlock7in : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 10: evalrandom2dNodeBlockin -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 11: evalrandom2dNodeBlockin -> evalrandom2dLeafBlock1in : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 12: evalrandom2dLeafBlockin -> evalrandom2dbb3in : [ D==0 ], cost: 1 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 15: evalrandom2dbb3in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 16: evalrandom2dLeafBlock1in -> evalrandom2dbb5in : [ D==1 ], cost: 1 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 19: evalrandom2dbb5in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 20: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock3in : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 21: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 22: evalrandom2dLeafBlock3in -> evalrandom2dbb7in : [ D==2 ], cost: 1 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 25: evalrandom2dbb7in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 26: evalrandom2dLeafBlock5in -> evalrandom2dbb9in : [ D==3 ], cost: 1 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 29: evalrandom2dbb9in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 31: evalrandom2dreturnin -> evalrandom2dstop : [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Removed unreachable and leaf rules: 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 0: evalrandom2dstart -> evalrandom2dentryin : [], cost: 1 8.23/3.81 8.23/3.81 1: evalrandom2dentryin -> evalrandom2dbb10in : A'=0, [], cost: 1 8.23/3.81 8.23/3.81 2: evalrandom2dbb10in -> evalrandom2dbbin : [ B>=1+A ], cost: 1 8.23/3.81 8.23/3.81 4: evalrandom2dbbin -> evalrandom2dbb2in : C'=1+A, D'=free, [ free>=0 && 3>=free ], cost: 1 8.23/3.81 8.23/3.81 5: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [ 0>=1+free_1 ], cost: 1 8.23/3.81 8.23/3.81 6: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [ free_2>=4 ], cost: 1 8.23/3.81 8.23/3.81 7: evalrandom2dbb2in -> evalrandom2dNodeBlock9in : [], cost: 1 8.23/3.81 8.23/3.81 8: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlockin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 9: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlock7in : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 10: evalrandom2dNodeBlockin -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 11: evalrandom2dNodeBlockin -> evalrandom2dLeafBlock1in : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 12: evalrandom2dLeafBlockin -> evalrandom2dbb3in : [ D==0 ], cost: 1 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 15: evalrandom2dbb3in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 16: evalrandom2dLeafBlock1in -> evalrandom2dbb5in : [ D==1 ], cost: 1 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 19: evalrandom2dbb5in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 20: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock3in : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 21: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 22: evalrandom2dLeafBlock3in -> evalrandom2dbb7in : [ D==2 ], cost: 1 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 25: evalrandom2dbb7in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 26: evalrandom2dLeafBlock5in -> evalrandom2dbb9in : [ D==3 ], cost: 1 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 29: evalrandom2dbb9in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Simplified all rules, resulting in: 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 0: evalrandom2dstart -> evalrandom2dentryin : [], cost: 1 8.23/3.81 8.23/3.81 1: evalrandom2dentryin -> evalrandom2dbb10in : A'=0, [], cost: 1 8.23/3.81 8.23/3.81 2: evalrandom2dbb10in -> evalrandom2dbbin : [ B>=1+A ], cost: 1 8.23/3.81 8.23/3.81 4: evalrandom2dbbin -> evalrandom2dbb2in : C'=1+A, D'=free, [ free>=0 && 3>=free ], cost: 1 8.23/3.81 8.23/3.81 6: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [], cost: 1 8.23/3.81 8.23/3.81 7: evalrandom2dbb2in -> evalrandom2dNodeBlock9in : [], cost: 1 8.23/3.81 8.23/3.81 8: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlockin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 9: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlock7in : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 10: evalrandom2dNodeBlockin -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 11: evalrandom2dNodeBlockin -> evalrandom2dLeafBlock1in : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 12: evalrandom2dLeafBlockin -> evalrandom2dbb3in : [ D==0 ], cost: 1 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 15: evalrandom2dbb3in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 16: evalrandom2dLeafBlock1in -> evalrandom2dbb5in : [ D==1 ], cost: 1 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 19: evalrandom2dbb5in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 20: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock3in : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 21: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 22: evalrandom2dLeafBlock3in -> evalrandom2dbb7in : [ D==2 ], cost: 1 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 25: evalrandom2dbb7in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 26: evalrandom2dLeafBlock5in -> evalrandom2dbb9in : [ D==3 ], cost: 1 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 29: evalrandom2dbb9in -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 ### Simplification by acceleration and chaining ### 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Eliminated locations (on linear paths): 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.81 8.23/3.81 2: evalrandom2dbb10in -> evalrandom2dbbin : [ B>=1+A ], cost: 1 8.23/3.81 8.23/3.81 6: evalrandom2dbbin -> evalrandom2dbb10in : A'=1+A, [], cost: 1 8.23/3.81 8.23/3.81 33: evalrandom2dbbin -> evalrandom2dNodeBlock9in : C'=1+A, D'=free, [ free>=0 && 3>=free ], cost: 2 8.23/3.81 8.23/3.81 8: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlockin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 9: evalrandom2dNodeBlock9in -> evalrandom2dNodeBlock7in : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 10: evalrandom2dNodeBlockin -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 11: evalrandom2dNodeBlockin -> evalrandom2dLeafBlock1in : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 34: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=C, [ D==0 ], cost: 2 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 35: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=C, [ D==1 ], cost: 2 8.23/3.81 8.23/3.81 20: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock3in : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 21: evalrandom2dNodeBlock7in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 36: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=C, [ D==2 ], cost: 2 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 37: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=C, [ D==3 ], cost: 2 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Eliminated locations (on tree-shaped paths): 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.81 8.23/3.81 38: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, [ B>=1+A ], cost: 2 8.23/3.81 8.23/3.81 39: evalrandom2dbb10in -> evalrandom2dNodeBlock9in : C'=1+A, D'=free, [ B>=1+A && free>=0 && 3>=free ], cost: 3 8.23/3.81 8.23/3.81 40: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 2 8.23/3.81 8.23/3.81 41: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock1in : [ 1>=D && D>=1 ], cost: 2 8.23/3.81 8.23/3.81 42: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock3in : [ D>=2 && 2>=D ], cost: 2 8.23/3.81 8.23/3.81 43: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 2 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 34: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=C, [ D==0 ], cost: 2 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 35: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=C, [ D==1 ], cost: 2 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 36: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=C, [ D==2 ], cost: 2 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 37: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=C, [ D==3 ], cost: 2 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Accelerating simple loops of location 2. 8.23/3.81 8.23/3.81 Accelerating the following rules: 8.23/3.81 8.23/3.81 38: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, [ B>=1+A ], cost: 2 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Accelerated rule 38 with metering function -A+B, yielding the new rule 44. 8.23/3.81 8.23/3.81 Removing the simple loops: 38. 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Accelerated all simple loops using metering functions (where possible): 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.81 8.23/3.81 39: evalrandom2dbb10in -> evalrandom2dNodeBlock9in : C'=1+A, D'=free, [ B>=1+A && free>=0 && 3>=free ], cost: 3 8.23/3.81 8.23/3.81 44: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, [ B>=1+A ], cost: -2*A+2*B 8.23/3.81 8.23/3.81 40: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 2 8.23/3.81 8.23/3.81 41: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock1in : [ 1>=D && D>=1 ], cost: 2 8.23/3.81 8.23/3.81 42: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock3in : [ D>=2 && 2>=D ], cost: 2 8.23/3.81 8.23/3.81 43: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 2 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 34: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=C, [ D==0 ], cost: 2 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 35: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=C, [ D==1 ], cost: 2 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 36: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=C, [ D==2 ], cost: 2 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 37: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=C, [ D==3 ], cost: 2 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Chained accelerated rules (with incoming rules): 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.81 8.23/3.81 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.81 8.23/3.81 39: evalrandom2dbb10in -> evalrandom2dNodeBlock9in : C'=1+A, D'=free, [ B>=1+A && free>=0 && 3>=free ], cost: 3 8.23/3.81 8.23/3.81 40: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlockin : [ 0>=D ], cost: 2 8.23/3.81 8.23/3.81 41: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock1in : [ 1>=D && D>=1 ], cost: 2 8.23/3.81 8.23/3.81 42: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock3in : [ D>=2 && 2>=D ], cost: 2 8.23/3.81 8.23/3.81 43: evalrandom2dNodeBlock9in -> evalrandom2dLeafBlock5in : [ D>=3 ], cost: 2 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 34: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=C, [ D==0 ], cost: 2 8.23/3.81 8.23/3.81 47: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=B, [ D==0 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 35: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=C, [ D==1 ], cost: 2 8.23/3.81 8.23/3.81 48: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=B, [ D==1 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.81 8.23/3.81 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.81 8.23/3.81 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.81 8.23/3.81 36: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=C, [ D==2 ], cost: 2 8.23/3.81 8.23/3.81 49: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=B, [ D==2 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.81 8.23/3.81 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.81 8.23/3.81 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.81 8.23/3.81 37: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=C, [ D==3 ], cost: 2 8.23/3.81 8.23/3.81 50: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=B, [ D==3 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.81 8.23/3.81 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.81 8.23/3.81 45: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=B, [ B>=1+C ], cost: 1-2*C+2*B 8.23/3.81 8.23/3.81 8.23/3.81 8.23/3.81 Eliminated locations (on tree-shaped paths): 8.23/3.81 8.23/3.81 Start location: evalrandom2dstart 8.23/3.81 8.23/3.81 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.81 8.23/3.81 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.81 8.23/3.81 51: evalrandom2dbb10in -> evalrandom2dLeafBlockin : C'=1+A, D'=free, [ B>=1+A && free>=0 && 0>=free ], cost: 5 8.23/3.81 8.23/3.81 52: evalrandom2dbb10in -> evalrandom2dLeafBlock1in : C'=1+A, D'=free, [ B>=1+A && 1>=free && free>=1 ], cost: 5 8.23/3.81 8.23/3.81 53: evalrandom2dbb10in -> evalrandom2dLeafBlock3in : C'=1+A, D'=free, [ B>=1+A && free>=2 && 2>=free ], cost: 5 8.23/3.81 8.23/3.81 54: evalrandom2dbb10in -> evalrandom2dLeafBlock5in : C'=1+A, D'=free, [ B>=1+A && 3>=free && free>=3 ], cost: 5 8.23/3.81 8.23/3.81 13: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ 0>=1+D ], cost: 1 8.23/3.81 8.23/3.81 14: evalrandom2dLeafBlockin -> evalrandom2dNewDefaultin : [ D>=1 ], cost: 1 8.23/3.81 8.23/3.81 34: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=C, [ D==0 ], cost: 2 8.23/3.81 8.23/3.81 47: evalrandom2dLeafBlockin -> evalrandom2dbb10in : A'=B, [ D==0 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.81 8.23/3.81 17: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ 0>=D ], cost: 1 8.23/3.81 8.23/3.81 18: evalrandom2dLeafBlock1in -> evalrandom2dNewDefaultin : [ D>=2 ], cost: 1 8.23/3.81 8.23/3.81 35: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=C, [ D==1 ], cost: 2 8.23/3.81 8.23/3.81 48: evalrandom2dLeafBlock1in -> evalrandom2dbb10in : A'=B, [ D==1 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.82 8.23/3.82 23: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ 1>=D ], cost: 1 8.23/3.82 8.23/3.82 24: evalrandom2dLeafBlock3in -> evalrandom2dNewDefaultin : [ D>=3 ], cost: 1 8.23/3.82 8.23/3.82 36: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=C, [ D==2 ], cost: 2 8.23/3.82 8.23/3.82 49: evalrandom2dLeafBlock3in -> evalrandom2dbb10in : A'=B, [ D==2 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.82 8.23/3.82 27: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ 2>=D ], cost: 1 8.23/3.82 8.23/3.82 28: evalrandom2dLeafBlock5in -> evalrandom2dNewDefaultin : [ D>=4 ], cost: 1 8.23/3.82 8.23/3.82 37: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=C, [ D==3 ], cost: 2 8.23/3.82 8.23/3.82 50: evalrandom2dLeafBlock5in -> evalrandom2dbb10in : A'=B, [ D==3 && B>=1+C ], cost: 2-2*C+2*B 8.23/3.82 8.23/3.82 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.82 8.23/3.82 45: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=B, [ B>=1+C ], cost: 1-2*C+2*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Eliminated locations (on tree-shaped paths): 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 55: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=free, [ B>=1+A && free==0 ], cost: 7 8.23/3.82 8.23/3.82 56: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==0 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 57: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=free, [ B>=1+A && free==1 ], cost: 7 8.23/3.82 8.23/3.82 58: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==1 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 59: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=free, [ B>=1+A && free==2 ], cost: 7 8.23/3.82 8.23/3.82 60: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==2 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 61: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=free, [ B>=1+A && free==3 ], cost: 7 8.23/3.82 8.23/3.82 62: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==3 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 30: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=C, [], cost: 1 8.23/3.82 8.23/3.82 45: evalrandom2dNewDefaultin -> evalrandom2dbb10in : A'=B, [ B>=1+C ], cost: 1-2*C+2*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Applied pruning (of leafs and parallel rules): 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 56: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==0 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 58: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==1 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 59: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=free, [ B>=1+A && free==2 ], cost: 7 8.23/3.82 8.23/3.82 60: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==2 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 62: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=free, [ free==3 && B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Accelerating simple loops of location 2. 8.23/3.82 8.23/3.82 Simplified some of the simple loops (and removed duplicate rules). 8.23/3.82 8.23/3.82 Accelerating the following rules: 8.23/3.82 8.23/3.82 56: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=0, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 58: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=1, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 59: evalrandom2dbb10in -> evalrandom2dbb10in : A'=1+A, C'=1+A, D'=2, [ B>=1+A ], cost: 7 8.23/3.82 8.23/3.82 60: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=2, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 62: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=3, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Found no metering function for rule 56. 8.23/3.82 8.23/3.82 Found no metering function for rule 58. 8.23/3.82 8.23/3.82 Accelerated rule 59 with metering function -A+B, yielding the new rule 63. 8.23/3.82 8.23/3.82 Found no metering function for rule 60. 8.23/3.82 8.23/3.82 Found no metering function for rule 62. 8.23/3.82 8.23/3.82 Removing the simple loops: 59. 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Accelerated all simple loops using metering functions (where possible): 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 56: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=0, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 58: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=1, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 60: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=2, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 62: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=1+A, D'=3, [ B>=2+A ], cost: 5-2*A+2*B 8.23/3.82 8.23/3.82 63: evalrandom2dbb10in -> evalrandom2dbb10in : A'=B, C'=B, D'=2, [ B>=1+A ], cost: -7*A+7*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Chained accelerated rules (with incoming rules): 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 32: evalrandom2dstart -> evalrandom2dbb10in : A'=0, [], cost: 2 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 64: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=0, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 65: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=1, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 66: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=2, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 67: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=3, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 68: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=B, D'=2, [ B>=1 ], cost: 2+7*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Removed unreachable locations (and leaf rules with constant cost): 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 64: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=0, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 65: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=1, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 66: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=2, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 67: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=3, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 68: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=B, D'=2, [ B>=1 ], cost: 2+7*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 ### Computing asymptotic complexity ### 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Fully simplified ITS problem 8.23/3.82 8.23/3.82 Start location: evalrandom2dstart 8.23/3.82 8.23/3.82 46: evalrandom2dstart -> evalrandom2dbb10in : A'=B, [ B>=1 ], cost: 2+2*B 8.23/3.82 8.23/3.82 67: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=1, D'=3, [ B>=2 ], cost: 7+2*B 8.23/3.82 8.23/3.82 68: evalrandom2dstart -> evalrandom2dbb10in : A'=B, C'=B, D'=2, [ B>=1 ], cost: 2+7*B 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Computing asymptotic complexity for rule 46 8.23/3.82 8.23/3.82 Solved the limit problem by the following transformations: 8.23/3.82 8.23/3.82 Created initial limit problem: 8.23/3.82 8.23/3.82 2+2*B (+), B (+/+!) [not solved] 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 removing all constraints (solved by SMT) 8.23/3.82 8.23/3.82 resulting limit problem: [solved] 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 applying transformation rule (C) using substitution {B==n} 8.23/3.82 8.23/3.82 resulting limit problem: 8.23/3.82 8.23/3.82 [solved] 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Solution: 8.23/3.82 8.23/3.82 B / n 8.23/3.82 8.23/3.82 Resulting cost 2+2*n has complexity: Poly(n^1) 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Found new complexity Poly(n^1). 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 Obtained the following overall complexity (w.r.t. the length of the input n): 8.23/3.82 8.23/3.82 Complexity: Poly(n^1) 8.23/3.82 8.23/3.82 Cpx degree: 1 8.23/3.82 8.23/3.82 Solved cost: 2+2*n 8.23/3.82 8.23/3.82 Rule cost: 2+2*B 8.23/3.82 8.23/3.82 Rule guard: [ B>=1 ] 8.23/3.82 8.23/3.82 8.23/3.82 8.23/3.82 WORST_CASE(Omega(n^1),?) 8.23/3.82 8.23/3.82 8.23/3.82 ---------------------------------------- 8.23/3.82 8.23/3.82 (4) 8.23/3.82 BOUNDS(n^1, INF) 8.31/6.07 EOF