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