| gc-heap(lpt, log, n) = keyset(gch), gch0 = bin-heap(mkkeyarray(1), 0), log = nx, lpt = lpt1, lpt0 = lpt2, n = n0, n1 = 0, n < # lpt, bin-heap-inv(gch, lpt), id-idx(lpt2, lpt), n ≤ # lpt ⊦ ⟪if lpt[n].flags = LP_GROUP_NODES ∧ ¬ n ∈ log then let ki = key-index(lpt[n].ref-size, n) in gc_heap_insert#(ki; gch, lpt); n := n + 1⟫ ((n ≤ # lpt ∧ bin-heap-inv(gch, lpt) ∧ gc-heap(lpt, log, n) = keyset(gch) ∧ id-idx(lpt2, lpt)) ∧ # lpt - n < # lpt1 - n0) |
lpt[n].flags = LP_GROUP_NODES, gc-heap(lpt, log, n) = keyset(gch), gch0 = bin-heap(mkkeyarray(1), 0), log = nx, lpt = lpt1, lpt0 = lpt2, n = n0, n1 = 0, n < # lpt, bin-heap-inv(gch, lpt), id-idx(lpt2, lpt), n ≤ # lpt ⊦ ⟪let ki = key-index(lpt[n].ref-size, n) in gc_heap_insert#(ki; gch, lpt); n := n + 1⟫ ((n ≤ # lpt ∧ bin-heap-inv(gch, lpt) ∧ gc-heap(lpt, log, n) = keyset(gch) ∧ id-idx(lpt2, lpt)) ∧ # lpt - n < # lpt1 - n0), n ∈ log
gc-heap(lpt, log, n) = keyset(gch), gch0 = bin-heap(mkkeyarray(1), 0), log = nx, lpt = lpt1, lpt0 = lpt2, n = n0, n1 = 0, n < # lpt, bin-heap-inv(gch, lpt), id-idx(lpt2, lpt), n ≤ # lpt ⊦ ⟪skip; n := n + 1⟫ ((n ≤ # lpt ∧ bin-heap-inv(gch, lpt) ∧ gc-heap(lpt, log, n) = keyset(gch) ∧ id-idx(lpt2, lpt)) ∧ # lpt - n < # lpt1 - n0), lpt[n].flags = LP_GROUP_NODES ∧ ¬ n ∈ log
gc-heap(lpt, log, n) = keyset(gch), gch0 = bin-heap(mkkeyarray(1), 0), log = nx, lpt = lpt1, lpt0 = lpt2, n = n0, n1 = 0, n < # lpt, bin-heap-inv(gch, lpt), id-idx(lpt2, lpt), n ≤ # lpt ⊦ n < # lpt