YES(?, 18*a + 34*b + 16*c + 22) Initial complexity problem: 1: T: (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) (?, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (?, 1) evalDis2bb3in(a, b, c) -> evalDis2returnin(a, b, c) [ c >= a ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ b >= c + 1 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ c >= b ] (?, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) (?, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) (?, 1) evalDis2returnin(a, b, c) -> evalDis2stop(a, b, c) start location: evalDis2start leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) (?, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ b >= c + 1 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ c >= b ] (?, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) (?, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) start location: evalDis2start leaf cost: 2 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) (1, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ b >= c + 1 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ c >= b ] (?, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) (?, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) start location: evalDis2start leaf cost: 2 Applied AI with 'oct' on problem 3 to obtain the following invariants: For symbol evalDis2bb1in: X_2 - X_3 - 1 >= 0 /\ X_1 - X_3 - 1 >= 0 For symbol evalDis2bb2in: X_1 - X_3 - 1 >= 0 /\ -X_2 + X_3 >= 0 /\ X_1 - X_2 - 1 >= 0 For symbol evalDis2bbin: X_1 - X_3 - 1 >= 0 This yielded the following problem: 4: T: (?, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) [ a - c - 1 >= 0 /\ -b + c >= 0 /\ a - b - 1 >= 0 ] (?, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) [ b - c - 1 >= 0 /\ a - c - 1 >= 0 ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ a - c - 1 >= 0 /\ c >= b ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ a - c - 1 >= 0 /\ b >= c + 1 ] (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (1, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) start location: evalDis2start leaf cost: 2 A polynomial rank function with Pol(evalDis2bb2in) = 7*V_1 - 4*V_2 - 3*V_3 - 6 Pol(evalDis2bb3in) = 7*V_1 - 4*V_2 - 3*V_3 - 4 Pol(evalDis2bb1in) = 7*V_1 - 4*V_2 - 3*V_3 - 6 Pol(evalDis2bbin) = 7*V_1 - 4*V_2 - 3*V_3 - 5 Pol(evalDis2entryin) = -3*V_1 + 7*V_2 - 4*V_3 - 4 Pol(evalDis2start) = -3*V_1 + 7*V_2 - 4*V_3 - 4 orients all transitions weakly and the transitions evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ a - c - 1 >= 0 /\ c >= b ] evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) [ a - c - 1 >= 0 /\ -b + c >= 0 /\ a - b - 1 >= 0 ] strictly and produces the following problem: 5: T: (3*a + 7*b + 4*c + 4, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) [ a - c - 1 >= 0 /\ -b + c >= 0 /\ a - b - 1 >= 0 ] (?, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) [ b - c - 1 >= 0 /\ a - c - 1 >= 0 ] (3*a + 7*b + 4*c + 4, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ a - c - 1 >= 0 /\ c >= b ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ a - c - 1 >= 0 /\ b >= c + 1 ] (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (1, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) start location: evalDis2start leaf cost: 2 A polynomial rank function with Pol(evalDis2bb2in) = 2*V_1 - 2*V_3 Pol(evalDis2bb3in) = 2*V_1 - 2*V_3 Pol(evalDis2bb1in) = 2*V_1 - 2*V_3 - 1 Pol(evalDis2bbin) = 2*V_1 - 2*V_3 Pol(evalDis2entryin) = -2*V_1 + 2*V_2 Pol(evalDis2start) = -2*V_1 + 2*V_2 orients all transitions weakly and the transition evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) [ b - c - 1 >= 0 /\ a - c - 1 >= 0 ] strictly and produces the following problem: 6: T: (3*a + 7*b + 4*c + 4, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) [ a - c - 1 >= 0 /\ -b + c >= 0 /\ a - b - 1 >= 0 ] (2*a + 2*b, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) [ b - c - 1 >= 0 /\ a - c - 1 >= 0 ] (3*a + 7*b + 4*c + 4, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ a - c - 1 >= 0 /\ c >= b ] (?, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ a - c - 1 >= 0 /\ b >= c + 1 ] (?, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (1, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) start location: evalDis2start leaf cost: 2 Repeatedly propagating knowledge in problem 6 produces the following problem: 7: T: (3*a + 7*b + 4*c + 4, 1) evalDis2bb2in(a, b, c) -> evalDis2bb3in(a, b + 1, c) [ a - c - 1 >= 0 /\ -b + c >= 0 /\ a - b - 1 >= 0 ] (2*a + 2*b, 1) evalDis2bb1in(a, b, c) -> evalDis2bb3in(a, b, c + 1) [ b - c - 1 >= 0 /\ a - c - 1 >= 0 ] (3*a + 7*b + 4*c + 4, 1) evalDis2bbin(a, b, c) -> evalDis2bb2in(a, b, c) [ a - c - 1 >= 0 /\ c >= b ] (5*a + 9*b + 4*c + 5, 1) evalDis2bbin(a, b, c) -> evalDis2bb1in(a, b, c) [ a - c - 1 >= 0 /\ b >= c + 1 ] (5*a + 9*b + 4*c + 5, 1) evalDis2bb3in(a, b, c) -> evalDis2bbin(a, b, c) [ a >= c + 1 ] (1, 1) evalDis2entryin(a, b, c) -> evalDis2bb3in(b, c, a) (1, 1) evalDis2start(a, b, c) -> evalDis2entryin(a, b, c) start location: evalDis2start leaf cost: 2 Complexity upper bound 18*a + 34*b + 16*c + 22 Time: 0.357 sec (SMT: 0.337 sec)