YES(?, 32*b^2 + 32*a*b + 10*b + 6) Initial complexity problem: 1: T: (1, 1) evalfstart(a, b) -> evalfentryin(a, b) (?, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (?, 1) evalfbb3in(a, b) -> evalfreturnin(a, b) [ 0 >= a ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ a >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfreturnin(a, b) (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b >= a + 1 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ a >= b ] (?, 1) evalfbb1in(a, b) -> evalfbb3in(a + 1, b) (?, 1) evalfbb2in(a, b) -> evalfbb3in(a - b, b) (?, 1) evalfreturnin(a, b) -> evalfstop(a, b) start location: evalfstart leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (1, 1) evalfstart(a, b) -> evalfentryin(a, b) (?, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ a >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ c >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b >= a + 1 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ a >= b ] (?, 1) evalfbb1in(a, b) -> evalfbb3in(a + 1, b) (?, 1) evalfbb2in(a, b) -> evalfbb3in(a - b, b) start location: evalfstart leaf cost: 3 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) evalfstart(a, b) -> evalfentryin(a, b) (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ a >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ c >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b >= a + 1 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ a >= b ] (?, 1) evalfbb1in(a, b) -> evalfbb3in(a + 1, b) (?, 1) evalfbb2in(a, b) -> evalfbb3in(a - b, b) start location: evalfstart leaf cost: 3 Applied AI with 'oct' on problem 3 to obtain the following invariants: For symbol evalfbb1in: X_2 - 2 >= 0 /\ X_1 + X_2 - 3 >= 0 /\ -X_1 + X_2 - 1 >= 0 /\ X_1 - 1 >= 0 For symbol evalfbb2in: X_1 - X_2 >= 0 /\ X_2 - 1 >= 0 /\ X_1 + X_2 - 2 >= 0 /\ X_1 - 1 >= 0 For symbol evalfbb3in: X_2 - 1 >= 0 For symbol evalfbb4in: X_2 - 1 >= 0 /\ X_1 + X_2 - 2 >= 0 /\ X_1 - 1 >= 0 For symbol evalfbbin: X_2 - 1 >= 0 /\ X_1 + X_2 - 2 >= 0 /\ X_1 - 1 >= 0 This yielded the following problem: 4: T: (?, 1) evalfbb2in(a, b) -> evalfbb3in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 ] (?, 1) evalfbb1in(a, b) -> evalfbb3in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfbb2in(a, b) -> evalfbb3in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 ] with all transitions in problem 4, the following new transition is obtained: evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] We thus obtain the following problem: 5: T: (?, 2) evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] (?, 1) evalfbb1in(a, b) -> evalfbb3in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfbb1in(a, b) -> evalfbb3in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 ] with all transitions in problem 5, the following new transition is obtained: evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] We thus obtain the following problem: 6: T: (?, 2) evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] (?, 2) evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 Repeatedly propagating knowledge in problem 6 produces the following problem: 7: T: (?, 2) evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] (?, 2) evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb2in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfbbin(a, b) -> evalfbb2in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b ] with all transitions in problem 7, the following new transition is obtained: evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] We thus obtain the following problem: 8: T: (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 2) evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] (?, 2) evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 Testing for reachability in the complexity graph removes the following transition from problem 8: evalfbb2in(a, b) -> evalfbb4in(a - b, b) [ a - b >= 0 /\ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a - b >= 1 ] We thus obtain the following problem: 9: T: (?, 2) evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfbbin(a, b) -> evalfbb1in(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 ] with all transitions in problem 9, the following new transition is obtained: evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] We thus obtain the following problem: 10: T: (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 2) evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 Testing for reachability in the complexity graph removes the following transition from problem 10: evalfbb1in(a, b) -> evalfbb4in(a + 1, b) [ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a - 1 >= 0 /\ b - 1 >= 0 /\ a + 1 >= 1 ] We thus obtain the following problem: 11: T: (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfentryin(a, b) -> evalfbb3in(b, a) [ a >= 1 /\ b >= a + 1 ] with all transitions in problem 11, the following new transition is obtained: evalfentryin(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] We thus obtain the following problem: 12: T: (1, 2) evalfentryin(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 1) evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 Testing for reachability in the complexity graph removes the following transition from problem 12: evalfbb3in(a, b) -> evalfbb4in(a, b) [ b - 1 >= 0 /\ a >= 1 ] We thus obtain the following problem: 13: T: (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 2) evalfentryin(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] (1, 1) evalfstart(a, b) -> evalfentryin(a, b) start location: evalfstart leaf cost: 3 By chaining the transition evalfstart(a, b) -> evalfentryin(a, b) with all transitions in problem 13, the following new transition is obtained: evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] We thus obtain the following problem: 14: T: (1, 3) evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 2) evalfentryin(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] start location: evalfstart leaf cost: 3 Testing for reachability in the complexity graph removes the following transition from problem 14: evalfentryin(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] We thus obtain the following problem: 15: T: (?, 3) evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 3) evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] start location: evalfstart leaf cost: 3 By chaining the transition evalfbbin(a, b) -> evalfbb4in(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 ] with all transitions in problem 15, the following new transitions are obtained: evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] We thus obtain the following problem: 16: T: (?, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] (?, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] (?, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (?, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 3) evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] start location: evalfstart leaf cost: 3 A polynomial rank function with Pol(evalfbb4in) = 2*V_1 Pol(evalfbbin) = 2*V_1 - 1 and size complexities S("evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\\ b >= a + 1 /\\ a - 1 >= 0 /\\ b >= 1 ]", 0-0) = b S("evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\\ b >= a + 1 /\\ a - 1 >= 0 /\\ b >= 1 ]", 0-1) = a S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ c >= 1 ]", 0-0) = b S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ c >= 1 ]", 0-1) = a S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ 0 >= c + 1 ]", 0-0) = b S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ 0 >= c + 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ a >= b /\\ a - b >= 0 /\\ a - b >= 1 ]", 0-0) = b S("evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ a >= b /\\ a - b >= 0 /\\ a - b >= 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ c >= 1 ]", 0-0) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ c >= 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ 0 >= c + 1 ]", 0-0) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ 0 >= c + 1 ]", 0-1) = a orients the transitions evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] weakly and the transitions evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] strictly and produces the following problem: 17: T: (?, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] (?, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] (2*b, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (2*b, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (2*b, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 3) evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] start location: evalfstart leaf cost: 3 A polynomial rank function with Pol(evalfbbin) = -V_1 + V_2 and size complexities S("evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\\ b >= a + 1 /\\ a - 1 >= 0 /\\ b >= 1 ]", 0-0) = b S("evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\\ b >= a + 1 /\\ a - 1 >= 0 /\\ b >= 1 ]", 0-1) = a S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ c >= 1 ]", 0-0) = b S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ c >= 1 ]", 0-1) = a S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ 0 >= c + 1 ]", 0-0) = b S("evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ 0 >= c + 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ a >= b /\\ a - b >= 0 /\\ a - b >= 1 ]", 0-0) = b S("evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ a >= b /\\ a - b >= 0 /\\ a - b >= 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ c >= 1 ]", 0-0) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ c >= 1 ]", 0-1) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ 0 >= c + 1 ]", 0-0) = a S("evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\\ a + b - 2 >= 0 /\\ a - 1 >= 0 /\\ b >= a + 1 /\\ b - 2 >= 0 /\\ a + b - 3 >= 0 /\\ -a + b - 1 >= 0 /\\ a + 1 >= 1 /\\ a + b - 1 >= 0 /\\ a >= 0 /\\ 0 >= c + 1 ]", 0-1) = a orients the transitions evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] weakly and the transitions evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] strictly and produces the following problem: 18: T: (4*b^2 + 4*a*b, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ 0 >= c + 1 ] (4*b^2 + 4*a*b, 4) evalfbbin(a, b) -> evalfbbin(a + 1, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ b >= a + 1 /\ b - 2 >= 0 /\ a + b - 3 >= 0 /\ -a + b - 1 >= 0 /\ a + 1 >= 1 /\ a + b - 1 >= 0 /\ a >= 0 /\ c >= 1 ] (2*b, 3) evalfbbin(a, b) -> evalfbb4in(a - b, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ a >= b /\ a - b >= 0 /\ a - b >= 1 ] (2*b, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ 0 >= c + 1 ] (2*b, 1) evalfbb4in(a, b) -> evalfbbin(a, b) [ b - 1 >= 0 /\ a + b - 2 >= 0 /\ a - 1 >= 0 /\ c >= 1 ] (1, 3) evalfstart(a, b) -> evalfbb4in(b, a) [ a >= 1 /\ b >= a + 1 /\ a - 1 >= 0 /\ b >= 1 ] start location: evalfstart leaf cost: 3 Complexity upper bound 32*b^2 + 32*a*b + 10*b + 6 Time: 1.260 sec (SMT: 1.177 sec)