| ⊦ ⟪apersistence_io_format#(# lpt0, LEB_SIZE, lpt0, adr1, m7; ; adr, m, plog, avol, lpt, ns, err); 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 → ⟨awbuf_format#(# lpt0, LEB_SIZE, lpt0, adr1, m7; ; adr3, m6, plog1, avol1, lpt2, ns1, bleb1, rofs1, err0)⟩ ( abs(avol1, bleb, wbuf, avol, rofs) ∧ bleb1 = bleb ∧ adr3 = adr ∧ m6 = m ∧ plog1 = plog ∧ lpt2 = lpt ∧ ns1 = ns ∧ (rofs1 ↔ rofs) ∧ ESUCCESS = err0)) ∧ ( err ≠ ESUCCESS → (∀ adr, m, plog, avol, lpt, ns, bleb, rofs. ⟨awbuf_format#(# lpt0, LEB_SIZE, lpt0, adr1, m7; ; adr3, m6, plog1, avol1, lpt2, ns1, bleb1, rofs1, err0)⟩ (adr = adr3 ∧ m = m6 ∧ plog = plog1 ∧ avol = avol1 ∧ lpt = lpt2 ∧ ns = ns1 ∧ bleb = bleb1 ∧ (rofs ↔ rofs1) ∧ err = err0)))) |
adr0 = adr1, m0 = m7, m1 = LEB_SIZE, m2 = # lpt0 ⊦ ⟪if # lpt0 = m2 ∧ m1 = LEB_SIZE then {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 := ?} else abort; 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 → ⟨awbuf_format#(# lpt0, LEB_SIZE, lpt0, adr1, m7; ; adr3, m6, plog1, avol1, lpt2, ns1, bleb1, rofs1, err0)⟩ ( abs(avol1, bleb, wbuf, avol, rofs) ∧ bleb1 = bleb ∧ adr3 = adr ∧ m6 = m ∧ plog1 = plog ∧ lpt2 = lpt ∧ ns1 = ns ∧ (rofs1 ↔ rofs) ∧ ESUCCESS = err0)) ∧ ( err ≠ ESUCCESS → (∀ adr, m, plog, avol, lpt, ns, bleb, rofs. ⟨awbuf_format#(# lpt0, LEB_SIZE, lpt0, adr1, m7; ; adr3, m6, plog1, avol1, lpt2, ns1, bleb1, rofs1, err0)⟩ (adr = adr3 ∧ m = m6 ∧ plog = plog1 ∧ avol = avol1 ∧ lpt = lpt2 ∧ ns = ns1 ∧ bleb = bleb1 ∧ (rofs ↔ rofs1) ∧ err = err0))))
Used simplifier rules: apersistence_io_format# (VOLSIZE, SIZE, LPT, PROOTADR0, PMAXINO0 ; ; PROOTADR, PMAXINO, PLOG, PVOL, PLPT, PORPHANS, ERR ) {if # LPT = VOLSIZE ∧ SIZE = LEB_SIZE then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then {PVOL := fill(mkavolume(VOLSIZE), unmapped); PROOTADR := PROOTADR0; PMAXINO := PMAXINO0; PLOG := []; PLPT := LPT; PORPHANS := ∅} else PVOL := ?, PROOTADR := ?, PMAXINO := ?, PLOG := ?, PLPT := ?, PORPHANS := ?} else abort };