YES(?, 19*b + 12*b^2 + 9) Initial complexity problem: 1: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (?, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (?, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb4in(a, b, c) -> evalwhile2returnin(a, b, c) [ 0 >= a ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (?, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) (?, 1) evalwhile2returnin(a, b, c) -> evalwhile2stop(a, b, c) start location: evalwhile2start leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 1 produces the following problem: 2: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (?, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (?, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (?, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 Repeatedly propagating knowledge in problem 2 produces the following problem: 3: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (?, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (?, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 A polynomial rank function with Pol(evalwhile2start) = 3*V_2 + 1 Pol(evalwhile2entryin) = 3*V_2 + 1 Pol(evalwhile2bb4in) = 3*V_1 + 1 Pol(evalwhile2bb2in) = 3*V_1 Pol(evalwhile2bb1in) = 3*V_1 Pol(evalwhile2bb3in) = 3*V_1 - 1 orients all transitions weakly and the transition evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] strictly and produces the following problem: 4: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (3*b + 1, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (?, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 A polynomial rank function with Pol(evalwhile2bb3in) = 0 Pol(evalwhile2bb4in) = -1 Pol(evalwhile2bb2in) = 1 Pol(evalwhile2bb1in) = 1 and size complexities S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-0) = ? S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-1) = b S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-2) = ? S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-0) = ? S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-1) = b S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-2) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-0) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-1) = b S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-2) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-0) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-1) = b S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-2) = ? S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-0) = ? S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-1) = b S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-2) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-0) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-1) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-2) = c S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-0) = a S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-1) = b S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-2) = c orients the transitions evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) weakly and the transition evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] strictly and produces the following problem: 5: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (3*b + 1, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (3*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (?, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 Repeatedly propagating knowledge in problem 5 produces the following problem: 6: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (3*b + 1, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (?, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (3*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (3*b + 1, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 A polynomial rank function with Pol(evalwhile2bb2in) = 2*V_3 + 1 Pol(evalwhile2bb1in) = 2*V_3 and size complexities S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-0) = 4*b + 16 S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-1) = b S("evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c)", 0-2) = ? S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-0) = 4*b + 16 S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-1) = b S("evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1)", 0-2) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-0) = 4*b + 16 S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-1) = b S("evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ]", 0-2) = ? S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-0) = 4*b + 16 S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-1) = b S("evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ]", 0-2) = ? S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-0) = 4*b + 16 S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-1) = b S("evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ]", 0-2) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-0) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-1) = b S("evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c)", 0-2) = c S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-0) = a S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-1) = b S("evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c)", 0-2) = c orients the transitions evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) weakly and the transition evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] strictly and produces the following problem: 7: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (3*b + 1, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (6*b^2 + 5*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (3*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (?, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (3*b + 1, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 Repeatedly propagating knowledge in problem 7 produces the following problem: 8: T: (1, 1) evalwhile2start(a, b, c) -> evalwhile2entryin(a, b, c) (1, 1) evalwhile2entryin(a, b, c) -> evalwhile2bb4in(b, b, c) (3*b + 1, 1) evalwhile2bb4in(a, b, c) -> evalwhile2bb2in(a, b, b) [ a >= 1 ] (6*b^2 + 5*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb1in(a, b, c) [ c >= 1 ] (3*b + 1, 1) evalwhile2bb2in(a, b, c) -> evalwhile2bb3in(a, b, c) [ 0 >= c ] (6*b^2 + 5*b + 1, 1) evalwhile2bb1in(a, b, c) -> evalwhile2bb2in(a, b, c - 1) (3*b + 1, 1) evalwhile2bb3in(a, b, c) -> evalwhile2bb4in(a - 1, b, c) start location: evalwhile2start leaf cost: 2 Complexity upper bound 19*b + 12*b^2 + 9 Time: 0.180 sec (SMT: 0.169 sec)