MAYBE Initial complexity problem: 1: T: (1, 1) f300(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f1(v, w, x, y, z, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f1(a, b, c, d, e, f, g, 256, v, w, x, y, z, b1, c1, d1, q, r, s, t, u) [ a1 >= 1 /\ f + 1 = g /\ h = 256 ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f1(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, p, q, r, s, t, u) [ 0 >= h /\ f + 1 = g ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f1(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, d1, 256, r, s, t, u) [ a1 >= 1 /\ g >= f + 1 /\ g >= f + 2 /\ q = 256 ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f1(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, p, q, r, s, t, u) [ 0 >= q /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f2(a, b, c, d, e, f, g, h, v, w, k, l, m, n, o, p, q, 0, 0, 0, u) [ f >= g ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f3(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, d1, q, h, h, h, a1) [ h >= 1 /\ h >= 257 /\ f + 1 = g ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f3(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, d1, q, h, h, h, a1) [ h >= 1 /\ 255 >= h /\ f + 1 = g ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f3(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, d1, q, q, q, q, a1) [ q >= 1 /\ q >= 257 /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u) -> f3(a, b, c, d, e, f, g, h, v, w, x, y, z, b1, c1, d1, q, q, q, q, a1) [ q >= 1 /\ 255 >= q /\ g >= f + 1 /\ g >= f + 2 ] start location: f300 leaf cost: 0 Slicing away variables that do not contribute to conditions from problem 1 leaves variables [f, g, h, q]. We thus obtain the following problem: 2: T: (?, 1) f1(f, g, h, q) -> f3(f, g, h, q) [ q >= 1 /\ 255 >= q /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(f, g, h, q) -> f3(f, g, h, q) [ q >= 1 /\ q >= 257 /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(f, g, h, q) -> f3(f, g, h, q) [ h >= 1 /\ 255 >= h /\ f + 1 = g ] (?, 1) f1(f, g, h, q) -> f3(f, g, h, q) [ h >= 1 /\ h >= 257 /\ f + 1 = g ] (?, 1) f1(f, g, h, q) -> f2(f, g, h, q) [ f >= g ] (?, 1) f1(f, g, h, q) -> f1(f, g, h, q) [ 0 >= q /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(f, g, h, q) -> f1(f, g, h, 256) [ a1 >= 1 /\ g >= f + 1 /\ g >= f + 2 /\ q = 256 ] (?, 1) f1(f, g, h, q) -> f1(f, g, h, q) [ 0 >= h /\ f + 1 = g ] (?, 1) f1(f, g, h, q) -> f1(f, g, 256, q) [ a1 >= 1 /\ f + 1 = g /\ h = 256 ] (1, 1) f300(f, g, h, q) -> f1(f, g, h, q) start location: f300 leaf cost: 0 Repeatedly removing leaves of the complexity graph in problem 2 produces the following problem: 3: T: (?, 1) f1(f, g, h, q) -> f1(f, g, h, q) [ 0 >= q /\ g >= f + 1 /\ g >= f + 2 ] (?, 1) f1(f, g, h, q) -> f1(f, g, h, 256) [ a1 >= 1 /\ g >= f + 1 /\ g >= f + 2 /\ q = 256 ] (?, 1) f1(f, g, h, q) -> f1(f, g, h, q) [ 0 >= h /\ f + 1 = g ] (?, 1) f1(f, g, h, q) -> f1(f, g, 256, q) [ a1 >= 1 /\ f + 1 = g /\ h = 256 ] (1, 1) f300(f, g, h, q) -> f1(f, g, h, q) start location: f300 leaf cost: 5 Complexity upper bound ? Time: 0.329 sec (SMT: 0.306 sec)