YES(?, 2*a + 7) 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) -> lbl101(a, 2, c, d, 1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (?, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, -1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (?, 1) lbl101(a, b, c, d, e, f) -> stop(a, b, c, d, e, f) [ e + a >= 0 /\ a >= 1 /\ a >= e /\ b = a + 1 /\ d = a ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e + 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e - 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (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 1 produces the following problem: 2: T: (?, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, 1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (?, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, -1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e + 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e - 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (1, 1) start0(a, b, c, d, e, f) -> start(a, c, c, a, f, f) start location: start0 leaf cost: 2 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, 1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (1, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, -1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e + 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (?, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e - 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (1, 1) start0(a, b, c, d, e, f) -> start(a, c, c, a, f, f) start location: start0 leaf cost: 2 A polynomial rank function with Pol(start) = V_1 - 1 Pol(lbl101) = V_1 - V_2 + 1 Pol(start0) = V_1 - 1 orients all transitions weakly and the transitions lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e + 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e - 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] strictly and produces the following problem: 4: T: (1, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, 1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (1, 1) start(a, b, c, d, e, f) -> lbl101(a, 2, c, d, -1, f) [ a >= 1 /\ b = c /\ d = a /\ e = f ] (a + 1, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e + 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (a + 1, 1) lbl101(a, b, c, d, e, f) -> lbl101(a, b + 1, c, d, e - 1, f) [ a >= b /\ e + b >= 1 /\ a + 1 >= b /\ b >= 2 /\ b >= e + 1 /\ d = a ] (1, 1) start0(a, b, c, d, e, f) -> start(a, c, c, a, f, f) start location: start0 leaf cost: 2 Complexity upper bound 2*a + 7 Time: 0.292 sec (SMT: 0.275 sec)