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