NO Initial ITS Start location: l6 Program variables: len^0 tmp^0 0: l0 -> l1 : len^0'=len^post1, tmp^0'=tmp^post1, (tmp^0-tmp^post1 == 0 /\ -1+len^post1-len^0 == 0), cost: 1 7: l1 -> l3 : len^0'=len^post8, tmp^0'=tmp^post8, (0 == 0 /\ -len^post8+len^0 == 0), cost: 1 1: l2 -> l0 : len^0'=len^post2, tmp^0'=tmp^post2, (-tmp^post2+tmp^0 == 0 /\ 5-len^0 <= 0 /\ -len^post2+len^0 == 0), cost: 1 2: l2 -> l0 : len^0'=len^post3, tmp^0'=tmp^post3, (-len^post3+len^0 == 0 /\ -3+len^0 <= 0 /\ tmp^0-tmp^post3 == 0), cost: 1 3: l2 -> l0 : len^0'=len^post4, tmp^0'=tmp^post4, (len^post4 == 0 /\ -4+len^0 <= 0 /\ 4-len^0 <= 0 /\ tmp^0-tmp^post4 == 0), cost: 1 4: l3 -> l4 : len^0'=len^post5, tmp^0'=tmp^post5, (tmp^0 <= 0 /\ -tmp^0 <= 0 /\ -tmp^post5+tmp^0 == 0 /\ -len^post5+len^0 == 0), cost: 1 5: l3 -> l2 : len^0'=len^post6, tmp^0'=tmp^post6, (tmp^0-tmp^post6 == 0 /\ -len^post6+len^0 == 0 /\ 1-tmp^0 <= 0), cost: 1 6: l3 -> l2 : len^0'=len^post7, tmp^0'=tmp^post7, (1+tmp^0 <= 0 /\ -len^post7+len^0 == 0 /\ tmp^0-tmp^post7 == 0), cost: 1 8: l5 -> l1 : len^0'=len^post9, tmp^0'=tmp^post9, (len^post9 == 0 /\ tmp^0-tmp^post9 == 0), cost: 1 9: l6 -> l5 : len^0'=len^post10, tmp^0'=tmp^post10, (-len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0), cost: 1 Chained Linear Paths Start location: l6 Program variables: len^0 tmp^0 0: l0 -> l1 : len^0'=len^post1, tmp^0'=tmp^post1, (tmp^0-tmp^post1 == 0 /\ -1+len^post1-len^0 == 0), cost: 1 7: l1 -> l3 : len^0'=len^post8, tmp^0'=tmp^post8, (0 == 0 /\ -len^post8+len^0 == 0), cost: 1 1: l2 -> l0 : len^0'=len^post2, tmp^0'=tmp^post2, (-tmp^post2+tmp^0 == 0 /\ 5-len^0 <= 0 /\ -len^post2+len^0 == 0), cost: 1 2: l2 -> l0 : len^0'=len^post3, tmp^0'=tmp^post3, (-len^post3+len^0 == 0 /\ -3+len^0 <= 0 /\ tmp^0-tmp^post3 == 0), cost: 1 3: l2 -> l0 : len^0'=len^post4, tmp^0'=tmp^post4, (len^post4 == 0 /\ -4+len^0 <= 0 /\ 4-len^0 <= 0 /\ tmp^0-tmp^post4 == 0), cost: 1 4: l3 -> l4 : len^0'=len^post5, tmp^0'=tmp^post5, (tmp^0 <= 0 /\ -tmp^0 <= 0 /\ -tmp^post5+tmp^0 == 0 /\ -len^post5+len^0 == 0), cost: 1 5: l3 -> l2 : len^0'=len^post6, tmp^0'=tmp^post6, (tmp^0-tmp^post6 == 0 /\ -len^post6+len^0 == 0 /\ 1-tmp^0 <= 0), cost: 1 6: l3 -> l2 : len^0'=len^post7, tmp^0'=tmp^post7, (1+tmp^0 <= 0 /\ -len^post7+len^0 == 0 /\ tmp^0-tmp^post7 == 0), cost: 1 10: l6 -> l1 : len^0'=len^post9, tmp^0'=tmp^post9, (len^post9 == 0 /\ -len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0 /\ tmp^post10-tmp^post9 == 0), cost: 1 Eliminating location l5 by chaining: Applied chaining First rule: l6 -> l5 : len^0'=len^post10, tmp^0'=tmp^post10, (-len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0), cost: 1 Second rule: l5 -> l1 : len^0'=len^post9, tmp^0'=tmp^post9, (len^post9 == 0 /\ tmp^0-tmp^post9 == 0), cost: 1 New rule: l6 -> l1 : len^0'=len^post9, tmp^0'=tmp^post9, (len^post9 == 0 /\ -len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0 /\ tmp^post10-tmp^post9 == 0), cost: 1 Applied deletion Removed the following rules: 8 9 Simplified Transitions Start location: l6 Program variables: len^0 tmp^0 11: l0 -> l1 : len^0'=1+len^0, T, cost: 1 18: l1 -> l3 : tmp^0'=tmp^post8, T, cost: 1 12: l2 -> l0 : 5-len^0 <= 0, cost: 1 13: l2 -> l0 : -3+len^0 <= 0, cost: 1 14: l2 -> l0 : len^0'=0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 15: l3 -> l4 : (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 16: l3 -> l2 : 1-tmp^0 <= 0, cost: 1 17: l3 -> l2 : 1+tmp^0 <= 0, cost: 1 19: l6 -> l1 : len^0'=0, T, cost: 1 Propagated Equalities Original rule: l0 -> l1 : len^0'=len^post1, tmp^0'=tmp^post1, (tmp^0-tmp^post1 == 0 /\ -1+len^post1-len^0 == 0), cost: 1 New rule: l0 -> l1 : len^0'=1+len^0, tmp^0'=tmp^0, 0 == 0, cost: 1 propagated equality tmp^post1 = tmp^0 propagated equality len^post1 = 1+len^0 Simplified Guard Original rule: l0 -> l1 : len^0'=1+len^0, tmp^0'=tmp^0, 0 == 0, cost: 1 New rule: l0 -> l1 : len^0'=1+len^0, tmp^0'=tmp^0, T, cost: 1 Removed Trivial Updates Original rule: l0 -> l1 : len^0'=1+len^0, tmp^0'=tmp^0, T, cost: 1 New rule: l0 -> l1 : len^0'=1+len^0, T, cost: 1 Propagated Equalities Original rule: l2 -> l0 : len^0'=len^post2, tmp^0'=tmp^post2, (-tmp^post2+tmp^0 == 0 /\ 5-len^0 <= 0 /\ -len^post2+len^0 == 0), cost: 1 New rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 5-len^0 <= 0), cost: 1 propagated equality tmp^post2 = tmp^0 propagated equality len^post2 = len^0 Simplified Guard Original rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 5-len^0 <= 0), cost: 1 New rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, 5-len^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, 5-len^0 <= 0, cost: 1 New rule: l2 -> l0 : 5-len^0 <= 0, cost: 1 Propagated Equalities Original rule: l2 -> l0 : len^0'=len^post3, tmp^0'=tmp^post3, (-len^post3+len^0 == 0 /\ -3+len^0 <= 0 /\ tmp^0-tmp^post3 == 0), cost: 1 New rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ -3+len^0 <= 0), cost: 1 propagated equality len^post3 = len^0 propagated equality tmp^post3 = tmp^0 Simplified Guard Original rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ -3+len^0 <= 0), cost: 1 New rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, -3+len^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l2 -> l0 : len^0'=len^0, tmp^0'=tmp^0, -3+len^0 <= 0, cost: 1 New rule: l2 -> l0 : -3+len^0 <= 0, cost: 1 made implied equalities explicit Original rule: l2 -> l0 : len^0'=len^post4, tmp^0'=tmp^post4, (len^post4 == 0 /\ -4+len^0 <= 0 /\ 4-len^0 <= 0 /\ tmp^0-tmp^post4 == 0), cost: 1 New rule: l2 -> l0 : len^0'=len^post4, tmp^0'=tmp^post4, (len^post4 == 0 /\ -4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0 /\ tmp^0-tmp^post4 == 0), cost: 1 Propagated Equalities Original rule: l2 -> l0 : len^0'=len^post4, tmp^0'=tmp^post4, (len^post4 == 0 /\ -4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0 /\ tmp^0-tmp^post4 == 0), cost: 1 New rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (0 == 0 /\ -4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 propagated equality len^post4 = 0 propagated equality tmp^post4 = tmp^0 Simplified Guard Original rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (0 == 0 /\ -4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 New rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 made implied equalities explicit Original rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 New rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 Removed Trivial Updates Original rule: l2 -> l0 : len^0'=0, tmp^0'=tmp^0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 New rule: l2 -> l0 : len^0'=0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 made implied equalities explicit Original rule: l3 -> l4 : len^0'=len^post5, tmp^0'=tmp^post5, (tmp^0 <= 0 /\ -tmp^0 <= 0 /\ -tmp^post5+tmp^0 == 0 /\ -len^post5+len^0 == 0), cost: 1 New rule: l3 -> l4 : len^0'=len^post5, tmp^0'=tmp^post5, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0 /\ -tmp^post5+tmp^0 == 0 /\ -len^post5+len^0 == 0), cost: 1 Propagated Equalities Original rule: l3 -> l4 : len^0'=len^post5, tmp^0'=tmp^post5, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0 /\ -tmp^post5+tmp^0 == 0 /\ -len^post5+len^0 == 0), cost: 1 New rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 propagated equality tmp^post5 = tmp^0 propagated equality len^post5 = len^0 Simplified Guard Original rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 New rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 made implied equalities explicit Original rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 New rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 Removed Trivial Updates Original rule: l3 -> l4 : len^0'=len^0, tmp^0'=tmp^0, (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 New rule: l3 -> l4 : (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 Propagated Equalities Original rule: l3 -> l2 : len^0'=len^post6, tmp^0'=tmp^post6, (tmp^0-tmp^post6 == 0 /\ -len^post6+len^0 == 0 /\ 1-tmp^0 <= 0), cost: 1 New rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 1-tmp^0 <= 0), cost: 1 propagated equality tmp^post6 = tmp^0 propagated equality len^post6 = len^0 Simplified Guard Original rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 1-tmp^0 <= 0), cost: 1 New rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, 1-tmp^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, 1-tmp^0 <= 0, cost: 1 New rule: l3 -> l2 : 1-tmp^0 <= 0, cost: 1 Propagated Equalities Original rule: l3 -> l2 : len^0'=len^post7, tmp^0'=tmp^post7, (1+tmp^0 <= 0 /\ -len^post7+len^0 == 0 /\ tmp^0-tmp^post7 == 0), cost: 1 New rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 1+tmp^0 <= 0), cost: 1 propagated equality len^post7 = len^0 propagated equality tmp^post7 = tmp^0 Simplified Guard Original rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, (0 == 0 /\ 1+tmp^0 <= 0), cost: 1 New rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, 1+tmp^0 <= 0, cost: 1 Removed Trivial Updates Original rule: l3 -> l2 : len^0'=len^0, tmp^0'=tmp^0, 1+tmp^0 <= 0, cost: 1 New rule: l3 -> l2 : 1+tmp^0 <= 0, cost: 1 Propagated Equalities Original rule: l1 -> l3 : len^0'=len^post8, tmp^0'=tmp^post8, (0 == 0 /\ -len^post8+len^0 == 0), cost: 1 New rule: l1 -> l3 : len^0'=len^0, tmp^0'=tmp^post8, 0 == 0, cost: 1 propagated equality len^post8 = len^0 Simplified Guard Original rule: l1 -> l3 : len^0'=len^0, tmp^0'=tmp^post8, 0 == 0, cost: 1 New rule: l1 -> l3 : len^0'=len^0, tmp^0'=tmp^post8, T, cost: 1 Removed Trivial Updates Original rule: l1 -> l3 : len^0'=len^0, tmp^0'=tmp^post8, T, cost: 1 New rule: l1 -> l3 : tmp^0'=tmp^post8, T, cost: 1 Propagated Equalities Original rule: l6 -> l1 : len^0'=len^post9, tmp^0'=tmp^post9, (len^post9 == 0 /\ -len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0 /\ tmp^post10-tmp^post9 == 0), cost: 1 New rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^post10, (0 == 0 /\ -len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0), cost: 1 propagated equality len^post9 = 0 propagated equality tmp^post9 = tmp^post10 Propagated Equalities Original rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^post10, (0 == 0 /\ -len^post10+len^0 == 0 /\ -tmp^post10+tmp^0 == 0), cost: 1 New rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^0, 0 == 0, cost: 1 propagated equality len^post10 = len^0 propagated equality tmp^post10 = tmp^0 Simplified Guard Original rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^0, 0 == 0, cost: 1 New rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^0, T, cost: 1 Removed Trivial Updates Original rule: l6 -> l1 : len^0'=0, tmp^0'=tmp^0, T, cost: 1 New rule: l6 -> l1 : len^0'=0, T, cost: 1 Step with 19 Trace 19[T] Blocked [{}, {}] Step with 18 Trace 19[T], 18[T] Blocked [{}, {}, {}] Step with 15 Trace 19[T], 18[T], 15[(tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0)] Blocked [{}, {}, {}, {}] Backtrack Trace 19[T], 18[T] Blocked [{}, {}, {15[T]}] Step with 16 Trace 19[T], 18[T], 16[(1-tmp^0 <= 0)] Blocked [{}, {}, {15[T]}, {}] Step with 13 Trace 19[T], 18[T], 16[(1-tmp^0 <= 0)], 13[(-3+len^0 <= 0)] Blocked [{}, {}, {15[T]}, {12[T]}, {}] Step with 11 Trace 19[T], 18[T], 16[(1-tmp^0 <= 0)], 13[(-3+len^0 <= 0)], 11[T] Blocked [{}, {}, {15[T]}, {12[T]}, {}, {}] Accelerate Start location: l6 Program variables: len^0 tmp^0 11: l0 -> l1 : len^0'=1+len^0, T, cost: 1 18: l1 -> l3 : tmp^0'=tmp^post8, T, cost: 1 20: l1 -> l1 : len^0'=len^0+n, tmp^0'=tmp^post81, (4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0), cost: 1 12: l2 -> l0 : 5-len^0 <= 0, cost: 1 13: l2 -> l0 : -3+len^0 <= 0, cost: 1 14: l2 -> l0 : len^0'=0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 15: l3 -> l4 : (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 16: l3 -> l2 : 1-tmp^0 <= 0, cost: 1 17: l3 -> l2 : 1+tmp^0 <= 0, cost: 1 19: l6 -> l1 : len^0'=0, T, cost: 1 Loop Acceleration Original rule: l1 -> l1 : len^0'=1+len^0, tmp^0'=tmp^post81, (-3+len^0 <= 0 /\ 1-tmp^post81 <= 0), cost: 1 New rule: l1 -> l1 : len^0'=len^0+n, tmp^0'=tmp^post81, (4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0), cost: 1 -1+tmp^post81 >= 0 [0]: monotonic increase yields -1+tmp^post81 >= 0 3-len^0 >= 0 [0]: montonic decrease yields 4-len^0-n >= 0 3-len^0 >= 0 [1]: eventual increase yields (1 <= 0 /\ 3-len^0 >= 0) Replacement map: {-1+tmp^post81 >= 0 -> -1+tmp^post81 >= 0, 3-len^0 >= 0 -> 4-len^0-n >= 0} Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)] Blocked [{}, {}, {20[T]}] Step with 18 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T] Blocked [{}, {}, {20[T]}, {}] Step with 16 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)] Blocked [{}, {}, {20[T]}, {}, {}] Step with 13 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)], 13[(-3+len^0 <= 0)] Blocked [{}, {}, {20[T]}, {}, {}, {}] Step with 11 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)], 13[(-3+len^0 <= 0)], 11[T] Blocked [{}, {}, {20[T]}, {}, {}, {}, {}] Covered Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)], 13[(-3+len^0 <= 0)] Blocked [{}, {}, {20[T]}, {}, {}, {11[T]}] Backtrack Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)] Blocked [{}, {}, {20[T]}, {}, {13[T]}] Step with 14 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)], 14[(-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0)] Blocked [{}, {}, {20[T]}, {}, {13[T]}, {}] Step with 11 Trace 19[T], 20[(4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0)], 18[T], 16[(1-tmp^0 <= 0)], 14[(-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0)], 11[T] Blocked [{}, {}, {20[T]}, {}, {13[T]}, {}, {}] Acceleration Failed marked recursive suffix as redundant Nonterm Start location: l6 Program variables: len^0 tmp^0 11: l0 -> l1 : len^0'=1+len^0, T, cost: 1 18: l1 -> l3 : tmp^0'=tmp^post8, T, cost: 1 20: l1 -> l1 : len^0'=len^0+n, tmp^0'=tmp^post81, (4-len^0-n >= 0 /\ -1+tmp^post81 >= 0 /\ -1+n >= 0), cost: 1 21: l1 -> LoAT_sink : (-1+tmp^post82 >= 0 /\ 3-len^0 >= 0 /\ -1+n2 >= 0), cost: NONTERM 12: l2 -> l0 : 5-len^0 <= 0, cost: 1 13: l2 -> l0 : -3+len^0 <= 0, cost: 1 14: l2 -> l0 : len^0'=0, (-4+len^0 <= 0 /\ -4+len^0 == 0 /\ 4-len^0 <= 0), cost: 1 15: l3 -> l4 : (tmp^0 <= 0 /\ tmp^0 == 0 /\ -tmp^0 <= 0), cost: 1 16: l3 -> l2 : 1-tmp^0 <= 0, cost: 1 17: l3 -> l2 : 1+tmp^0 <= 0, cost: 1 19: l6 -> l1 : len^0'=0, T, cost: 1 Certificate of Non-Termination Original rule: l1 -> l1 : len^0'=1, tmp^0'=tmp^post82, (1-tmp^post82 <= 0 /\ 3-len^0 >= 0), cost: 1 New rule: l1 -> LoAT_sink : (-1+tmp^post82 >= 0 /\ 3-len^0 >= 0 /\ -1+n2 >= 0), cost: NONTERM -1+tmp^post82 >= 0 [0]: monotonic increase yields -1+tmp^post82 >= 0 3-len^0 >= 0 [0]: monotonic increase yields 3-len^0 >= 0 Replacement map: {-1+tmp^post82 >= 0 -> -1+tmp^post82 >= 0, 3-len^0 >= 0 -> 3-len^0 >= 0} Step with 21 Trace 19[T], 21[(-1+tmp^post82 >= 0 /\ 3-len^0 >= 0 /\ -1+n2 >= 0)] Blocked [{}, {}, {21[T]}] Refute Counterexample [ len^0=0 tmp^0=0 ] 19 [ len^0=len^0 tmp^0=0 ] 21 NO Build SHA: a05f16bf13df659c382799650051f91bf6828c7b