NO Initial ITS Start location: l5 Program variables: b^0 0: l0 -> l2 : b^0'=b^post1, (-1+b^post1 == 0 /\ -b^0 <= 0), cost: 1 1: l2 -> l3 : b^0'=b^post2, (b^0-b^post2 == 0 /\ 1+b^0 <= 0), cost: 1 2: l2 -> l3 : b^0'=b^post3, (1-b^0 <= 0 /\ -b^post3+b^0 == 0), cost: 1 3: l3 -> l1 : b^0'=b^post4, b^post4 == 0, cost: 1 4: l1 -> l0 : b^0'=b^post5, b^0-b^post5 == 0, cost: 1 5: l4 -> l0 : b^0'=b^post6, -b^post6+b^0 == 0, cost: 1 6: l5 -> l4 : b^0'=b^post7, -b^post7+b^0 == 0, cost: 1 Chained Linear Paths Start location: l5 Program variables: b^0 0: l0 -> l2 : b^0'=b^post1, (-1+b^post1 == 0 /\ -b^0 <= 0), cost: 1 1: l2 -> l3 : b^0'=b^post2, (b^0-b^post2 == 0 /\ 1+b^0 <= 0), cost: 1 2: l2 -> l3 : b^0'=b^post3, (1-b^0 <= 0 /\ -b^post3+b^0 == 0), cost: 1 8: l3 -> l0 : b^0'=b^post5, (b^post4 == 0 /\ b^post4-b^post5 == 0), cost: 1 7: l5 -> l0 : b^0'=b^post6, (-b^post6+b^post7 == 0 /\ -b^post7+b^0 == 0), cost: 1 Eliminating location l4 by chaining: Applied chaining First rule: l5 -> l4 : b^0'=b^post7, -b^post7+b^0 == 0, cost: 1 Second rule: l4 -> l0 : b^0'=b^post6, -b^post6+b^0 == 0, cost: 1 New rule: l5 -> l0 : b^0'=b^post6, (-b^post6+b^post7 == 0 /\ -b^post7+b^0 == 0), cost: 1 Applied deletion Removed the following rules: 5 6 Eliminating location l1 by chaining: Applied chaining First rule: l3 -> l1 : b^0'=b^post4, b^post4 == 0, cost: 1 Second rule: l1 -> l0 : b^0'=b^post5, b^0-b^post5 == 0, cost: 1 New rule: l3 -> l0 : b^0'=b^post5, (b^post4 == 0 /\ b^post4-b^post5 == 0), cost: 1 Applied deletion Removed the following rules: 3 4 Simplified Transitions Start location: l5 Program variables: b^0 9: l0 -> l2 : b^0'=1, -b^0 <= 0, cost: 1 10: l2 -> l3 : 1+b^0 <= 0, cost: 1 11: l2 -> l3 : 1-b^0 <= 0, cost: 1 13: l3 -> l0 : b^0'=0, T, cost: 1 12: l5 -> l0 : T, cost: 1 Propagated Equalities Original rule: l0 -> l2 : b^0'=b^post1, (-1+b^post1 == 0 /\ -b^0 <= 0), cost: 1 New rule: l0 -> l2 : b^0'=1, (0 == 0 /\ -b^0 <= 0), cost: 1 propagated equality b^post1 = 1 Simplified Guard Original rule: l0 -> l2 : b^0'=1, (0 == 0 /\ -b^0 <= 0), cost: 1 New rule: l0 -> l2 : b^0'=1, -b^0 <= 0, cost: 1 Propagated Equalities Original rule: l2 -> l3 : b^0'=b^post2, (b^0-b^post2 == 0 /\ 1+b^0 <= 0), cost: 1 New rule: l2 -> l3 : b^0'=b^0, (0 == 0 /\ 1+b^0 <= 0), cost: 1 propagated equality b^post2 = b^0 Simplified Guard Original rule: l2 -> l3 : b^0'=b^0, (0 == 0 /\ 1+b^0 <= 0), cost: 1 New rule: l2 -> l3 : b^0'=b^0, 1+b^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l2 -> l3 : b^0'=b^0, 1+b^0 <= 0, cost: 1 New rule: l2 -> l3 : 1+b^0 <= 0, cost: 1 Propagated Equalities Original rule: l2 -> l3 : b^0'=b^post3, (1-b^0 <= 0 /\ -b^post3+b^0 == 0), cost: 1 New rule: l2 -> l3 : b^0'=b^0, (0 == 0 /\ 1-b^0 <= 0), cost: 1 propagated equality b^post3 = b^0 Simplified Guard Original rule: l2 -> l3 : b^0'=b^0, (0 == 0 /\ 1-b^0 <= 0), cost: 1 New rule: l2 -> l3 : b^0'=b^0, 1-b^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l2 -> l3 : b^0'=b^0, 1-b^0 <= 0, cost: 1 New rule: l2 -> l3 : 1-b^0 <= 0, cost: 1 Propagated Equalities Original rule: l5 -> l0 : b^0'=b^post6, (-b^post6+b^post7 == 0 /\ -b^post7+b^0 == 0), cost: 1 New rule: l5 -> l0 : b^0'=b^post7, (0 == 0 /\ -b^post7+b^0 == 0), cost: 1 propagated equality b^post6 = b^post7 Propagated Equalities Original rule: l5 -> l0 : b^0'=b^post7, (0 == 0 /\ -b^post7+b^0 == 0), cost: 1 New rule: l5 -> l0 : b^0'=b^0, 0 == 0, cost: 1 propagated equality b^post7 = b^0 Simplified Guard Original rule: l5 -> l0 : b^0'=b^0, 0 == 0, cost: 1 New rule: l5 -> l0 : b^0'=b^0, T, cost: 1 Removed Trivial Updates Original rule: l5 -> l0 : b^0'=b^0, T, cost: 1 New rule: l5 -> l0 : T, cost: 1 Propagated Equalities Original rule: l3 -> l0 : b^0'=b^post5, (b^post4 == 0 /\ b^post4-b^post5 == 0), cost: 1 New rule: l3 -> l0 : b^0'=b^post4, (0 == 0 /\ b^post4 == 0), cost: 1 propagated equality b^post5 = b^post4 Propagated Equalities Original rule: l3 -> l0 : b^0'=b^post4, (0 == 0 /\ b^post4 == 0), cost: 1 New rule: l3 -> l0 : b^0'=0, 0 == 0, cost: 1 propagated equality b^post4 = 0 Simplified Guard Original rule: l3 -> l0 : b^0'=0, 0 == 0, cost: 1 New rule: l3 -> l0 : b^0'=0, T, cost: 1 Step with 12 Trace 12[T] Blocked [{}, {}] Step with 9 Trace 12[T], 9[(-b^0 <= 0)] Blocked [{}, {}, {}] Step with 11 Trace 12[T], 9[(-b^0 <= 0)], 11[(1-b^0 <= 0)] Blocked [{}, {}, {10[T]}, {}] Step with 13 Trace 12[T], 9[(-b^0 <= 0)], 11[(1-b^0 <= 0)], 13[T] Blocked [{}, {}, {10[T]}, {}, {}] Nonterm Start location: l5 Program variables: b^0 9: l0 -> l2 : b^0'=1, -b^0 <= 0, cost: 1 14: l0 -> LoAT_sink : (-1+n >= 0 /\ b^0 >= 0), cost: NONTERM 10: l2 -> l3 : 1+b^0 <= 0, cost: 1 11: l2 -> l3 : 1-b^0 <= 0, cost: 1 13: l3 -> l0 : b^0'=0, T, cost: 1 12: l5 -> l0 : T, cost: 1 Certificate of Non-Termination Original rule: l0 -> l0 : b^0'=0, -b^0 <= 0, cost: 1 New rule: l0 -> LoAT_sink : (-1+n >= 0 /\ b^0 >= 0), cost: NONTERM b^0 >= 0 [0]: monotonic increase yields b^0 >= 0 Replacement map: {b^0 >= 0 -> b^0 >= 0} Step with 14 Trace 12[T], 14[(-1+n >= 0 /\ b^0 >= 0)] Blocked [{}, {}, {14[T]}] Refute Counterexample [ b^0=0 ] 12 [ b^0=0 ] 14 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b