| adr0 = @(0, 0, 0), lpt0 = fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), m0 = m5, m1 = LEB_SIZE, m2 = m3 ⊦ [fail_or_success#(; ; err); if err = ESUCCESS then {avol := fill(mkavolume(m2), unmapped); adr := adr0; m := m0; log := []; lpt := lpt0; ns := ∅; bleb := nobuffer; isbuf := false} else avol := ?, bleb := ?, isbuf := ?, adr := ?, m := ?, log := ?, lpt := ?, ns := ?] ( (err = ESUCCESS → synced(avol) ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol) → ⟪lpt0 := fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)); log0 := log, m0 := m, adr0 := adr; if err ≠ ESUCCESS then debug#("persistence: wbuf format failed") else {awbuf_get_leb_size#(adr0, m0, log0, avol, lpt, ns, bleb, isbuf; ; m4); log1 := []; persistence_create_freelist#(lpt0; freelist); gc_heap_empty#(; gch)}⟫ ( err = ESUCCESS → synced(avol) ∧ lpt-free-unref(lpt0) ∧ lpt-free-unref(lpt) ∧ freelist-cons(lpt0, freelist) ∧ log1 = log0 ∧ bin-heap-inv(gch, lpt0) ∧ keyset(gch) = gc-heap(lpt0, log0) ∧ bufs-log-only(bleb, log0, lpt0) ∧ # lpt0 = # avol ∧ ¬ dups(log0) ∧ log-group-block(log0, lpt0) ∧ buf-ro-rw-mode(isbuf, bleb, lpt0, avol) ∧ lpt-leb-size(lpt0) ∧ lpt-leb-size(lpt) ∧ lpt-ram-flash(lpt0, lpt, log0) ∧ m4 = LEB_SIZE ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol)) |
⊦ [fail_or_success#(; ; err); if err = ESUCCESS then {avol := fill(mkavolume(m3), unmapped); adr := @(0, 0, 0); m := m0; log := []; lpt := fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)); ns := ∅; bleb := nobuffer; isbuf := false} else avol := ?, bleb := ?, isbuf := ?, adr := ?, m := ?, log := ?, lpt := ?, ns := ?] ( (err = ESUCCESS → synced(avol) ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol) → ⟪lpt0 := fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)); log0 := log, m0 := m, adr0 := adr; if err ≠ ESUCCESS then debug#("persistence: wbuf format failed") else {awbuf_get_leb_size#(adr0, m0, log0, avol, lpt, ns, bleb, isbuf; ; m4); log1 := []; persistence_create_freelist#(lpt0; freelist); gc_heap_empty#(; gch)}⟫ ( err = ESUCCESS → synced(avol) ∧ lpt-free-unref(lpt0) ∧ lpt-free-unref(lpt) ∧ freelist-cons(lpt0, freelist) ∧ log1 = log0 ∧ bin-heap-inv(gch, lpt0) ∧ keyset(gch) = gc-heap(lpt0, log0) ∧ bufs-log-only(bleb, log0, lpt0) ∧ # lpt0 = # avol ∧ ¬ dups(log0) ∧ log-group-block(log0, lpt0) ∧ buf-ro-rw-mode(isbuf, bleb, lpt0, avol) ∧ lpt-leb-size(lpt0) ∧ lpt-leb-size(lpt) ∧ lpt-ram-flash(lpt0, lpt, log0) ∧ m4 = LEB_SIZE ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol))