| kar[0] = key-index(key1, m), key-index(key, m) = kar[0], 2exp-size(# kar), no-dups-idx(kar, 1), valid-idx(kar, ar, 1), 1 ≤ # kar ⊦ # kar = 0, key1 < key, ∃ key0. key-index(key0, m) = kar[0] ∧ ∅ = (∅ ++ kar[0]) -- key-index(key0, m) ∧ ¬ key1 < key0 |
kar[0] = key-index(key1, m), 2exp-size(# kar), no-dups-idx(kar, 1), valid-idx(kar, ar, 1), 1 ≤ # kar ⊦ # kar = 0, ∃ key0. key-index(key0, m) = key-index(key1, m) ∧ ∅ = (∅ ++ key-index(key1, m)) -- key-index(key0, m) ∧ ¬ key1 < key0
Used simplifier rules: ⊦ ¬ key < key; (s)% ⊦ ¬ key < key0 → (key0 < key ↔ key0 ≠ key); (ss)%nen: ⊦ ¬ key < key0 ∧ key0 = key1 → ¬ key < key1; (forward) from specification oelem[binheap-key]% ⊦ key-index(key, m) = key-index(key0, m0) ↔ key = key0 ∧ m = m0; (ws)