| ⊦ ⟪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); 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) |
# lpt = m, m0 = LEB_SIZE ⊦ ⟪awbuf_format#(m, m0, lpt, adr, m1; ; adr0, m2, nx, avol, lpt0, ns, bleb, isbuf, err)⟫ (err = ESUCCESS → synced(avol) ∧ awbuf-inv(avol, bleb) ∧ # lpt0 = # avol)
# fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)) = m3, LEB_SIZE = LEB_SIZE, adr1 = @(0, 0, 0), lpt1 = fill(mklparray(m3), mklp(0, 0, LP_FREE, 0)), m4 = m3, m5 = LEB_SIZE, m6 = m1 ⊦ [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))
Used simplifier rules: ⊦ # fill(lpt, lp) = # lpt; (s)% ⊦ # mklparray(n) = n; (s)