YES(?, 3*a + 13) Initial complexity problem: 1: T: (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, d, h) [ 0 >= a /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, d - 1, h) [ d = 1 /\ b = c /\ a = 1 /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, 0, c, d, 1, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, 0, c, d, 0, f, d - 1, h) [ d = 1 /\ b = c /\ a = 1 /\ e = f /\ g = h ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, e - 1, f, g - 1, h) [ e >= 2 /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, g - 1, h) [ 1 >= e /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, e, c, d, e + 1, f, g - 1, h) [ a >= e + 2 /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, 0, f, g - 1, h) [ g >= 2 /\ e + 1 >= a /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, e, c, d, 0, f, g - 1, h) [ a >= 1 /\ a >= 2 /\ g = 1 /\ e + 1 = a /\ d = a ] (1, 1) start0(a, b, c, d, e, f, g, h) -> start(a, c, c, a, f, f, h, h) start location: start0 leaf cost: 0 Testing for unsatisfiable constraints removes the following transition from problem 1: cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, 0, f, g - 1, h) [ g >= 2 /\ e + 1 >= a /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] We thus obtain the following problem: 2: T: (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, d, h) [ 0 >= a /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, d - 1, h) [ d = 1 /\ b = c /\ a = 1 /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, 0, c, d, 1, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> stop(a, 0, c, d, 0, f, d - 1, h) [ d = 1 /\ b = c /\ a = 1 /\ e = f /\ g = h ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, e - 1, f, g - 1, h) [ e >= 2 /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, b, c, d, 0, f, g - 1, h) [ 1 >= e /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, e, c, d, e + 1, f, g - 1, h) [ a >= e + 2 /\ e >= 0 /\ a >= 2 /\ a >= e + 1 /\ g = 1 /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> stop(a, e, c, d, 0, f, g - 1, h) [ a >= 1 /\ a >= 2 /\ g = 1 /\ e + 1 = a /\ d = a ] (1, 1) start0(a, b, c, d, e, f, g, h) -> start(a, c, c, a, f, f, h, h) start location: start0 leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 2 produces the following problem: 3: T: (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) start(a, b, c, d, e, f, g, h) -> cut(a, 0, c, d, 1, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (1, 1) start0(a, b, c, d, e, f, g, h) -> start(a, c, c, a, f, f, h, h) start location: start0 leaf cost: 7 Repeatedly propagating knowledge in problem 3 produces the following problem: 4: T: (1, 1) start(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (1, 1) start(a, b, c, d, e, f, g, h) -> cut(a, 0, c, d, 1, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (?, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (1, 1) start0(a, b, c, d, e, f, g, h) -> start(a, c, c, a, f, f, h, h) start location: start0 leaf cost: 7 A polynomial rank function with Pol(start) = V_4 - 1 Pol(cut) = V_7 Pol(start0) = V_1 - 1 orients all transitions weakly and the transitions cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] strictly and produces the following problem: 5: T: (1, 1) start(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (1, 1) start(a, b, c, d, e, f, g, h) -> cut(a, 0, c, d, 1, f, d - 1, h) [ a >= 2 /\ b = c /\ d = a /\ e = f /\ g = h ] (a + 1, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, e - 1, f, g - 1, h) [ g >= 2 /\ e >= 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (a + 1, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, b, c, d, 0, f, g - 1, h) [ g >= 2 /\ 1 >= e /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (a + 1, 1) cut(a, b, c, d, e, f, g, h) -> cut(a, e, c, d, e + 1, f, g - 1, h) [ g >= 2 /\ a >= e + 2 /\ g >= 1 /\ e >= 0 /\ a >= g + 1 /\ a >= g + e /\ d = a ] (1, 1) start0(a, b, c, d, e, f, g, h) -> start(a, c, c, a, f, f, h, h) start location: start0 leaf cost: 7 Complexity upper bound 3*a + 13 Time: 0.645 sec (SMT: 0.610 sec)