| ⊦ bin-heap-inv(gch, lpt.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))) ↔ gch.size ≤ # gch.ar ∧ no-dups-idx(gch.ar, gch.size) ∧ valid-idx(gch.ar, lpt, gch.size) ∧ 2exp-size(# gch.ar) ∧ heap-order(gch.ar, gch.size) |
⊦ bin-heap-inv(gch, lpt.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))) ↔ gch.size ≤ # gch.ar ∧ no-dups-idx(gch.ar, gch.size) ∧ valid-idx(gch.ar, lpt, gch.size) ∧ 2exp-size(# gch.ar) ∧ heap-order(gch.ar, gch.size)