| less#(a, x0) + violations(x0) = m + 1, x0.head < a, ∀ m0, n0. violations(x0) = m0 + 1 ∧ x0[n0 + 1] < x0[n0] ∧ n0 + 1 < # x0 → violations(x0[n0, x0[n0 + 1]][n0 + 1, x0[n0]]) = m0 ⊦ violations((x0.head ' + x0)[1, a]) = m, x0 = [] |
less#(a, x0) + violations(x0) = m + 1, x0 = a0 + y, a0 < a, ∀ m0, n0. violations(x0) = m0 + 1 ∧ x0[n0 + 1] < x0[n0] ∧ n0 + 1 < # x0 → violations(x0[n0, x0[n0 + 1]][n0 + 1, x0[n0]]) = m0 ⊦ violations((a0 ' + x0)[1, a]) = m, x0 = []
Used simplifier rules: x ≠ [] ⊦ a = x.head ∧ y = x.tail ↔ x = a + y; (elim) Used terms: x0, a0, y