unknown Initial ITS Start location: [1] Program variables: res restmp x xtmp 0: [1] -> [2] : x'=nondet, T, cost: 1 1: [2] -> [3] : res'=0, T, cost: 1 2: [3] -> [4] : -1+x > 0, cost: 1 13: [3] -> [13] : -1+x <= 0, cost: 1 3: [4] -> [5] : xtmp'=x, T, cost: 1 4: [5] -> [6] : restmp'=0, T, cost: 1 5: [6] -> [7] : -1+xtmp > 0, cost: 1 9: [6] -> [10] : -1+xtmp <= 0, cost: 1 6: [7] -> [8] : xtmp'=-2+xtmp, T, cost: 1 7: [8] -> [9] : restmp'=1+restmp, T, cost: 1 8: [9] -> [6] : T, cost: 1 10: [10] -> [11] : x'=xtmp, T, cost: 1 11: [11] -> [12] : res'=1+res, T, cost: 1 12: [12] -> [3] : T, cost: 1 Chained Linear Paths Start location: [1] Program variables: res restmp x xtmp 14: [1] -> [3] : res'=0, x'=nondet, T, cost: 1 13: [3] -> [13] : -1+x <= 0, cost: 1 16: [3] -> [6] : restmp'=0, xtmp'=x, -1+x > 0, cost: 1 21: [6] -> [6] : restmp'=1+restmp, xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 22: [6] -> [3] : res'=1+res, x'=xtmp, -1+xtmp <= 0, cost: 1 Eliminating location [2] by chaining: Applied chaining First rule: [1] -> [2] : x'=nondet, T, cost: 1 Second rule: [2] -> [3] : res'=0, T, cost: 1 New rule: [1] -> [3] : res'=0, x'=nondet, T, cost: 1 Applied deletion Removed the following rules: 0 1 Eliminating location [4] by chaining: Applied chaining First rule: [3] -> [4] : -1+x > 0, cost: 1 Second rule: [4] -> [5] : xtmp'=x, T, cost: 1 New rule: [3] -> [5] : xtmp'=x, -1+x > 0, cost: 1 Applied deletion Removed the following rules: 2 3 Eliminating location [5] by chaining: Applied chaining First rule: [3] -> [5] : xtmp'=x, -1+x > 0, cost: 1 Second rule: [5] -> [6] : restmp'=0, T, cost: 1 New rule: [3] -> [6] : restmp'=0, xtmp'=x, -1+x > 0, cost: 1 Applied deletion Removed the following rules: 4 15 Eliminating location [7] by chaining: Applied chaining First rule: [6] -> [7] : -1+xtmp > 0, cost: 1 Second rule: [7] -> [8] : xtmp'=-2+xtmp, T, cost: 1 New rule: [6] -> [8] : xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 Applied deletion Removed the following rules: 5 6 Eliminating location [10] by chaining: Applied chaining First rule: [6] -> [10] : -1+xtmp <= 0, cost: 1 Second rule: [10] -> [11] : x'=xtmp, T, cost: 1 New rule: [6] -> [11] : x'=xtmp, -1+xtmp <= 0, cost: 1 Applied deletion Removed the following rules: 9 10 Eliminating location [8] by chaining: Applied chaining First rule: [6] -> [8] : xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 Second rule: [8] -> [9] : restmp'=1+restmp, T, cost: 1 New rule: [6] -> [9] : restmp'=1+restmp, xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 Applied deletion Removed the following rules: 7 17 Eliminating location [11] by chaining: Applied chaining First rule: [6] -> [11] : x'=xtmp, -1+xtmp <= 0, cost: 1 Second rule: [11] -> [12] : res'=1+res, T, cost: 1 New rule: [6] -> [12] : res'=1+res, x'=xtmp, -1+xtmp <= 0, cost: 1 Applied deletion Removed the following rules: 11 18 Eliminating location [9] by chaining: Applied chaining First rule: [6] -> [9] : restmp'=1+restmp, xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 Second rule: [9] -> [6] : T, cost: 1 New rule: [6] -> [6] : restmp'=1+restmp, xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 Applied deletion Removed the following rules: 8 19 Eliminating location [12] by chaining: Applied chaining First rule: [6] -> [12] : res'=1+res, x'=xtmp, -1+xtmp <= 0, cost: 1 Second rule: [12] -> [3] : T, cost: 1 New rule: [6] -> [3] : res'=1+res, x'=xtmp, -1+xtmp <= 0, cost: 1 Applied deletion Removed the following rules: 12 20 Step with 14 Trace 14[T] Blocked [{}, {}] Step with 13 Trace 14[T], 13[(-1+x <= 0)] Blocked [{}, {}, {}] Backtrack Trace 14[T] Blocked [{}, {13[T]}] Step with 16 Trace 14[T], 16[(-1+x > 0)] Blocked [{}, {13[T]}, {}] Step with 21 Trace 14[T], 16[(-1+x > 0)], 21[(-1+xtmp > 0)] Blocked [{}, {13[T]}, {}, {}] Accelerate Start location: [1] Program variables: res restmp x xtmp 14: [1] -> [3] : res'=0, x'=nondet, T, cost: 1 13: [3] -> [13] : -1+x <= 0, cost: 1 16: [3] -> [6] : restmp'=0, xtmp'=x, -1+x > 0, cost: 1 21: [6] -> [6] : restmp'=1+restmp, xtmp'=-2+xtmp, -1+xtmp > 0, cost: 1 22: [6] -> [3] : res'=1+res, x'=xtmp, -1+xtmp <= 0, cost: 1 23: [6] -> [6] : restmp'=restmp+n, xtmp'=-2*n+xtmp, (1-2*n+xtmp > 0 /\ -1+n >= 0), cost: 1 Loop Acceleration Original rule: [6] -> [6] : restmp'=1+restmp, xtmp'=-2+xtmp, (-1+xtmp > 0), cost: 1 New rule: [6] -> [6] : restmp'=restmp+n, xtmp'=-2*n+xtmp, (1-2*n+xtmp > 0 /\ -1+n >= 0), cost: 1 -1+xtmp > 0 [0]: montonic decrease yields 1-2*n+xtmp > 0 -1+xtmp > 0 [1]: eventual increase yields (2 <= 0 /\ -1+xtmp > 0) Replacement map: {-1+xtmp > 0 -> 1-2*n+xtmp > 0} Trace 14[T], 16[(-1+x > 0)], 23[(1-2*n+xtmp > 0 /\ -1+n >= 0)] Blocked [{}, {13[T]}, {}, {21[T], 23[T]}] Step with 22 Trace 14[T], 16[(-1+x > 0)], 23[(1-2*n+xtmp > 0 /\ -1+n >= 0)], 22[(-1+xtmp <= 0)] Blocked [{}, {13[T]}, {}, {21[T], 23[T]}, {}] Acceleration Failed marked recursive suffix as redundant Step with 13 Trace 14[T], 16[(-1+x > 0)], 23[(1-2*n+xtmp > 0 /\ -1+n >= 0)], 22[(-1+xtmp <= 0)], 13[(-1+x <= 0)] Blocked [{}, {13[T]}, {}, {21[T], 23[T]}, {16[T]}, {}] Backtrack Trace 14[T], 16[(-1+x > 0)], 23[(1-2*n+xtmp > 0 /\ -1+n >= 0)], 22[(-1+xtmp <= 0)] Blocked [{}, {13[T]}, {}, {21[T], 23[T]}, {13[T], 16[T]}] Backtrack Trace 14[T], 16[(-1+x > 0)], 23[(1-2*n+xtmp > 0 /\ -1+n >= 0)] Blocked [{}, {13[T]}, {}, {21[T], 22[T], 23[T]}] Backtrack Trace 14[T], 16[(-1+x > 0)] Blocked [{}, {13[T]}, {23[T]}] Step with 21 Trace 14[T], 16[(-1+x > 0)], 21[(-1+xtmp > 0)] Blocked [{}, {13[T]}, {22[T], 23[T]}, {}] Covered Trace 14[T], 16[(-1+x > 0)] Blocked [{}, {13[T]}, {21[T], 22[T], 23[T]}] Backtrack Trace 14[T] Blocked [{}, {13[T], 16[T]}] Backtrack Trace Blocked [{14[T]}] Accept unknown Build SHA: a05f16bf13df659c382799650051f91bf6828c7b