| 2exp-size(# kar), heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar ⊦ m ≤ # kar ∧ (∀ m0. m0 < m → kar[m0].idx < # lpt.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp)) ∧ lpt.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))[kar[m0].idx].gcheapidx = m0) ↔ valid-idx(kar, lpt, m) |
2exp-size(# kar), heap-order(kar, m), no-dups-idx(kar, m), m ≤ # kar ⊦ (∀ m0. m0 < m → kar[m0].idx < # lpt ∧ lpt.map(λ lp. (lp.ref-size = 0 ∧ lp.flags ≠ LP_FREE ⊃ mklp(0, 0, LP_FREE, lp.gcheapidx);lp))[kar[m0].idx].gcheapidx = m0) ↔ valid-idx(kar, lpt, m)
Used simplifier rules: ⊦ # lpt.map(lptfun) = # lpt; (s)