YES(?, 2*b + 2*c + 7) Initial complexity problem: 1: T: (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, 1, f, g, h, i, j) [ a >= 1 /\ b >= c + 1 /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, d + 1, 1, f, g, h, i, j) [ a >= 1 /\ c >= b /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, -1, f, g, h, i, j) [ b >= c + 1 /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d + 1, -1, f, g, h, i, j) [ c >= b /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, e, f, g, h, i, j) [ c >= b /\ a >= 1 /\ d = c + 1 /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ a >= 1 /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, e, f, g, h, i, j) [ 0 >= a /\ c >= b /\ d = c + 1 /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (1, 1) start0(a, b, c, d, e, f, g, h, i, j) -> start(a, b, c, b, f, f, c, i, i, a) start location: start0 leaf cost: 0 Testing for unsatisfiable constraints removes the following transitions from problem 1: lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ a >= 1 /\ e = 1 /\ j = a /\ h = i /\ g = c ] lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] We thus obtain the following problem: 2: T: (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, 1, f, g, h, i, j) [ a >= 1 /\ b >= c + 1 /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, d + 1, 1, f, g, h, i, j) [ a >= 1 /\ c >= b /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, -1, f, g, h, i, j) [ b >= c + 1 /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d + 1, -1, f, g, h, i, j) [ c >= b /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, e, f, g, h, i, j) [ c >= b /\ a >= 1 /\ d = c + 1 /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> stop(a, b, c, d, e, f, g, h, i, j) [ 0 >= a /\ c >= b /\ d = c + 1 /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (1, 1) start0(a, b, c, d, e, f, g, h, i, j) -> start(a, b, c, b, f, f, c, i, i, a) 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, i, j) -> lbl71(a, b, c, d + 1, 1, f, g, h, i, j) [ a >= 1 /\ c >= b /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d + 1, -1, f, g, h, i, j) [ c >= b /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (1, 1) start0(a, b, c, d, e, f, g, h, i, j) -> start(a, b, c, b, f, f, c, i, i, a) start location: start0 leaf cost: 4 Repeatedly propagating knowledge in problem 3 produces the following problem: 4: T: (1, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, d + 1, 1, f, g, h, i, j) [ a >= 1 /\ c >= b /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (1, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d + 1, -1, f, g, h, i, j) [ c >= b /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (?, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] (?, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (1, 1) start0(a, b, c, d, e, f, g, h, i, j) -> start(a, b, c, b, f, f, c, i, i, a) start location: start0 leaf cost: 4 A polynomial rank function with Pol(start) = V_3 - V_4 Pol(lbl71) = V_3 - V_4 + 1 Pol(lbl81) = V_3 - V_4 + 1 Pol(start0) = -V_2 + V_3 orients all transitions weakly and the transitions lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] strictly and produces the following problem: 5: T: (1, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, d + 1, 1, f, g, h, i, j) [ a >= 1 /\ c >= b /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (1, 1) start(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d + 1, -1, f, g, h, i, j) [ c >= b /\ 0 >= a /\ d = b /\ e = f /\ g = c /\ h = i /\ j = a ] (b + c, 1) lbl71(a, b, c, d, e, f, g, h, i, j) -> lbl71(a, b, c, e + d, e, f, g, h, i, j) [ a >= 1 /\ c >= d /\ d >= b + 1 /\ c + 1 >= d /\ e = 1 /\ j = a /\ h = i /\ g = c ] (b + c, 1) lbl81(a, b, c, d, e, f, g, h, i, j) -> lbl81(a, b, c, d - e, e, f, g, h, i, j) [ c >= d /\ 0 >= a /\ d >= b + 1 /\ c + 1 >= d /\ e + 1 = 0 /\ j = a /\ h = i /\ g = c ] (1, 1) start0(a, b, c, d, e, f, g, h, i, j) -> start(a, b, c, b, f, f, c, i, i, a) start location: start0 leaf cost: 4 Complexity upper bound 2*b + 2*c + 7 Time: 0.561 sec (SMT: 0.530 sec)