| # lpt = # avol, ebm-vol-inv(avol), wbuf-cons(bleb, wbuf, avol, rofs), ¬ rofs → bleb = buffered(m) ∨ (bleb = nobuffer ∨ wbuf.nbytes = 0) ∧ m < # avol ∧ avol[m].mapped? ∧ m0 = # avol[m].data ⊦ ⟪wbuf_add_log_leb#(m, m0, rofs, adr, m1, avol, lpt, ns; bleb, wbuf, plog; err)⟫ wbuf-cons(bleb, wbuf, avol, rofs) |
# lpt = # avol, m = m2, m1 = m3, ebm-vol-inv(avol), wbuf-cons(bleb, wbuf, avol, rofs), ¬ rofs → bleb = buffered(m3) ∨ (bleb = nobuffer ∨ wbuf.nbytes = 0) ∧ m3 < # avol ∧ avol[m3].mapped? ∧ m0 = # avol[m3].data ⊦ ⟪if ¬ rofs → bleb = buffered(m1) ∨ (bleb = nobuffer ∨ wbuf.nbytes = 0) ∧ m1 < # avol ∧ avol[m1].mapped? ∧ m0 = # avol[m1].data then if rofs then err := EROFS else {apersistence_io_add_log_leb#(m1, adr, m, avol, lpt, ns; plog; err); if err = ESUCCESS then wbuf_move_buf#(m1, m0, rofs, avol; bleb, wbuf; err)} else abort⟫ wbuf-cons(bleb, wbuf, avol, rofs)
Used simplifier rules: add-log-leb: ⊦ ;