| ⊦ [awbuf_format#(m3, LEB_SIZE, fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), @(0, 0, 0), m1; ; adr0, m0, log0, avol, lpt, ns, bleb, isbuf, err)] ( (err = ESUCCESS → synced(avol) ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol) → ⟪lpt0 := fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)); if err ≠ ESUCCESS then debug#("persistence: wbuf format failed") else {awbuf_get_leb_size#(adr0, m0, log0, avol, lpt, ns, bleb, isbuf; ; m); log := []; 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) ∧ log = 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) ∧ m = LEB_SIZE ∧ awbuf-inv(avol, bleb) ∧ # lpt = # avol)) |
adr0 = @(0, 0, 0), lpt0 = fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), m0 = m5, m1 = LEB_SIZE, m2 = m3 ⊦ [if # lpt0 = m2 ∧ m1 = LEB_SIZE then {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 := ?} else abort] ( (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))
Used simplifier rules: awbuf_format# (VOLSIZE, SIZE, LPT, WROOTADR0, WMAXINO0 ; ; WROOTADR, WMAXINO, WLOG, WVOL, WLPT, WORPHANS, WBUFLEB, AROFS, ERR ) {if # LPT = VOLSIZE ∧ SIZE = LEB_SIZE then {fail_or_success#(; ; ERR); if ERR = ESUCCESS then {WVOL := fill(mkavolume(VOLSIZE), unmapped); WROOTADR := WROOTADR0; WMAXINO := WMAXINO0; WLOG := []; WLPT := LPT; WORPHANS := ∅; WBUFLEB := nobuffer; AROFS := false} else WVOL := ?, WBUFLEB := ?, AROFS := ?, WROOTADR := ?, WMAXINO := ?, WLOG := ?, WLPT := ?, WORPHANS := ?} else abort };