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