| # avol0 = # lpt, # lpt0 = # lpt, (lpf2 = LP_FREE ∨ n ∈ nx ⊃ lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n] ;(lpf2 = LP_INDEX_NODES ∧ m12 ≠ 0 ⊃ lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n].size:= LEB_SIZE ;(m12 = 0 ⊃ mklp(0, 0, LP_FREE, m14);lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n]) ) ) = mklp(m0, m1, lpf, m2), lpf0 = LP_INDEX_NODES ↔ n ∈ istore, n ∈ istore0 ↔ lpf1 = LP_INDEX_NODES ∧ m9 ≠ 0, n ∈ gstore0 ↔ lpf1 = LP_GROUP_NODES ∧ m9 ≠ 0, istore0[n] = indexblock(indx1, lax2, m8), istore[n] = indexblock(indx0, lax0, m3), remove-refsize0(crash(istore, istore0))[n] = indexblock(indx, lax, m), lpt[n] = mklp(m4, m5, lpf0, m6), gstore0[n] = groupblock(gndx, lax1, m7), lpt0[n] = mklp(m9, m10, lpf1, m11), lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n] = mklp(m12, m13, lpf2, m14), dom istore ∩ elems nx = ∅, n < # lpt, synced(avol0), avol1 ↓ avol0, istore0 ⊑ istore, n ∈ istore → abs-leb(avol0[n], indexblock(indx0, lax0, m3), mklp(m3, m5, lpf0, m6)) ∧ m4 = m3, n ∈ istore0 → m9 = m8, n ∈ gstore0 → m9 = m7, lpf1 = LP_FREE → m9 = 0, ∀ n. n < # lpt ∧ lpt0[n].flags = LP_FREE → lpt0[n].ref-size = 0 ⊦ (lpf = LP_INDEX_NODES ↔ n ∈ remove-refsize0(crash(istore, istore0))) ∧ (n ∈ remove-refsize0(crash(istore, istore0)) → abs-leb(avol1[n], indexblock(indx, lax, m), mklp(m, m1, lpf, m2)) ∧ m0 = m) |
# avol0 = # lpt, # lpt0 = # lpt, (lpf2 = LP_FREE ∨ n ∈ nx ⊃ mklp(m12, m13, lpf2, m14) ;(lpf2 = LP_INDEX_NODES ∧ m12 ≠ 0 ⊃ mklp(m12, LEB_SIZE, LP_INDEX_NODES, m14);(m12 = 0 ⊃ mklp(0, 0, LP_FREE, m14);mklp(m12, m13, lpf2, m14))) ) = mklp(m0, m1, lpf, m2), lpf0 = LP_INDEX_NODES ↔ n ∈ istore, n ∈ istore0 ↔ lpf1 = LP_INDEX_NODES ∧ m9 ≠ 0, n ∈ gstore0 ↔ lpf1 = LP_GROUP_NODES ∧ m9 ≠ 0, istore0[n] = indexblock(indx1, lax2, m8), istore[n] = indexblock(indx0, lax0, m3), remove-refsize0(crash(istore, istore0))[n] = indexblock(indx, lax, m), lpt[n] = mklp(m4, m5, lpf0, m6), gstore0[n] = groupblock(gndx, lax1, m7), lpt0[n] = mklp(m9, m10, lpf1, m11), lpt0.mapIndices(elems nx, λ lp. mklp(lp.ref-size, LEB_SIZE, LP_GROUP_NODES, lp.gcheapidx))[n] = mklp(m12, m13, lpf2, m14), dom istore ∩ elems nx = ∅, n < # lpt, synced(avol0), avol1 ↓ avol0, istore0 ⊑ istore, n ∈ istore → abs-leb(avol0[n], indexblock(indx0, lax0, m3), mklp(m3, m5, lpf0, m6)) ∧ m4 = m3, n ∈ istore0 → m9 = m8, n ∈ gstore0 → m9 = m7, lpf1 = LP_FREE → m9 = 0, ∀ n. n < # lpt ∧ lpt0[n].flags = LP_FREE → lpt0[n].ref-size = 0 ⊦ (lpf = LP_INDEX_NODES ↔ n ∈ remove-refsize0(crash(istore, istore0))) ∧ (n ∈ remove-refsize0(crash(istore, istore0)) → abs-leb(avol1[n], indexblock(indx, lax, m), mklp(m, m1, lpf, m2)) ∧ m0 = m)
Used simplifier rules: ⊦ mklp(m, m0, lpf, m1).size:= m3 = mklp(m, m3, lpf, m1); (s)