YES(?, b + c + 3) Initial complexity problem: 1: T: (1, 1) f3(a, b, c, d) -> f1(0, b, c, d) (?, 1) f1(a, b, c, d) -> f2(a, b, c, e) [ b >= c ] (?, 1) f1(a, b, c, d) -> f2(1, b + 1, c, e) [ b + 1 = c /\ a = 0 ] (?, 1) f1(a, b, c, d) -> f1(0, b + 1, c - 1, d) [ c >= b + 2 /\ c >= b + 1 /\ a = 0 ] start location: f3 leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (1, 1) f3(a, b, c, d) -> f1(0, b, c, d) (?, 1) f1(a, b, c, d) -> f1(0, b + 1, c - 1, d) [ c >= b + 2 /\ c >= b + 1 /\ a = 0 ] start location: f3 leaf cost: 2 A polynomial rank function with Pol(f3) = -V_2 + V_3 Pol(f1) = -V_2 + V_3 orients all transitions weakly and the transition f1(a, b, c, d) -> f1(0, b + 1, c - 1, d) [ c >= b + 2 /\ c >= b + 1 /\ a = 0 ] strictly and produces the following problem: 3: T: (1, 1) f3(a, b, c, d) -> f1(0, b, c, d) (b + c, 1) f1(a, b, c, d) -> f1(0, b + 1, c - 1, d) [ c >= b + 2 /\ c >= b + 1 /\ a = 0 ] start location: f3 leaf cost: 2 Complexity upper bound b + c + 3 Time: 0.097 sec (SMT: 0.090 sec)