| lpt[m2] = mklp(m, m0, lpf, m1), keyset(gch) = gc-heap(lpt1, m2 ' + nx0), keyset(gch0) = gc-heap(lpt1, nx), m2 < # lpt, bin-heap-inv(gch, lpt), bin-heap-inv(gch0, lpt1), id-idx(lpt1, lpt), key-index(natkey, m2) ∈ keyset(gch), ∀ n. n = m2 ∨ n ∈ nx0 → n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES, ∀ n. n ∈ nx → n < # lpt1 ∧ lpt1[n].flags = LP_GROUP_NODES ⊦ gch.size = 0, dups(nx0), dups(nx), m2 ∈ nx0 |
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
Used simplifier rules: ⊦ kar = bh.ar ∧ m = bh.size ↔ bh = bin-heap(kar, m); (elim) Used terms: gch, kar, m3