| # lpt = # avol, awbuf-inv(avol, bleb), synced(avol0), avol0 ↓ avol, bleb ≠ buffered(m3) → bleb ≠ nobuffer → avol[bleb.leb].mapped? ∧ bleb.leb < # avol ∧ bleb.isbuf?, bleb = buffered(m3) ∨ (bleb = nobuffer ∨ is-aligned(# avol[bleb.leb].data, EB_PAGE_SIZE)) ∧ m3 < # avol ∧ avol[m3].mapped? ∧ m0 = # avol[m3].data ⊦ ⟨err := ESUCCESS; if err = ESUCCESS then bleb := buffered(m3)⟩ true |
# lpt = # avol, awbuf-inv(avol, bleb), synced(avol0), avol0 ↓ avol, bleb ≠ buffered(m3) → bleb ≠ nobuffer → avol[bleb.leb].mapped? ∧ bleb.leb < # avol ∧ bleb.isbuf?, bleb = buffered(m3) ∨ (bleb = nobuffer ∨ is-aligned(# avol[bleb.leb].data, EB_PAGE_SIZE)) ∧ m3 < # avol ∧ avol[m3].mapped? ∧ m0 = # avol[m3].data ⊦ ⟨if ESUCCESS = ESUCCESS then bleb := buffered(m3)⟩ true