| lpt[m2] = mklp(m, m0, lpf, m1), gch = bin-heap(kar, m3), keyset(gch0) = gc-heap(lpt1, nx), keyset(gch) = gc-heap(lpt1, m2 ' + nx0), m2 < # lpt, bin-heap-inv(gch0, lpt1), bin-heap-inv(gch, lpt), id-idx(lpt1, lpt), key-index(natkey, m2) ∈ keyset(gch), ∀ n. n ∈ nx → n < # lpt1 ∧ lpt1[n].flags = LP_GROUP_NODES, ∀ n. n = m2 ∨ n ∈ nx0 → n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ⊦ m3 = 0, dups(nx), dups(nx0), m2 ∈ nx0 |
lpt[m2] = mklp(m, m0, lpf, m1), keyset(gch0) = gc-heap(lpt1, nx), keyset(bin-heap(kar, m3)) = gc-heap(lpt1, m2 ' + nx0), m2 < # lpt, bin-heap-inv(gch0, lpt1), bin-heap-inv(bin-heap(kar, m3), lpt), id-idx(lpt1, lpt), 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 ⊦ m3 = 0, dups(nx), dups(nx0), m2 ∈ nx0
Used simplifier rules: ⊦ bin-heap(kar, m).size = m; (s)% ⊦ bin-heap-inv(bh, lpt) → (keyset(bh) = ∅ ↔ bh.size = 0); (s)%ne-01: ⊦ ki ∈ gchs → gchs ≠ ∅; (forward) from specification set-basic[gc-heap-rename-gc-heap-base-keyindex-set]