| # lpt = # avol, awbuf-inv(avol, bleb), synced(avol0), avol0 ↓ avol, bleb = buffered(m) ∨ (bleb = nobuffer ∨ is-aligned(# avol[bleb.leb].data, EB_PAGE_SIZE)) ∧ m < # avol ∧ avol[m].mapped? ∧ m0 = # avol[m].data ⊦ ⟨awbuf_move_buf#(m, m0, adr0, m2, nx0, avol, lpt, ns0, isbuf; bleb; err)⟩ true |
# lpt = # avol, adr = adr0, m = m2, m1 = m3, ns = ns0, nx = nx0, awbuf-inv(avol, bleb), synced(avol0), avol0 ↓ avol, bleb = buffered(m3) ∨ (bleb = nobuffer ∨ is-aligned(# avol[bleb.leb].data, EB_PAGE_SIZE)) ∧ m3 < # avol ∧ avol[m3].mapped? ∧ m0 = # avol[m3].data ⊦ ⟨if bleb = buffered(m1) ∨ (bleb = nobuffer ∨ is-aligned(# avol[bleb.leb].data, EB_PAGE_SIZE)) ∧ m1 < # avol ∧ avol[m1].mapped? ∧ m0 = # avol[m1].data then {fail_or_success#(; ; err); if err = ESUCCESS then bleb := buffered(m1)} else abort⟩ true
Used simplifier rules: move-buf: ⊦ ;