| lpt0 = lpt2, m0 = m3, m1 = LEB_SIZE, m2 = # lpt2 ⊦ [fail_or_success#(; ; err); if err = ESUCCESS then {avol := fill(mkavolume(m2), unmapped); adr := adr0; m := m0; plog := []; lpt := lpt0; ns := ∅} else avol := ?, adr := ?, m := ?, plog := ?, lpt := ?, ns := ?] ( (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)) |
⊦ [fail_or_success#(; ; err); if err = ESUCCESS then {avol := fill(mkavolume(# lpt2), unmapped); adr := adr0; m := m0; plog := []; lpt := lpt2; ns := ∅} else avol := ?, adr := ?, m := ?, plog := ?, lpt := ?, ns := ?] ( (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))