| keyset(gch) = gc-heap(lpt, nx), lpt0 = lpt, bin-heap-inv(gch, lpt), ∀ n. n ∈ nx → n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ⊦ ⟪persistence_gc_heap_add_log#(; nx, lpt, gch)⟫ (nx = [] ∧ bin-heap-inv(gch, lpt) ∧ keyset(gch) = gc-heap(lpt, nx) ∧ id-idx(lpt0, lpt)), dups(nx) |
keyset(gch) = gc-heap(lpt, nx), lpt0 = lpt, bin-heap-inv(gch, lpt), ¬ dups(nx), ∀ n. n ∈ nx → n < # lpt ∧ lpt[n].flags = LP_GROUP_NODES ⊦ ⟪persistence_gc_heap_add_log#(; nx, lpt, gch)⟫ (nx = [] ∧ bin-heap-inv(gch, lpt) ∧ keyset(gch) = gc-heap(lpt0, []) ∧ id-idx(lpt0, lpt))
Used simplifier rules: ⊦ id-idx(lpt0, lpt1) → gc-heap(lpt1, nx) = gc-heap(lpt0, nx); (s)