| lpt[m2] = mklp(m, m0, lpf, m1), keyset(gch0) = gc-heap(lpt1, nx), m2 < # lpt, bin-heap-inv(gch0, lpt1), bin-heap-inv(bin-heap(kar, m3), lpt), id-idx(lpt1, lpt), key-index(natkey, m2) ∈ gc-heap(lpt1, m2 ' + nx0), key-index(natkey, m2) ∈ keyset(bin-heap(kar, m3)), ∀ n. n ∈ nx → n < # lpt1 ∧ lpt1[n].flags = LP_GROUP_NODES, ∀ n. n = m2 ∨ n ∈ nx0 → n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ⊦ # gc-heap(lpt1, m2 ' + nx0) = 0, gc-heap(lpt1, m2 ' + nx0) = ∅, m3 = 0, dups(nx), dups(nx0), m2 ∈ nx0 |
⊦ key-index(n0, n1) ∈ gc-heap(lpt, nx) ↔ n1 < # lpt ∧ ¬ n1 ∈ nx ∧ lpt[n1].ref-size = n0 ∧ lpt[n1].flags = LP_GROUP_NODES
Used simplifier rules: ⊦ ¬ n ∈ nx → (n ∈ n0 ' + nx ↔ n = n0); (s)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set] Used terms: m2 ' + nx0, lpt1, m2, natkey