| lpt1[n0] = mklp(m, m0, lpf, m1), gc-heap(lpt2, log, n0) = keyset(gch), n0 < # lpt1, n0 < # lpt2, bin-heap-inv(gch, lpt1), id-idx(lpt2, lpt1) ⊦ gc-heap(lpt2, log, n0) ∪ (¬ n0 ∈ log ∧ lpt2[n0].flags = LP_GROUP_NODES ⊃ {key-index(lpt2[n0].ref-size, n0)} ;∅) = gc-heap(lpt2, log, n0), lpf = LP_GROUP_NODES ∧ ¬ n0 ∈ log |
lpt1[n0] = mklp(m, m0, lpf, m1), gc-heap(lpt2, log, n0) = keyset(gch), n0 < # lpt1, n0 < # lpt2, bin-heap-inv(gch, lpt1), id-idx(lpt2, lpt1) ⊦ lpf = LP_GROUP_NODES, n0 ∈ log, (lpt2[n0].flags = LP_GROUP_NODES ⊃ ∅ ++ key-index(lpt2[n0].ref-size, n0);∅) ⊆ gc-heap(lpt2, log, n0)
Used simplifier rules: ⊦ ∅ ⊆ gchs; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%unc: ⊦ gchs ∪ gchs0 = gchs0 ∪ gchs; from specification set-union[gc-heap-rename-gc-heap-base-keyindex-set]%una: ⊦ (gchs ∪ gchs0) ∪ gchs1 = gchs ∪ gchs0 ∪ gchs1; from specification set-union[gc-heap-rename-gc-heap-base-keyindex-set]% ⊦ gchs ∪ gchs0 = gchs0 ↔ gchs ⊆ gchs0; (s)% ⊦ {ki} = ∅ ++ ki; (s)