MAYBE Initial complexity problem: 1: T: (?, 1) f2(a, b, c, d, e, f, g, h, i, j, k) -> f2(a, c, c, l, m, n, g, h, i, j, k) [ a >= 1 ] (1, 1) f300(a, b, c, d, e, f, g, h, i, j, k) -> f1(a, l, n, p, q, f, g, l, m, o, r) [ 0 >= g ] (1, 1) f300(a, b, c, d, e, f, g, h, i, j, k) -> f2(a, n, n, p, q, r, g, l, m, o, k) [ a >= 1 /\ g >= 1 ] (1, 1) f300(a, b, c, d, e, f, g, h, i, j, k) -> f1(a, n, n, p, q, r, g, l, m, o, s) [ 0 >= a /\ g >= 1 ] start location: f300 leaf cost: 0 Slicing away variables that do not contribute to conditions from problem 1 leaves variables [a, g]. We thus obtain the following problem: 2: T: (1, 1) f300(a, g) -> f1(a, g) [ 0 >= a /\ g >= 1 ] (1, 1) f300(a, g) -> f2(a, g) [ a >= 1 /\ g >= 1 ] (1, 1) f300(a, g) -> f1(a, g) [ 0 >= g ] (?, 1) f2(a, g) -> f2(a, g) [ a >= 1 ] start location: f300 leaf cost: 0 Applied AI with 'oct' on problem 2 to obtain the following invariants: For symbol f2: X_2 - 1 >= 0 /\ X_1 + X_2 - 2 >= 0 /\ X_1 - 1 >= 0 This yielded the following problem: 3: T: (?, 1) f2(a, g) -> f2(a, g) [ g - 1 >= 0 /\ a + g - 2 >= 0 /\ a - 1 >= 0 /\ a >= 1 ] (1, 1) f300(a, g) -> f1(a, g) [ 0 >= g ] (1, 1) f300(a, g) -> f2(a, g) [ a >= 1 /\ g >= 1 ] (1, 1) f300(a, g) -> f1(a, g) [ 0 >= a /\ g >= 1 ] start location: f300 leaf cost: 0 By chaining the transition f300(a, g) -> f2(a, g) [ a >= 1 /\ g >= 1 ] with all transitions in problem 3, the following new transition is obtained: f300(a, g) -> f2(a, g) [ a >= 1 /\ g >= 1 /\ g - 1 >= 0 /\ a + g - 2 >= 0 /\ a - 1 >= 0 ] We thus obtain the following problem: 4: T: (1, 2) f300(a, g) -> f2(a, g) [ a >= 1 /\ g >= 1 /\ g - 1 >= 0 /\ a + g - 2 >= 0 /\ a - 1 >= 0 ] (?, 1) f2(a, g) -> f2(a, g) [ g - 1 >= 0 /\ a + g - 2 >= 0 /\ a - 1 >= 0 /\ a >= 1 ] (1, 1) f300(a, g) -> f1(a, g) [ 0 >= g ] (1, 1) f300(a, g) -> f1(a, g) [ 0 >= a /\ g >= 1 ] start location: f300 leaf cost: 0 Complexity upper bound ? Time: 0.171 sec (SMT: 0.157 sec)