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