| kar[1 + m1] = key-index(key, m0), mkkeyarray(n0)[m1 / 2] = key-index(key0, m2), 2exp-size(n0), 2exp-size(# kar), m1 / 2 < n0, m1 + 1 < n0, 2 + m1 < minsize, 2 + m1 < n0, key < key0, m1 + 1 < m, m < minsize, m < n0, m1 + 1 < minsize, m1 + 1 < # kar, heap-order(kar, m), no-dups-idx(kar, m), valid-idx(kar, ar, m), minsize ≤ n0, m ≤ # kar, m * 2 ≤ m1 ⊦ |
⊦ m ≤ n ↔ (∃ n0. m + n0 = n)
Used simplifier rules: ⊦ (2 * m + n) / 2 = m + n / 2; (s)%mult-a: ⊦ m0 * m * n = (m0 * m) * n; from specification nat-mult%mult-c: ⊦ m * n = n * m; from specification nat-mult%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic% ⊦ m * n + n0 < n ↔ m = 0 ∧ n0 < n; (ws) Used terms: m1, m * 2