YES(?, 4*a + 4*c + 18) Initial complexity problem: 1: T: (?, 1) start(a, b, c, d) -> stop(a, b, c, d) [ 0 >= a /\ b = c /\ d = a ] (?, 1) start(a, b, c, d) -> lbl6(a, b, c, d) [ a >= 1 /\ 0 >= c /\ b = c /\ d = a ] (?, 1) start(a, b, c, d) -> cut(a, b, c, d) [ a >= 1 /\ d = a /\ b = a /\ c = a ] (?, 1) start(a, b, c, d) -> lbl101(a, b - d, c, d) [ a >= 1 /\ c >= a + 1 /\ b = c /\ d = a ] (?, 1) start(a, b, c, d) -> lbl111(a, b, c, d - b) [ a >= c + 1 /\ c >= 1 /\ b = c /\ d = a ] (?, 1) lbl6(a, b, c, d) -> stop(a, b, c, d) [ a >= 1 /\ 0 >= c /\ d = a /\ b = c ] (?, 1) lbl101(a, b, c, d) -> cut(a, b, c, d) [ a >= b /\ b >= 1 /\ c >= 2*b /\ d = b ] (?, 1) lbl101(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl101(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl111(a, b, c, d) -> cut(a, b, c, d) [ c >= b /\ b >= 1 /\ a >= 2*b /\ d = b ] (?, 1) lbl111(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (?, 1) lbl111(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (?, 1) cut(a, b, c, d) -> stop(a, b, c, d) [ a >= b /\ b >= 1 /\ c >= b /\ d = b ] (1, 1) start0(a, b, c, d) -> start(a, c, c, a) start location: start0 leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (?, 1) start(a, b, c, d) -> lbl101(a, b - d, c, d) [ a >= 1 /\ c >= a + 1 /\ b = c /\ d = a ] (?, 1) start(a, b, c, d) -> lbl111(a, b, c, d - b) [ a >= c + 1 /\ c >= 1 /\ b = c /\ d = a ] (?, 1) lbl101(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl101(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl111(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (?, 1) lbl111(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (1, 1) start0(a, b, c, d) -> start(a, c, c, a) start location: start0 leaf cost: 7 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) start(a, b, c, d) -> lbl101(a, b - d, c, d) [ a >= 1 /\ c >= a + 1 /\ b = c /\ d = a ] (1, 1) start(a, b, c, d) -> lbl111(a, b, c, d - b) [ a >= c + 1 /\ c >= 1 /\ b = c /\ d = a ] (?, 1) lbl101(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl101(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (?, 1) lbl111(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (?, 1) lbl111(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (1, 1) start0(a, b, c, d) -> start(a, c, c, a) start location: start0 leaf cost: 7 A polynomial rank function with Pol(start) = V_2 + V_4 - 2 Pol(lbl101) = V_2 + 2*V_4 - 2 Pol(lbl111) = 2*V_2 + V_4 - 2 Pol(start0) = V_1 + V_3 - 2 orients all transitions weakly and the transitions lbl111(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] lbl111(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] lbl101(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] lbl101(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] strictly and produces the following problem: 4: T: (1, 1) start(a, b, c, d) -> lbl101(a, b - d, c, d) [ a >= 1 /\ c >= a + 1 /\ b = c /\ d = a ] (1, 1) start(a, b, c, d) -> lbl111(a, b, c, d - b) [ a >= c + 1 /\ c >= 1 /\ b = c /\ d = a ] (a + c + 2, 1) lbl101(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (a + c + 2, 1) lbl101(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ a >= d /\ b >= 1 /\ d >= 1 /\ c >= d + b ] (a + c + 2, 1) lbl111(a, b, c, d) -> lbl101(a, b - d, c, d) [ b >= d + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (a + c + 2, 1) lbl111(a, b, c, d) -> lbl111(a, b, c, d - b) [ d >= b + 1 /\ c >= b /\ b >= 1 /\ d >= 1 /\ a >= d + b ] (1, 1) start0(a, b, c, d) -> start(a, c, c, a) start location: start0 leaf cost: 7 Complexity upper bound 4*a + 4*c + 18 Time: 0.448 sec (SMT: 0.427 sec)