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] : ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 8: [4] -> [9] : ((i <= 0 /\ i >= 0) \/ (j <= 0 /\ j >= 0)), cost: 1 4: [5] -> [6] : t'=i, T, cost: 1 5: [6] -> [7] : i'=j, T, cost: 1 6: [7] -> [8] : j'=t, T, cost: 1 7: [8] -> [4] : T, cost: 1 Chained Linear Paths Start location: [1] Program variables: i j t 10: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 8: [4] -> [9] : ((i <= 0 /\ i >= 0) \/ (j <= 0 /\ j >= 0)), cost: 1 14: [4] -> [4] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), 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 9 Eliminating location [5] by chaining: Applied chaining First rule: [4] -> [5] : ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Second rule: [5] -> [6] : t'=i, T, cost: 1 New rule: [4] -> [6] : t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Applied deletion Removed the following rules: 3 4 Eliminating location [6] by chaining: Applied chaining First rule: [4] -> [6] : t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Second rule: [6] -> [7] : i'=j, T, cost: 1 New rule: [4] -> [7] : i'=j, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Applied deletion Removed the following rules: 5 11 Eliminating location [7] by chaining: Applied chaining First rule: [4] -> [7] : i'=j, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Second rule: [7] -> [8] : j'=t, T, cost: 1 New rule: [4] -> [8] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Applied deletion Removed the following rules: 6 12 Eliminating location [8] by chaining: Applied chaining First rule: [4] -> [8] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Second rule: [8] -> [4] : T, cost: 1 New rule: [4] -> [4] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 Applied deletion Removed the following rules: 7 13 Unrolled Loops Start location: [1] Program variables: i j t 10: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 8: [4] -> [9] : ((i <= 0 /\ i >= 0) \/ (j <= 0 /\ j >= 0)), cost: 1 14: [4] -> [4] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 15: [4] -> [4] : t'=j, ((j < 0 \/ j > 0) /\ (i < 0 \/ i > 0)), cost: 1 Unrolling Original rule: [4] -> [4] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 New rule: [4] -> [4] : i'=i, j'=j, t'=j, ((j < 0 \/ j > 0) /\ (i < 0 \/ i > 0)), cost: 1 Removed Trivial Updates Original rule: [4] -> [4] : i'=i, j'=j, t'=j, ((j < 0 \/ j > 0) /\ (i < 0 \/ i > 0)), cost: 1 New rule: [4] -> [4] : t'=j, ((j < 0 \/ j > 0) /\ (i < 0 \/ i > 0)), cost: 1 Step with 10 Trace 10[T] Blocked [{}, {}] Step with 8 Trace 10[T], 8[(i <= 0 /\ i >= 0)] Blocked [{}, {}, {}] Backtrack Trace 10[T] Blocked [{}, {8[(i <= 0 /\ i >= 0)]}] Step with 8 Trace 10[T], 8[(j <= 0 /\ j >= 0)] Blocked [{}, {8[(i <= 0 /\ i >= 0)]}, {}] Backtrack Trace 10[T] Blocked [{}, {8[(j <= 0 /\ j >= 0 /\ i <= 0 /\ i >= 0)]}] Step with 14 Trace 10[T], 14[(j > 0 /\ i < 0)] Blocked [{}, {8[T]}, {}] Acceleration Failed marked recursive suffix as redundant Step with 14 Trace 10[T], 14[(j > 0 /\ i < 0)], 14[(j < 0 /\ i > 0)] Blocked [{}, {8[T]}, {}, {}] Acceleration Failed marked recursive suffix as redundant Nonterm Start location: [1] Program variables: i j t 10: [1] -> [4] : i'=nondet, j'=nondet1, t'=0, T, cost: 1 8: [4] -> [9] : ((i <= 0 /\ i >= 0) \/ (j <= 0 /\ j >= 0)), cost: 1 14: [4] -> [4] : i'=j, j'=i, t'=i, ((i < 0 \/ i > 0) /\ (j < 0 \/ j > 0)), cost: 1 15: [4] -> [4] : t'=j, ((j < 0 \/ j > 0) /\ (i < 0 \/ i > 0)), cost: 1 16: [4] -> LoAT_sink : (-1+n >= 0 /\ j > 0 /\ -i > 0), cost: NONTERM Certificate of Non-Termination Original rule: [4] -> [4] : t'=j, (j > 0 /\ i < 0), cost: 1 New rule: [4] -> LoAT_sink : (-1+n >= 0 /\ j > 0 /\ -i > 0), cost: NONTERM j > 0 [0]: monotonic increase yields j > 0 -i > 0 [0]: monotonic increase yields -i > 0 Replacement map: {j > 0 -> j > 0, -i > 0 -> -i > 0} Step with 16 Trace 10[T], 16[(-1+n >= 0 /\ j > 0 /\ -i > 0)] Blocked [{}, {8[T]}, {16[T]}] Refute Counterexample [ i=-1 j=1 t=0 ] 10 [ i=i j=j t=t ] 16 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b