NO Initial ITS Start location: [1] Program variables: i j t 0: [1] -> [2] : i'=nondet, T, cost: 1 1: [2] -> [3] : j'=nondet1, T, cost: 1 2: [3] -> [4] : t'=0, T, cost: 1 3: [4] -> [5] : (j > 0 /\ i > 0), cost: 1 18: [4] -> [17] : (j <= 0 \/ i <= 0), cost: 1 4: [5] -> [7] : -j+i < 0, cost: 1 9: [5] -> [11] : -j+i >= 0, cost: 1 17: [6] -> [4] : T, cost: 1 5: [7] -> [8] : t'=i, T, cost: 1 6: [8] -> [9] : i'=j, T, cost: 1 7: [9] -> [10] : j'=t, T, cost: 1 8: [10] -> [6] : T, cost: 1 10: [11] -> [13] : -j+i > 0, cost: 1 13: [11] -> [15] : -j+i <= 0, cost: 1 16: [12] -> [6] : T, cost: 1 11: [13] -> [14] : j'=i, T, cost: 1 12: [14] -> [12] : T, cost: 1 14: [15] -> [16] : i'=-1+i, T, cost: 1 15: [16] -> [12] : T, cost: 1 Chained Linear Paths Start location: [1] Program variables: i j t 20: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 3: [4] -> [5] : (j > 0 /\ i > 0), cost: 1 18: [4] -> [17] : (j <= 0 \/ i <= 0), cost: 1 9: [5] -> [11] : -j+i >= 0, cost: 1 24: [5] -> [6] : i'=j, j'=i, t'=i, -j+i < 0, cost: 1 17: [6] -> [4] : T, cost: 1 27: [11] -> [12] : j'=i, -j+i > 0, cost: 1 28: [11] -> [12] : i'=-1+i, -j+i <= 0, cost: 1 16: [12] -> [6] : T, cost: 1 Eliminating location [2] by chaining: Applied chaining First rule: [1] -> [2] : i'=nondet, T, cost: 1 Second rule: [2] -> [3] : j'=nondet1, T, cost: 1 New rule: [1] -> [3] : i'=nondet, j'=nondet1, T, cost: 1 Applied deletion Removed the following rules: 0 1 Eliminating location [3] by chaining: Applied chaining First rule: [1] -> [3] : i'=nondet, j'=nondet1, T, cost: 1 Second rule: [3] -> [4] : t'=0, T, cost: 1 New rule: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 Applied deletion Removed the following rules: 2 19 Eliminating location [7] by chaining: Applied chaining First rule: [5] -> [7] : -j+i < 0, cost: 1 Second rule: [7] -> [8] : t'=i, T, cost: 1 New rule: [5] -> [8] : t'=i, -j+i < 0, cost: 1 Applied deletion Removed the following rules: 4 5 Eliminating location [8] by chaining: Applied chaining First rule: [5] -> [8] : t'=i, -j+i < 0, cost: 1 Second rule: [8] -> [9] : i'=j, T, cost: 1 New rule: [5] -> [9] : i'=j, t'=i, -j+i < 0, cost: 1 Applied deletion Removed the following rules: 6 21 Eliminating location [9] by chaining: Applied chaining First rule: [5] -> [9] : i'=j, t'=i, -j+i < 0, cost: 1 Second rule: [9] -> [10] : j'=t, T, cost: 1 New rule: [5] -> [10] : i'=j, j'=i, t'=i, -j+i < 0, cost: 1 Applied deletion Removed the following rules: 7 22 Eliminating location [10] by chaining: Applied chaining First rule: [5] -> [10] : i'=j, j'=i, t'=i, -j+i < 0, cost: 1 Second rule: [10] -> [6] : T, cost: 1 New rule: [5] -> [6] : i'=j, j'=i, t'=i, -j+i < 0, cost: 1 Applied deletion Removed the following rules: 8 23 Eliminating location [13] by chaining: Applied chaining First rule: [11] -> [13] : -j+i > 0, cost: 1 Second rule: [13] -> [14] : j'=i, T, cost: 1 New rule: [11] -> [14] : j'=i, -j+i > 0, cost: 1 Applied deletion Removed the following rules: 10 11 Eliminating location [15] by chaining: Applied chaining First rule: [11] -> [15] : -j+i <= 0, cost: 1 Second rule: [15] -> [16] : i'=-1+i, T, cost: 1 New rule: [11] -> [16] : i'=-1+i, -j+i <= 0, cost: 1 Applied deletion Removed the following rules: 13 14 Eliminating location [14] by chaining: Applied chaining First rule: [11] -> [14] : j'=i, -j+i > 0, cost: 1 Second rule: [14] -> [12] : T, cost: 1 New rule: [11] -> [12] : j'=i, -j+i > 0, cost: 1 Applied deletion Removed the following rules: 12 25 Eliminating location [16] by chaining: Applied chaining First rule: [11] -> [16] : i'=-1+i, -j+i <= 0, cost: 1 Second rule: [16] -> [12] : T, cost: 1 New rule: [11] -> [12] : i'=-1+i, -j+i <= 0, cost: 1 Applied deletion Removed the following rules: 15 26 Step with 20 Trace 20[T] Blocked [{}, {}] Step with 18 Trace 20[T], 18[(j <= 0)] Blocked [{}, {}, {}] Backtrack Trace 20[T] Blocked [{}, {18[j <= 0]}] Step with 18 Trace 20[T], 18[(i <= 0)] Blocked [{}, {18[j <= 0]}, {}] Backtrack Trace 20[T] Blocked [{}, {18[(j <= 0 /\ i <= 0)]}] Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}] Step with 9 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)] Blocked [{}, {18[T]}, {}, {}] Step with 27 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)] Blocked [{}, {18[T]}, {}, {}, {}] Step with 16 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T] Blocked [{}, {18[T]}, {}, {}, {}, {}] Step with 17 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 9 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 28 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {27[T]}, {}] Acceleration Failed marked recursive suffix as redundant Step with 16 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {27[T]}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 17 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T], 17[T] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {27[T]}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Acceleration Failed marked recursive suffix as redundant Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {27[T]}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Acceleration Failed marked recursive suffix as redundant Step with 24 Trace 20[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}, {}, {}, {27[T]}, {}, {}, {}, {9[T]}, {}] Acceleration Failed marked recursive suffix as redundant Restart Step with 20 Trace 20[T] Blocked [{}, {}] Step with 18 Trace 20[T], 18[(j <= 0)] Blocked [{}, {}, {}] Backtrack Trace 20[T] Blocked [{}, {18[j <= 0]}] Step with 18 Trace 20[T], 18[(i <= 0)] Blocked [{}, {18[j <= 0]}, {}] Backtrack Trace 20[T] Blocked [{}, {18[(j <= 0 /\ i <= 0)]}] Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}] Step with 24 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)] Blocked [{}, {18[T]}, {}, {}] Step with 17 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T] Blocked [{}, {18[T]}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 9 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {}] Step with 27 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}] Step with 16 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 17 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 3 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 9 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}, {}, {}] Step with 28 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}, {}, {27[T]}, {}] Step with 16 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}, {}, {27[T]}, {}, {}] Acceleration Failed marked recursive suffix as redundant Step with 17 Trace 20[T], 3[(j > 0 /\ i > 0)], 24[(-j+i < 0)], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 27[(-j+i > 0)], 16[T], 17[T], 3[(j > 0 /\ i > 0)], 9[(-j+i >= 0)], 28[(-j+i <= 0)], 16[T], 17[T] Blocked [{}, {18[T]}, {}, {}, {}, {24[T]}, {28[T]}, {}, {}, {}, {}, {27[T]}, {}, {}, {}] Nonterm Start location: [1] Program variables: i j t 20: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 3: [4] -> [5] : (j > 0 /\ i > 0), cost: 1 18: [4] -> [17] : (j <= 0 \/ i <= 0), cost: 1 29: [4] -> LoAT_sink : (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: NONTERM 30: [4] -> [4] : i'=-1+j, t'=-1+j, (j-i > 0 /\ j-i >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 9: [5] -> [11] : -j+i >= 0, cost: 1 24: [5] -> [6] : i'=j, j'=i, t'=i, -j+i < 0, cost: 1 17: [6] -> [4] : T, cost: 1 27: [11] -> [12] : j'=i, -j+i > 0, cost: 1 28: [11] -> [12] : i'=-1+i, -j+i <= 0, cost: 1 16: [12] -> [6] : T, cost: 1 unrolling Original rule: [4] -> [4] : i'=-1+j, t'=i, (j-i > 0 /\ j-i >= 0 /\ -j+i < 0 /\ j > 0 /\ i > 0), cost: 1 New rule: [4] -> [4] : i'=-1+j, t'=-1+j, (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -j+i < 0 /\ -1 < 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 Certificate of Non-Termination Original rule: [4] -> [4] : i'=-1+j, t'=-1+j, (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -j+i < 0 /\ -1 < 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 New rule: [4] -> LoAT_sink : (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: NONTERM 1 > 0 [0]: monotonic increase yields 1 > 0 1 >= 0 [0]: monotonic increase yields 1 >= 0 j-i > 0 [0]: monotonic increase yields j-i > 0 j-i >= 0 [0]: monotonic increase yields j-i >= 0 -1+j > 0 [0]: monotonic increase yields -1+j > 0 j > 0 [0]: monotonic increase yields j > 0, dependencies: -1+j > 0 i > 0 [0]: monotonic increase yields i > 0, dependencies: j-i > 0 Replacement map: {1 > 0 -> 1 > 0, 1 >= 0 -> 1 >= 0, j-i > 0 -> j-i > 0, j-i >= 0 -> j-i >= 0, -1+j > 0 -> -1+j > 0, j > 0 -> j > 0, i > 0 -> i > 0} Loop Acceleration Original rule: [4] -> [4] : i'=-1+j, t'=-1+j, (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -j+i < 0 /\ -1 < 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 New rule: [4] -> [4] : i'=-1+j, t'=-1+j, (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 1 > 0 [0]: monotonic increase yields 1 > 0 1 >= 0 [0]: monotonic increase yields 1 >= 0 j-i > 0 [0]: monotonic increase yields j-i > 0 j-i >= 0 [0]: monotonic increase yields j-i >= 0 -1+j > 0 [0]: monotonic increase yields -1+j > 0 j > 0 [0]: monotonic increase yields j > 0, dependencies: -1+j > 0 i > 0 [0]: monotonic increase yields i > 0, dependencies: j-i > 0 Replacement map: {1 > 0 -> 1 > 0, 1 >= 0 -> 1 >= 0, j-i > 0 -> j-i > 0, j-i >= 0 -> j-i >= 0, -1+j > 0 -> -1+j > 0, j > 0 -> j > 0, i > 0 -> i > 0} Simplified Guard Original rule: [4] -> [4] : i'=-1+j, t'=-1+j, (1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 New rule: [4] -> [4] : i'=-1+j, t'=-1+j, (j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 Eliminated Temporary Variables via Transitive Closure Original rule: [4] -> [4] : i'=-1+j, t'=-1+j, (j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 New rule: [4] -> [4] : i'=-1+j, t'=-1+j, (j-i > 0 /\ j-i >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0), cost: 1 Step with 29 Trace 20[T], 29[(1 > 0 /\ 1 >= 0 /\ j-i > 0 /\ j-i >= 0 /\ -1+n >= 0 /\ -1+j > 0 /\ j > 0 /\ i > 0)] Blocked [{}, {18[T]}, {29[T]}] Refute Counterexample [ i=1 j=2 t=0 ] 20 [ i=i j=j t=t ] 29 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b