| # avol = # lpt + m9, avol[0] = mapped(buf), avol[m5] = mapped(mkbuf(0)), avol[m4] = mapped(mkbuf(0)), subarray(avol, m9, # lpt) = fill(mkavolume(# lpt0), unmapped), disk-layout(mksb(adr1, m3, m4, m5, 0, m8, m9), # lpt), ebm-vol-inv(avol), is-encoded(lpt, lebs(avol, m8, lptlebs(# lpt, LEB_SIZE))), is-encoded(lpt0, lebs(avol, m8, lptlebs(# lpt, LEB_SIZE))), is-encoded(mksb(adr1, m3, m4, m5, 0, m8, m9), buf), mapped-full?(avol, m8, lptlebs(# lpt, LEB_SIZE)), logoff ≠ LEB_SIZE → 0 = logoff ⊦ ⟨apersistence_io_format#(# lpt0, LEB_SIZE, lpt0, adr1, m3; ; adr2, m6, plog, avol1, lpt1, ns0, err0)⟩ ( m6 = m3 ∧ adr2 = adr1 ∧ avol1 = subarray(avol, m9, # lpt) ∧ [] = plog ∧ is-encoded(lpt1, lebs(avol, m8, lptlebs(# lpt, LEB_SIZE))) ∧ ∅ = ns0 ∧ ESUCCESS = err0) |
# avol0 = # lpt2 + m9, avol0[m4] = mapped(mkbuf(0)), avol0[m5] = mapped(mkbuf(0)), avol0[0] = mapped(buf), adr0 = adr1, m0 = m3, m1 = LEB_SIZE, m2 = # lpt0, subarray(avol0, m9, # lpt2) = fill(mkavolume(# lpt0), unmapped), disk-layout(mksb(adr1, m3, m4, m5, 0, m8, m9), # lpt2), ebm-vol-inv(avol0), is-encoded(mksb(adr1, m3, m4, m5, 0, m8, m9), buf), is-encoded(lpt0, lebs(avol0, m8, lptlebs(# lpt2, LEB_SIZE))), is-encoded(lpt2, lebs(avol0, m8, lptlebs(# lpt2, LEB_SIZE))), mapped-full?(avol0, m8, lptlebs(# lpt2, LEB_SIZE)), logoff ≠ LEB_SIZE → 0 = logoff ⊦ ⟨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⟩ ( m = m3 ∧ adr = adr1 ∧ avol = subarray(avol0, m9, # lpt2) ∧ [] = plog ∧ is-encoded(lpt, lebs(avol0, m8, lptlebs(# lpt2, LEB_SIZE))) ∧ ∅ = ns ∧ ESUCCESS = err)
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 };