| # lpt3 = # lpt1, # lpt2 = # lpt1, # avol0 = # avol2, # avol2 = # lpt1 + m10, avol0[m1] = mapped(buf1), avol0[m2] = mapped(buf0), avol0[0] = mapped(buf), avol2[0] = mapped(buf2), avol2[m7] = mapped(buf3), avol2[m6] = mapped(buf4), adr = adr3, adr0 = adr1, avol = subarray(avol0, m10, # lpt1), lpt = lpt2, lpt0 = lpt3, m = m12, m0 = m3, orphans = ns0, subarray(avol2, m10, # lpt1) = subarray(avol0, m10, # lpt1), disk-layout(mksb(adr3, m12, m1, m2, m4, m5, m10), # lpt1), disk-layout(mksb(adr2, m11, m6, m7, m8, m9, m10), # lpt1), ebm-vol-inv(avol2), ebm-vol-inv(subarray(avol0, m10, # lpt1)), ebm-vol-inv(avol0), is-encoded(log, buf4), is-encoded(lpt1, lebs(avol2, m9, lptlebs(# lpt1, LEB_SIZE))), is-encoded(mksb(adr3, m12, m1, m2, m4, m5, m10), buf), is-encoded(lpt2, lebs(avol0, m5, lptlebs(# lpt1, LEB_SIZE))), is-encoded(plog, buf1), is-encoded(mksb(adr2, m11, m6, m7, m8, m9, m10), buf2), is-encoded-pad(ns, m4, buf0), is-encoded-pad(orphans1, m8, buf3), mapped-full?(avol2, m9, lptlebs(# lpt1, LEB_SIZE)), mapped-full?(avol0, m5, lptlebs(# lpt1, LEB_SIZE)), m10 + # lpt1 ≤ # avol0, logoff0 ≠ LEB_SIZE → # buf4 = logoff0, err1 ≠ ESUCCESS → mksb(adr2, m11, m6, m7, m8, m9, m10) = mksb(adr3, m12, m1, m2, m4, m5, m10) ∧ avol2[m1] = mapped(buf1) ∧ avol2[m2] = mapped(buf0) ∧ lebs(avol2, m5, lptlebs(# lpt1, LEB_SIZE)) = lebs(avol0, m5, lptlebs(# lpt1, LEB_SIZE)), logoff ≠ LEB_SIZE → # buf1 = logoff, err1 = ESUCCESS → adr2 = adr1 ∧ m11 = m3 ∧ buf4 = mkbuf(0) ∧ lpt1 = lpt3 ∧ orphans1 = ns0, err1 = ESUCCESS ∨ ⌊err1⌋ ⊦ ⟨fail_or_success#(; ; err); if err = ESUCCESS then {adr := adr0; m := m0; plog := []; lpt := lpt0; ns := orphans}; orphans := ?⟩ ( m = m11 ∧ adr = adr2 ∧ log = plog ∧ is-encoded(lpt, lebs(avol2, m9, lptlebs(# lpt1, LEB_SIZE))) ∧ orphans1 = ns ∧ orphans0 = orphans ∧ err1 = err) |
# lpt3 = # lpt1, # lpt2 = # lpt1, # avol0 = # avol2, # avol2 = # lpt1 + m10, avol0[m1] = mapped(buf1), avol0[m2] = mapped(buf0), avol0[0] = mapped(buf), avol2[0] = mapped(buf2), avol2[m7] = mapped(buf3), avol2[m6] = mapped(buf4), subarray(avol2, m10, # lpt1) = subarray(avol0, m10, # lpt1), disk-layout(mksb(adr3, m12, m1, m2, m4, m5, m10), # lpt1), disk-layout(mksb(adr2, m11, m6, m7, m8, m9, m10), # lpt1), ebm-vol-inv(avol2), ebm-vol-inv(subarray(avol0, m10, # lpt1)), ebm-vol-inv(avol0), is-encoded(log, buf4), is-encoded(lpt1, lebs(avol2, m9, lptlebs(# lpt1, LEB_SIZE))), is-encoded(mksb(adr3, m12, m1, m2, m4, m5, m10), buf), is-encoded(lpt2, lebs(avol0, m5, lptlebs(# lpt1, LEB_SIZE))), is-encoded(plog, buf1), is-encoded(mksb(adr2, m11, m6, m7, m8, m9, m10), buf2), is-encoded-pad(ns, m4, buf0), is-encoded-pad(orphans1, m8, buf3), mapped-full?(avol2, m9, lptlebs(# lpt1, LEB_SIZE)), mapped-full?(avol0, m5, lptlebs(# lpt1, LEB_SIZE)), logoff0 ≠ LEB_SIZE → # buf4 = logoff0, err1 ≠ ESUCCESS → mksb(adr2, m11, m6, m7, m8, m9, m10) = mksb(adr3, m12, m1, m2, m4, m5, m10) ∧ avol2[m1] = mapped(buf1) ∧ avol2[m2] = mapped(buf0) ∧ lebs(avol2, m5, lptlebs(# lpt1, LEB_SIZE)) = lebs(avol0, m5, lptlebs(# lpt1, LEB_SIZE)), logoff ≠ LEB_SIZE → # buf1 = logoff, err1 = ESUCCESS → adr2 = adr1 ∧ m11 = m3 ∧ buf4 = mkbuf(0) ∧ lpt1 = lpt3 ∧ orphans1 = ns0, err1 = ESUCCESS ∨ ⌊err1⌋ ⊦ ⟨fail_or_success#(; ; err); if err = ESUCCESS then {adr3 := adr1; m12 := m3; plog := []; lpt2 := lpt3; ns := ns0}; ns0 := ?⟩ ( m12 = m11 ∧ adr3 = adr2 ∧ log = plog ∧ is-encoded(lpt2, lebs(avol2, m9, lptlebs(# lpt1, LEB_SIZE))) ∧ orphans1 = ns ∧ orphans0 = ns0 ∧ err1 = err)
Used simplifier rules: ⊦ m ≤ m; (s)%c: ⊦ m + n = n + m; from specification nat-basic