NO Initial ITS Start location: l10 Program variables: stored^0 tmp1^0 tmp___02^0 0: l0 -> l1 : stored^0'=stored^post1, tmp1^0'=tmp1^post1, tmp___02^0'=tmp___02^post1, (-tmp1^0 <= 0 /\ -1+stored^post1 == 0 /\ tmp1^0 <= 0 /\ -tmp___02^post1+tmp___02^0 == 0 /\ -tmp1^post1+tmp1^0 == 0), cost: 1 1: l0 -> l2 : stored^0'=stored^post2, tmp1^0'=tmp1^post2, tmp___02^0'=tmp___02^post2, (-tmp1^post2+tmp1^0 == 0 /\ stored^0-stored^post2 == 0 /\ 1-tmp1^0 <= 0 /\ -tmp___02^post2+tmp___02^0 == 0), cost: 1 2: l0 -> l2 : stored^0'=stored^post3, tmp1^0'=tmp1^post3, tmp___02^0'=tmp___02^post3, (-tmp1^post3+tmp1^0 == 0 /\ stored^0-stored^post3 == 0 /\ 1+tmp1^0 <= 0 /\ -tmp___02^post3+tmp___02^0 == 0), cost: 1 9: l1 -> l8 : stored^0'=stored^post10, tmp1^0'=tmp1^post10, tmp___02^0'=tmp___02^post10, (-tmp1^post10+tmp1^0 == 0 /\ tmp___02^0-tmp___02^post10 == 0 /\ -stored^post10+stored^0 == 0), cost: 1 13: l2 -> l7 : stored^0'=stored^post14, tmp1^0'=tmp1^post14, tmp___02^0'=tmp___02^post14, (tmp___02^0-tmp___02^post14 == 0 /\ stored^0-stored^post14 == 0 /\ -tmp1^post14+tmp1^0 == 0), cost: 1 3: l3 -> l0 : stored^0'=stored^post4, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^post4, (0 == 0 /\ -tmp___02^post4+tmp___02^0 == 0 /\ stored^0-stored^post4 == 0), cost: 1 4: l4 -> l1 : stored^0'=stored^post5, tmp1^0'=tmp1^post5, tmp___02^0'=tmp___02^post5, (-tmp___02^post5+tmp___02^0 == 0 /\ tmp1^0-tmp1^post5 == 0 /\ -tmp___02^0 <= 0 /\ tmp___02^0 <= 0 /\ stored^0-stored^post5 == 0), cost: 1 5: l4 -> l3 : stored^0'=stored^post6, tmp1^0'=tmp1^post6, tmp___02^0'=tmp___02^post6, (tmp1^0-tmp1^post6 == 0 /\ 1-tmp___02^0 <= 0 /\ stored^0-stored^post6 == 0 /\ -tmp___02^post6+tmp___02^0 == 0), cost: 1 6: l4 -> l3 : stored^0'=stored^post7, tmp1^0'=tmp1^post7, tmp___02^0'=tmp___02^post7, (tmp1^0-tmp1^post7 == 0 /\ -tmp___02^post7+tmp___02^0 == 0 /\ stored^0-stored^post7 == 0 /\ 1+tmp___02^0 <= 0), cost: 1 7: l5 -> l6 : stored^0'=stored^post8, tmp1^0'=tmp1^post8, tmp___02^0'=tmp___02^post8, (stored^0-stored^post8 == 0 /\ tmp___02^0-tmp___02^post8 == 0 /\ -tmp1^post8+tmp1^0 == 0), cost: 1 8: l7 -> l4 : stored^0'=stored^post9, tmp1^0'=tmp1^post9, tmp___02^0'=tmp___02^post9, (0 == 0 /\ stored^0-stored^post9 == 0 /\ -tmp1^post9+tmp1^0 == 0), cost: 1 10: l8 -> l5 : stored^0'=stored^post11, tmp1^0'=tmp1^post11, tmp___02^0'=tmp___02^post11, (2-stored^0 <= 0 /\ -stored^post11+stored^0 == 0 /\ tmp___02^0-tmp___02^post11 == 0 /\ -tmp1^post11+tmp1^0 == 0), cost: 1 11: l8 -> l5 : stored^0'=stored^post12, tmp1^0'=tmp1^post12, tmp___02^0'=tmp___02^post12, (-tmp1^post12+tmp1^0 == 0 /\ stored^0 <= 0 /\ tmp___02^0-tmp___02^post12 == 0 /\ -stored^post12+stored^0 == 0), cost: 1 12: l8 -> l5 : stored^0'=stored^post13, tmp1^0'=tmp1^post13, tmp___02^0'=tmp___02^post13, (1-stored^0 <= 0 /\ -1+stored^0 <= 0 /\ tmp___02^0-tmp___02^post13 == 0 /\ -tmp1^post13+tmp1^0 == 0 /\ stored^post13 == 0), cost: 1 14: l9 -> l7 : stored^0'=stored^post15, tmp1^0'=tmp1^post15, tmp___02^0'=tmp___02^post15, (-tmp___02^post15+tmp___02^0 == 0 /\ -tmp1^post15+tmp1^0 == 0 /\ stored^post15 == 0), cost: 1 15: l10 -> l9 : stored^0'=stored^post16, tmp1^0'=tmp1^post16, tmp___02^0'=tmp___02^post16, (stored^0-stored^post16 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 Chained Linear Paths Start location: l10 Program variables: stored^0 tmp1^0 tmp___02^0 0: l0 -> l1 : stored^0'=stored^post1, tmp1^0'=tmp1^post1, tmp___02^0'=tmp___02^post1, (-tmp1^0 <= 0 /\ -1+stored^post1 == 0 /\ tmp1^0 <= 0 /\ -tmp___02^post1+tmp___02^0 == 0 /\ -tmp1^post1+tmp1^0 == 0), cost: 1 1: l0 -> l2 : stored^0'=stored^post2, tmp1^0'=tmp1^post2, tmp___02^0'=tmp___02^post2, (-tmp1^post2+tmp1^0 == 0 /\ stored^0-stored^post2 == 0 /\ 1-tmp1^0 <= 0 /\ -tmp___02^post2+tmp___02^0 == 0), cost: 1 2: l0 -> l2 : stored^0'=stored^post3, tmp1^0'=tmp1^post3, tmp___02^0'=tmp___02^post3, (-tmp1^post3+tmp1^0 == 0 /\ stored^0-stored^post3 == 0 /\ 1+tmp1^0 <= 0 /\ -tmp___02^post3+tmp___02^0 == 0), cost: 1 9: l1 -> l8 : stored^0'=stored^post10, tmp1^0'=tmp1^post10, tmp___02^0'=tmp___02^post10, (-tmp1^post10+tmp1^0 == 0 /\ tmp___02^0-tmp___02^post10 == 0 /\ -stored^post10+stored^0 == 0), cost: 1 13: l2 -> l7 : stored^0'=stored^post14, tmp1^0'=tmp1^post14, tmp___02^0'=tmp___02^post14, (tmp___02^0-tmp___02^post14 == 0 /\ stored^0-stored^post14 == 0 /\ -tmp1^post14+tmp1^0 == 0), cost: 1 3: l3 -> l0 : stored^0'=stored^post4, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^post4, (0 == 0 /\ -tmp___02^post4+tmp___02^0 == 0 /\ stored^0-stored^post4 == 0), cost: 1 4: l4 -> l1 : stored^0'=stored^post5, tmp1^0'=tmp1^post5, tmp___02^0'=tmp___02^post5, (-tmp___02^post5+tmp___02^0 == 0 /\ tmp1^0-tmp1^post5 == 0 /\ -tmp___02^0 <= 0 /\ tmp___02^0 <= 0 /\ stored^0-stored^post5 == 0), cost: 1 5: l4 -> l3 : stored^0'=stored^post6, tmp1^0'=tmp1^post6, tmp___02^0'=tmp___02^post6, (tmp1^0-tmp1^post6 == 0 /\ 1-tmp___02^0 <= 0 /\ stored^0-stored^post6 == 0 /\ -tmp___02^post6+tmp___02^0 == 0), cost: 1 6: l4 -> l3 : stored^0'=stored^post7, tmp1^0'=tmp1^post7, tmp___02^0'=tmp___02^post7, (tmp1^0-tmp1^post7 == 0 /\ -tmp___02^post7+tmp___02^0 == 0 /\ stored^0-stored^post7 == 0 /\ 1+tmp___02^0 <= 0), cost: 1 7: l5 -> l6 : stored^0'=stored^post8, tmp1^0'=tmp1^post8, tmp___02^0'=tmp___02^post8, (stored^0-stored^post8 == 0 /\ tmp___02^0-tmp___02^post8 == 0 /\ -tmp1^post8+tmp1^0 == 0), cost: 1 8: l7 -> l4 : stored^0'=stored^post9, tmp1^0'=tmp1^post9, tmp___02^0'=tmp___02^post9, (0 == 0 /\ stored^0-stored^post9 == 0 /\ -tmp1^post9+tmp1^0 == 0), cost: 1 10: l8 -> l5 : stored^0'=stored^post11, tmp1^0'=tmp1^post11, tmp___02^0'=tmp___02^post11, (2-stored^0 <= 0 /\ -stored^post11+stored^0 == 0 /\ tmp___02^0-tmp___02^post11 == 0 /\ -tmp1^post11+tmp1^0 == 0), cost: 1 11: l8 -> l5 : stored^0'=stored^post12, tmp1^0'=tmp1^post12, tmp___02^0'=tmp___02^post12, (-tmp1^post12+tmp1^0 == 0 /\ stored^0 <= 0 /\ tmp___02^0-tmp___02^post12 == 0 /\ -stored^post12+stored^0 == 0), cost: 1 12: l8 -> l5 : stored^0'=stored^post13, tmp1^0'=tmp1^post13, tmp___02^0'=tmp___02^post13, (1-stored^0 <= 0 /\ -1+stored^0 <= 0 /\ tmp___02^0-tmp___02^post13 == 0 /\ -tmp1^post13+tmp1^0 == 0 /\ stored^post13 == 0), cost: 1 16: l10 -> l7 : stored^0'=stored^post15, tmp1^0'=tmp1^post15, tmp___02^0'=tmp___02^post15, (stored^0-stored^post16 == 0 /\ tmp___02^post16-tmp___02^post15 == 0 /\ tmp1^post16-tmp1^post15 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ stored^post15 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 Eliminating location l9 by chaining: Applied chaining First rule: l10 -> l9 : stored^0'=stored^post16, tmp1^0'=tmp1^post16, tmp___02^0'=tmp___02^post16, (stored^0-stored^post16 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 Second rule: l9 -> l7 : stored^0'=stored^post15, tmp1^0'=tmp1^post15, tmp___02^0'=tmp___02^post15, (-tmp___02^post15+tmp___02^0 == 0 /\ -tmp1^post15+tmp1^0 == 0 /\ stored^post15 == 0), cost: 1 New rule: l10 -> l7 : stored^0'=stored^post15, tmp1^0'=tmp1^post15, tmp___02^0'=tmp___02^post15, (stored^0-stored^post16 == 0 /\ tmp___02^post16-tmp___02^post15 == 0 /\ tmp1^post16-tmp1^post15 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ stored^post15 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 Applied deletion Removed the following rules: 14 15 Simplified Transitions Start location: l10 Program variables: stored^0 tmp1^0 tmp___02^0 17: l0 -> l1 : stored^0'=1, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 18: l0 -> l2 : 1-tmp1^0 <= 0, cost: 1 19: l0 -> l2 : 1+tmp1^0 <= 0, cost: 1 26: l1 -> l8 : T, cost: 1 30: l2 -> l7 : T, cost: 1 20: l3 -> l0 : tmp1^0'=tmp1^post4, T, cost: 1 21: l4 -> l1 : (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 22: l4 -> l3 : 1-tmp___02^0 <= 0, cost: 1 23: l4 -> l3 : 1+tmp___02^0 <= 0, cost: 1 24: l5 -> l6 : T, cost: 1 25: l7 -> l4 : tmp___02^0'=tmp___02^post9, T, cost: 1 27: l8 -> l5 : 2-stored^0 <= 0, cost: 1 28: l8 -> l5 : stored^0 <= 0, cost: 1 29: l8 -> l5 : stored^0'=0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 31: l10 -> l7 : stored^0'=0, T, cost: 1 made implied equalities explicit Original rule: l0 -> l1 : stored^0'=stored^post1, tmp1^0'=tmp1^post1, tmp___02^0'=tmp___02^post1, (-tmp1^0 <= 0 /\ -1+stored^post1 == 0 /\ tmp1^0 <= 0 /\ -tmp___02^post1+tmp___02^0 == 0 /\ -tmp1^post1+tmp1^0 == 0), cost: 1 New rule: l0 -> l1 : stored^0'=stored^post1, tmp1^0'=tmp1^post1, tmp___02^0'=tmp___02^post1, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ -1+stored^post1 == 0 /\ tmp1^0 <= 0 /\ -tmp___02^post1+tmp___02^0 == 0 /\ -tmp1^post1+tmp1^0 == 0), cost: 1 Propagated Equalities Original rule: l0 -> l1 : stored^0'=stored^post1, tmp1^0'=tmp1^post1, tmp___02^0'=tmp___02^post1, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ -1+stored^post1 == 0 /\ tmp1^0 <= 0 /\ -tmp___02^post1+tmp___02^0 == 0 /\ -tmp1^post1+tmp1^0 == 0), cost: 1 New rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ -tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 propagated equality stored^post1 = 1 propagated equality tmp___02^post1 = tmp___02^0 propagated equality tmp1^post1 = tmp1^0 Simplified Guard Original rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ -tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 New rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 made implied equalities explicit Original rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 New rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 Removed Trivial Updates Original rule: l0 -> l1 : stored^0'=1, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 New rule: l0 -> l1 : stored^0'=1, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 Propagated Equalities Original rule: l0 -> l2 : stored^0'=stored^post2, tmp1^0'=tmp1^post2, tmp___02^0'=tmp___02^post2, (-tmp1^post2+tmp1^0 == 0 /\ stored^0-stored^post2 == 0 /\ 1-tmp1^0 <= 0 /\ -tmp___02^post2+tmp___02^0 == 0), cost: 1 New rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-tmp1^0 <= 0), cost: 1 propagated equality tmp1^post2 = tmp1^0 propagated equality stored^post2 = stored^0 propagated equality tmp___02^post2 = tmp___02^0 Simplified Guard Original rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-tmp1^0 <= 0), cost: 1 New rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1-tmp1^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1-tmp1^0 <= 0, cost: 1 New rule: l0 -> l2 : 1-tmp1^0 <= 0, cost: 1 Propagated Equalities Original rule: l0 -> l2 : stored^0'=stored^post3, tmp1^0'=tmp1^post3, tmp___02^0'=tmp___02^post3, (-tmp1^post3+tmp1^0 == 0 /\ stored^0-stored^post3 == 0 /\ 1+tmp1^0 <= 0 /\ -tmp___02^post3+tmp___02^0 == 0), cost: 1 New rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1+tmp1^0 <= 0), cost: 1 propagated equality tmp1^post3 = tmp1^0 propagated equality stored^post3 = stored^0 propagated equality tmp___02^post3 = tmp___02^0 Simplified Guard Original rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1+tmp1^0 <= 0), cost: 1 New rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1+tmp1^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l0 -> l2 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1+tmp1^0 <= 0, cost: 1 New rule: l0 -> l2 : 1+tmp1^0 <= 0, cost: 1 Propagated Equalities Original rule: l3 -> l0 : stored^0'=stored^post4, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^post4, (0 == 0 /\ -tmp___02^post4+tmp___02^0 == 0 /\ stored^0-stored^post4 == 0), cost: 1 New rule: l3 -> l0 : stored^0'=stored^0, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 propagated equality tmp___02^post4 = tmp___02^0 propagated equality stored^post4 = stored^0 Simplified Guard Original rule: l3 -> l0 : stored^0'=stored^0, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 New rule: l3 -> l0 : stored^0'=stored^0, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^0, T, cost: 1 Removed Trivial Updates Original rule: l3 -> l0 : stored^0'=stored^0, tmp1^0'=tmp1^post4, tmp___02^0'=tmp___02^0, T, cost: 1 New rule: l3 -> l0 : tmp1^0'=tmp1^post4, T, cost: 1 made implied equalities explicit Original rule: l4 -> l1 : stored^0'=stored^post5, tmp1^0'=tmp1^post5, tmp___02^0'=tmp___02^post5, (-tmp___02^post5+tmp___02^0 == 0 /\ tmp1^0-tmp1^post5 == 0 /\ -tmp___02^0 <= 0 /\ tmp___02^0 <= 0 /\ stored^0-stored^post5 == 0), cost: 1 New rule: l4 -> l1 : stored^0'=stored^post5, tmp1^0'=tmp1^post5, tmp___02^0'=tmp___02^post5, (-tmp___02^post5+tmp___02^0 == 0 /\ tmp1^0-tmp1^post5 == 0 /\ -tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0 /\ stored^0-stored^post5 == 0), cost: 1 Propagated Equalities Original rule: l4 -> l1 : stored^0'=stored^post5, tmp1^0'=tmp1^post5, tmp___02^0'=tmp___02^post5, (-tmp___02^post5+tmp___02^0 == 0 /\ tmp1^0-tmp1^post5 == 0 /\ -tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0 /\ stored^0-stored^post5 == 0), cost: 1 New rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ -tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 propagated equality tmp___02^post5 = tmp___02^0 propagated equality tmp1^post5 = tmp1^0 propagated equality stored^post5 = stored^0 Simplified Guard Original rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ -tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 New rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 made implied equalities explicit Original rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 New rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 Removed Trivial Updates Original rule: l4 -> l1 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 New rule: l4 -> l1 : (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 Propagated Equalities Original rule: l4 -> l3 : stored^0'=stored^post6, tmp1^0'=tmp1^post6, tmp___02^0'=tmp___02^post6, (tmp1^0-tmp1^post6 == 0 /\ 1-tmp___02^0 <= 0 /\ stored^0-stored^post6 == 0 /\ -tmp___02^post6+tmp___02^0 == 0), cost: 1 New rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-tmp___02^0 <= 0), cost: 1 propagated equality tmp1^post6 = tmp1^0 propagated equality stored^post6 = stored^0 propagated equality tmp___02^post6 = tmp___02^0 Simplified Guard Original rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-tmp___02^0 <= 0), cost: 1 New rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1-tmp___02^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1-tmp___02^0 <= 0, cost: 1 New rule: l4 -> l3 : 1-tmp___02^0 <= 0, cost: 1 Propagated Equalities Original rule: l4 -> l3 : stored^0'=stored^post7, tmp1^0'=tmp1^post7, tmp___02^0'=tmp___02^post7, (tmp1^0-tmp1^post7 == 0 /\ -tmp___02^post7+tmp___02^0 == 0 /\ stored^0-stored^post7 == 0 /\ 1+tmp___02^0 <= 0), cost: 1 New rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1+tmp___02^0 <= 0), cost: 1 propagated equality tmp1^post7 = tmp1^0 propagated equality tmp___02^post7 = tmp___02^0 propagated equality stored^post7 = stored^0 Simplified Guard Original rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1+tmp___02^0 <= 0), cost: 1 New rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1+tmp___02^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l4 -> l3 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 1+tmp___02^0 <= 0, cost: 1 New rule: l4 -> l3 : 1+tmp___02^0 <= 0, cost: 1 Propagated Equalities Original rule: l5 -> l6 : stored^0'=stored^post8, tmp1^0'=tmp1^post8, tmp___02^0'=tmp___02^post8, (stored^0-stored^post8 == 0 /\ tmp___02^0-tmp___02^post8 == 0 /\ -tmp1^post8+tmp1^0 == 0), cost: 1 New rule: l5 -> l6 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 propagated equality stored^post8 = stored^0 propagated equality tmp___02^post8 = tmp___02^0 propagated equality tmp1^post8 = tmp1^0 Simplified Guard Original rule: l5 -> l6 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 New rule: l5 -> l6 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 Removed Trivial Updates Original rule: l5 -> l6 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 New rule: l5 -> l6 : T, cost: 1 Propagated Equalities Original rule: l7 -> l4 : stored^0'=stored^post9, tmp1^0'=tmp1^post9, tmp___02^0'=tmp___02^post9, (0 == 0 /\ stored^0-stored^post9 == 0 /\ -tmp1^post9+tmp1^0 == 0), cost: 1 New rule: l7 -> l4 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^post9, 0 == 0, cost: 1 propagated equality stored^post9 = stored^0 propagated equality tmp1^post9 = tmp1^0 Simplified Guard Original rule: l7 -> l4 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^post9, 0 == 0, cost: 1 New rule: l7 -> l4 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^post9, T, cost: 1 Removed Trivial Updates Original rule: l7 -> l4 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^post9, T, cost: 1 New rule: l7 -> l4 : tmp___02^0'=tmp___02^post9, T, cost: 1 Propagated Equalities Original rule: l1 -> l8 : stored^0'=stored^post10, tmp1^0'=tmp1^post10, tmp___02^0'=tmp___02^post10, (-tmp1^post10+tmp1^0 == 0 /\ tmp___02^0-tmp___02^post10 == 0 /\ -stored^post10+stored^0 == 0), cost: 1 New rule: l1 -> l8 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 propagated equality tmp1^post10 = tmp1^0 propagated equality tmp___02^post10 = tmp___02^0 propagated equality stored^post10 = stored^0 Simplified Guard Original rule: l1 -> l8 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 New rule: l1 -> l8 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 Removed Trivial Updates Original rule: l1 -> l8 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 New rule: l1 -> l8 : T, cost: 1 Propagated Equalities Original rule: l8 -> l5 : stored^0'=stored^post11, tmp1^0'=tmp1^post11, tmp___02^0'=tmp___02^post11, (2-stored^0 <= 0 /\ -stored^post11+stored^0 == 0 /\ tmp___02^0-tmp___02^post11 == 0 /\ -tmp1^post11+tmp1^0 == 0), cost: 1 New rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 2-stored^0 <= 0), cost: 1 propagated equality stored^post11 = stored^0 propagated equality tmp___02^post11 = tmp___02^0 propagated equality tmp1^post11 = tmp1^0 Simplified Guard Original rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 2-stored^0 <= 0), cost: 1 New rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 2-stored^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 2-stored^0 <= 0, cost: 1 New rule: l8 -> l5 : 2-stored^0 <= 0, cost: 1 Propagated Equalities Original rule: l8 -> l5 : stored^0'=stored^post12, tmp1^0'=tmp1^post12, tmp___02^0'=tmp___02^post12, (-tmp1^post12+tmp1^0 == 0 /\ stored^0 <= 0 /\ tmp___02^0-tmp___02^post12 == 0 /\ -stored^post12+stored^0 == 0), cost: 1 New rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ stored^0 <= 0), cost: 1 propagated equality tmp1^post12 = tmp1^0 propagated equality tmp___02^post12 = tmp___02^0 propagated equality stored^post12 = stored^0 Simplified Guard Original rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ stored^0 <= 0), cost: 1 New rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, stored^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l8 -> l5 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, stored^0 <= 0, cost: 1 New rule: l8 -> l5 : stored^0 <= 0, cost: 1 made implied equalities explicit Original rule: l8 -> l5 : stored^0'=stored^post13, tmp1^0'=tmp1^post13, tmp___02^0'=tmp___02^post13, (1-stored^0 <= 0 /\ -1+stored^0 <= 0 /\ tmp___02^0-tmp___02^post13 == 0 /\ -tmp1^post13+tmp1^0 == 0 /\ stored^post13 == 0), cost: 1 New rule: l8 -> l5 : stored^0'=stored^post13, tmp1^0'=tmp1^post13, tmp___02^0'=tmp___02^post13, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0 /\ tmp___02^0-tmp___02^post13 == 0 /\ -tmp1^post13+tmp1^0 == 0 /\ stored^post13 == 0), cost: 1 Propagated Equalities Original rule: l8 -> l5 : stored^0'=stored^post13, tmp1^0'=tmp1^post13, tmp___02^0'=tmp___02^post13, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0 /\ tmp___02^0-tmp___02^post13 == 0 /\ -tmp1^post13+tmp1^0 == 0 /\ stored^post13 == 0), cost: 1 New rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 propagated equality tmp___02^post13 = tmp___02^0 propagated equality tmp1^post13 = tmp1^0 propagated equality stored^post13 = 0 Simplified Guard Original rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (0 == 0 /\ 1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 New rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 made implied equalities explicit Original rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 New rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 Removed Trivial Updates Original rule: l8 -> l5 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 New rule: l8 -> l5 : stored^0'=0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 Propagated Equalities Original rule: l2 -> l7 : stored^0'=stored^post14, tmp1^0'=tmp1^post14, tmp___02^0'=tmp___02^post14, (tmp___02^0-tmp___02^post14 == 0 /\ stored^0-stored^post14 == 0 /\ -tmp1^post14+tmp1^0 == 0), cost: 1 New rule: l2 -> l7 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 propagated equality tmp___02^post14 = tmp___02^0 propagated equality stored^post14 = stored^0 propagated equality tmp1^post14 = tmp1^0 Simplified Guard Original rule: l2 -> l7 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 New rule: l2 -> l7 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 Removed Trivial Updates Original rule: l2 -> l7 : stored^0'=stored^0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 New rule: l2 -> l7 : T, cost: 1 Propagated Equalities Original rule: l10 -> l7 : stored^0'=stored^post15, tmp1^0'=tmp1^post15, tmp___02^0'=tmp___02^post15, (stored^0-stored^post16 == 0 /\ tmp___02^post16-tmp___02^post15 == 0 /\ tmp1^post16-tmp1^post15 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ stored^post15 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 New rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^post16, tmp___02^0'=tmp___02^post16, (0 == 0 /\ stored^0-stored^post16 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 propagated equality tmp___02^post15 = tmp___02^post16 propagated equality tmp1^post15 = tmp1^post16 propagated equality stored^post15 = 0 Propagated Equalities Original rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^post16, tmp___02^0'=tmp___02^post16, (0 == 0 /\ stored^0-stored^post16 == 0 /\ -tmp1^post16+tmp1^0 == 0 /\ -tmp___02^post16+tmp___02^0 == 0), cost: 1 New rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 propagated equality stored^post16 = stored^0 propagated equality tmp1^post16 = tmp1^0 propagated equality tmp___02^post16 = tmp___02^0 Simplified Guard Original rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, 0 == 0, cost: 1 New rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 Removed Trivial Updates Original rule: l10 -> l7 : stored^0'=0, tmp1^0'=tmp1^0, tmp___02^0'=tmp___02^0, T, cost: 1 New rule: l10 -> l7 : stored^0'=0, T, cost: 1 Step with 31 Trace 31[T] Blocked [{}, {}] Step with 25 Trace 31[T], 25[T] Blocked [{}, {}, {}] Step with 21 Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)] Blocked [{}, {}, {}, {}] Step with 26 Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)], 26[T] Blocked [{}, {}, {}, {}, {}] Step with 28 Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)], 26[T], 28[(stored^0 <= 0)] Blocked [{}, {}, {}, {}, {27[T]}, {}] Step with 24 Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)], 26[T], 28[(stored^0 <= 0)], 24[T] Blocked [{}, {}, {}, {}, {27[T]}, {}, {}] Backtrack Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)], 26[T], 28[(stored^0 <= 0)] Blocked [{}, {}, {}, {}, {27[T]}, {24[T]}] Backtrack Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)], 26[T] Blocked [{}, {}, {}, {}, {27[T], 28[T]}] Backtrack Trace 31[T], 25[T], 21[(-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0)] Blocked [{}, {}, {}, {26[T]}] Backtrack Trace 31[T], 25[T] Blocked [{}, {}, {21[T]}] Step with 22 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)] Blocked [{}, {}, {21[T]}, {}] Step with 20 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T] Blocked [{}, {}, {21[T]}, {}, {}] Step with 17 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)] Blocked [{}, {}, {21[T]}, {}, {}, {}] Step with 26 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)], 26[T] Blocked [{}, {}, {21[T]}, {}, {}, {}, {}] Step with 29 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)], 26[T], 29[(1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0)] Blocked [{}, {}, {21[T]}, {}, {}, {}, {28[T]}, {}] Step with 24 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)], 26[T], 29[(1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0)], 24[T] Blocked [{}, {}, {21[T]}, {}, {}, {}, {28[T]}, {}, {}] Backtrack Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)], 26[T], 29[(1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0)] Blocked [{}, {}, {21[T]}, {}, {}, {}, {28[T]}, {24[T]}] Backtrack Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)], 26[T] Blocked [{}, {}, {21[T]}, {}, {}, {}, {28[T], 29[T]}] Backtrack Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 17[(-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0)] Blocked [{}, {}, {21[T]}, {}, {}, {26[T]}] Backtrack Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T] Blocked [{}, {}, {21[T]}, {}, {17[T]}] Step with 18 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 18[(1-tmp1^0 <= 0)] Blocked [{}, {}, {21[T]}, {}, {17[T]}, {}] Step with 30 Trace 31[T], 25[T], 22[(1-tmp___02^0 <= 0)], 20[T], 18[(1-tmp1^0 <= 0)], 30[T] Blocked [{}, {}, {21[T]}, {}, {17[T]}, {}, {}] Nonterm Start location: l10 Program variables: stored^0 tmp1^0 tmp___02^0 17: l0 -> l1 : stored^0'=1, (-tmp1^0 <= 0 /\ -tmp1^0 == 0 /\ tmp1^0 <= 0), cost: 1 18: l0 -> l2 : 1-tmp1^0 <= 0, cost: 1 19: l0 -> l2 : 1+tmp1^0 <= 0, cost: 1 26: l1 -> l8 : T, cost: 1 30: l2 -> l7 : T, cost: 1 20: l3 -> l0 : tmp1^0'=tmp1^post4, T, cost: 1 21: l4 -> l1 : (-tmp___02^0 <= 0 /\ -tmp___02^0 == 0 /\ tmp___02^0 <= 0), cost: 1 22: l4 -> l3 : 1-tmp___02^0 <= 0, cost: 1 23: l4 -> l3 : 1+tmp___02^0 <= 0, cost: 1 24: l5 -> l6 : T, cost: 1 25: l7 -> l4 : tmp___02^0'=tmp___02^post9, T, cost: 1 32: l7 -> LoAT_sink : (-1+n >= 0 /\ -1+tmp___02^post91 >= 0 /\ -1+tmp1^post41 >= 0), cost: NONTERM 27: l8 -> l5 : 2-stored^0 <= 0, cost: 1 28: l8 -> l5 : stored^0 <= 0, cost: 1 29: l8 -> l5 : stored^0'=0, (1-stored^0 <= 0 /\ 1-stored^0 == 0 /\ -1+stored^0 <= 0), cost: 1 31: l10 -> l7 : stored^0'=0, T, cost: 1 Certificate of Non-Termination Original rule: l7 -> l7 : tmp1^0'=tmp1^post41, tmp___02^0'=tmp___02^post91, (1-tmp___02^post91 <= 0 /\ 1-tmp1^post41 <= 0), cost: 1 New rule: l7 -> LoAT_sink : (-1+n >= 0 /\ -1+tmp___02^post91 >= 0 /\ -1+tmp1^post41 >= 0), cost: NONTERM -1+tmp___02^post91 >= 0 [0]: monotonic increase yields -1+tmp___02^post91 >= 0 -1+tmp1^post41 >= 0 [0]: monotonic increase yields -1+tmp1^post41 >= 0 Replacement map: {-1+tmp___02^post91 >= 0 -> -1+tmp___02^post91 >= 0, -1+tmp1^post41 >= 0 -> -1+tmp1^post41 >= 0} Step with 32 Trace 31[T], 32[(-1+n >= 0 /\ -1+tmp___02^post91 >= 0 /\ -1+tmp1^post41 >= 0)] Blocked [{}, {}, {32[T]}] Refute Counterexample [ stored^0=0 tmp1^0=0 tmp___02^0=0 ] 31 [ stored^0=stored^0 tmp1^0=0 tmp___02^0=0 ] 32 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b