| bin-heap-inv(bh, ar), keyset(bh) ≠ ∅, ar0 = ar, bh0 = bh ⊦ ⟪bin_min_heap_extract_min#(; bh, ar, n)⟫ ( bin-heap-inv(bh, ar) ∧ id-idx(ar0, ar) ∧ (∃ key. key-index(key, n) ∈ keyset(bh0) ∧ keyset(bh) = keyset(bh0) -- key-index(key, n) ∧ (∀ ki. ki ∈ keyset(bh0) → ¬ ki.key < key))) |
ar0 = ar, bh0 = bh, bin-heap-inv(bh, ar) ⊦ ⟪bin_min_heap_extract_min#(; bh, ar, n)⟫ ( bin-heap-inv(bh, ar) ∧ id-idx(ar0, ar) ∧ (∃ key. key-index(key, n) ∈ keyset(bh0) ∧ keyset(bh) = keyset(bh0) -- key-index(key, n) ∧ (∀ ki. ki ∈ keyset(bh0) → ¬ ki.key < key))), keyset(bh) = ∅