YES(?, 15) Initial complexity problem: 1: T: (1, 1) evalndloopstart(a) -> evalndloopentryin(a) (?, 1) evalndloopentryin(a) -> evalndloopbbin(0) (?, 1) evalndloopbbin(a) -> evalndloopbbin(b) [ a + 2 >= b /\ b >= a + 1 /\ 9 >= b ] (?, 1) evalndloopbbin(a) -> evalndloopreturnin(a) [ b >= a + 3 ] (?, 1) evalndloopbbin(a) -> evalndloopreturnin(a) [ a >= b ] (?, 1) evalndloopbbin(a) -> evalndloopreturnin(a) [ b >= 10 ] (?, 1) evalndloopreturnin(a) -> evalndloopstop(a) start location: evalndloopstart leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (1, 1) evalndloopstart(a) -> evalndloopentryin(a) (?, 1) evalndloopentryin(a) -> evalndloopbbin(0) (?, 1) evalndloopbbin(a) -> evalndloopbbin(b) [ a + 2 >= b /\ b >= a + 1 /\ 9 >= b ] start location: evalndloopstart leaf cost: 4 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) evalndloopstart(a) -> evalndloopentryin(a) (1, 1) evalndloopentryin(a) -> evalndloopbbin(0) (?, 1) evalndloopbbin(a) -> evalndloopbbin(b) [ a + 2 >= b /\ b >= a + 1 /\ 9 >= b ] start location: evalndloopstart leaf cost: 4 A polynomial rank function with Pol(evalndloopstart) = 9 Pol(evalndloopentryin) = 9 Pol(evalndloopbbin) = -V_1 + 9 orients all transitions weakly and the transition evalndloopbbin(a) -> evalndloopbbin(b) [ a + 2 >= b /\ b >= a + 1 /\ 9 >= b ] strictly and produces the following problem: 4: T: (1, 1) evalndloopstart(a) -> evalndloopentryin(a) (1, 1) evalndloopentryin(a) -> evalndloopbbin(0) (9, 1) evalndloopbbin(a) -> evalndloopbbin(b) [ a + 2 >= b /\ b >= a + 1 /\ 9 >= b ] start location: evalndloopstart leaf cost: 4 Complexity upper bound 15 Time: 0.071 sec (SMT: 0.068 sec)