| m0 = LEB_SIZE, m1 = m2 ⊦ ⟪persistence_format#(m3, m0, m1; lpt, freelist, gch, adr0, m4, log0, avol, lpt0, ns1, bleb, isbuf0, log1, m5; err)⟫ ( ( err = ESUCCESS → ⟨apersistence_format#(m3, m0, m2; ; adr1, istore1, istore2, ginval, gstore1, gstore2, log2, maxino, ns2, pstate0, isbuf1, err0)⟩ ( ( abs-istore(avol, lpt, istore1) ∧ abs-gstore(avol, lpt, gstore1, ginval) ∧ adr1 = adr0 ∧ maxino = m4 ∧ log2 = log1 ∧ ginval < # lpt ∧ ns2 = ns1 ∧ flash-lpt-cons(lpt0, istore2, gstore2) ∧ (isbuf1 → synced(avol)) ∧ (pstate0 = unbuffered → bleb = nobuffer) ∧ (pstate0 = readonly ↔ isbuf0) ∧ (pstate0 ≠ unbuffered ∧ pstate0 ≠ readonly → bleb = buffered(pstate0.lnum))) ∧ err = err0)) ∧ ( err ≠ ESUCCESS → (∀ adr, istore, istore0, ns, gstore, gstore0, log, m, ns0, pstate, isbuf. ⟨apersistence_format#(m3, m0, m2; ; adr1, istore1, istore2, ginval, gstore1, gstore2, log2, maxino, ns2, pstate0, isbuf1, err0)⟩ ( adr = adr1 ∧ istore = istore1 ∧ istore0 = istore2 ∧ ns = ginval ∧ gstore = gstore1 ∧ gstore0 = gstore2 ∧ log = log2 ∧ m = maxino ∧ ns0 = ns2 ∧ pstate = pstate0 ∧ (isbuf ↔ isbuf1) ∧ err = err0)))) |