| # lpt2 = # lpt2, LEB_SIZE = LEB_SIZE, adr1 = adr0, lpt1 = lpt2, m3 = # lpt2, m4 = LEB_SIZE, m5 = m1 ⊦ [apersistence_io_format#(# lpt2, LEB_SIZE, lpt2, adr0, m1; ; adr, m, plog, avol, lpt, ns, err)] ( (err = ESUCCESS → ebm-vol-inv(avol) ∧ # lpt = # avol) → ⟪if err = ESUCCESS then {apersistence_io_get_page_size#(adr, m, plog, avol, lpt, ns; ; m0); bleb := nobuffer; wbuf.content := mkbuf(m0); rofs := false}⟫ ( err = ESUCCESS → # wbuf.content = EB_PAGE_SIZE ∧ (bleb ≠ nobuffer → bleb.leb < # avol ∧ wbuf-cons(wbuf, avol[bleb.leb], rofs)) ∧ m0 = EB_PAGE_SIZE ∧ ebm-vol-inv(avol) ∧ # lpt = # avol)) |
⊦ [apersistence_io_format#(# lpt2, LEB_SIZE, lpt2, adr0, m1; ; adr, m, plog, avol, lpt, ns, err)] ( (err = ESUCCESS → ebm-vol-inv(avol) ∧ # lpt = # avol) → ⟪if err = ESUCCESS then {apersistence_io_get_page_size#(adr, m, plog, avol, lpt, ns; ; m0); bleb := nobuffer; wbuf.content := mkbuf(m0); rofs := false}⟫ ( err = ESUCCESS → # wbuf.content = EB_PAGE_SIZE ∧ (bleb ≠ nobuffer → bleb.leb < # avol ∧ wbuf-cons(wbuf, avol[bleb.leb], rofs)) ∧ m0 = EB_PAGE_SIZE ∧ ebm-vol-inv(avol) ∧ # lpt = # avol))