| kar[m1] = key-index(key, m), ar[m] = elemindex(a, m1), 2exp-size(# kar), m1 < m0, m1 < # kar, heap-order(kar, m0), no-dups-idx(kar, m0), valid-idx(kar, ar, m0), key-index(key, m) ∈ keyset(kar, m0), m0 ≤ # kar + 1, 1 ≤ m0, m0 ≤ # kar, 1 ≤ # kar ⊦ # keyset(kar, m0) = 0, keyset(kar, m0) = ∅, keyset(kar, m0 - 1) = keyset(kar, m0) -- key-index(key, m) ∧ heap-order(kar, m0 - 1) ∧ valid-idx(kar, ar, m0 - 1) ∧ no-dups-idx(kar, m0 - 1), m0 ≠ 1 ∧ m0 - 1 ≠ m1 |
ar[m] = elemindex(a, m1), kar[m1] = key-index(key, m), m0 = m2 + 1, 2exp-size(# kar), m1 < # kar, m1 < m0, heap-order(kar, m0), no-dups-idx(kar, m0), valid-idx(kar, ar, m0), key-index(key, m) ∈ keyset(kar, m0), 1 ≤ # kar, m0 ≤ # kar, 1 ≤ m0, m0 ≤ # kar + 1 ⊦ # keyset(kar, m0) = 0, keyset(kar, m0) = ∅, m0 = 0, m0 ≠ 1 ∧ m2 ≠ m1, keyset(kar, m2) = keyset(kar, m0) -- key-index(key, m) ∧ heap-order(kar, m2) ∧ valid-idx(kar, ar, m2) ∧ no-dups-idx(kar, m2)
Used simplifier rules: ⊦ keyset(kar, 0) = ∅; (s)%n ≠ 0 ⊦ m = n - 1 ↔ n = m + 1; (elim) Used terms: m0, m2