| m = sb.maxino, adr = sb.indexaddr, # avol = sb.main + # avol0, avol0 = subarray(avol, sb.main, # avol - sb.main), is-encoded(plog, avol[sb.log].data), is-encoded(lpt, lebs(avol, sb.lpt, lptlebs(# avol0, LEB_SIZE))), is-encoded-pad(ns, sb.orphsize, avol[sb.orph].data), ebm-vol-inv(avol0), # lpt = # avol0, ∃ lpt0, log, orphans. persistence-io-inv(sb, logoff, avol, lpt0, log, orphans), m0 = EB_PAGE_SIZE, m1 = LEB_SIZE, ebm-vol-inv(avol) ⊦ ⟪persistence_io_requires_commit#(logoff, m1; ; boolvar)⟫ ⟨apersistence_io_requires_commit#(adr, m, plog, avol0, lpt, ns; ; boolvar0)⟩ ( ( m = sb.maxino ∧ adr = sb.indexaddr ∧ # avol = sb.main + # avol0 ∧ avol0 = subarray(avol, sb.main, # avol - sb.main) ∧ is-encoded(plog, avol[sb.log].data) ∧ is-encoded(lpt, lebs(avol, sb.lpt, lptlebs(# avol0, LEB_SIZE))) ∧ is-encoded-pad(ns, sb.orphsize, avol[sb.orph].data)) ∧ (boolvar ↔ boolvar0)) |
# lpt = # avol0, # avol = sb.main + # avol0, adr = sb.indexaddr, avol0 = subarray(avol, sb.main, # avol - sb.main), m = sb.maxino, m0 = EB_PAGE_SIZE, m1 = LEB_SIZE, ebm-vol-inv(avol), ebm-vol-inv(avol0), is-encoded(lpt, lebs(avol, sb.lpt, lptlebs(# avol0, LEB_SIZE))), is-encoded(plog, avol[sb.log].data), is-encoded-pad(ns, sb.orphsize, avol[sb.orph].data), ∃ lpt0, log, orphans. persistence-io-inv(sb, logoff, avol, lpt0, log, orphans) ⊦ ⟪persistence_io_requires_commit#(logoff, m1; ; boolvar)⟫ ⟨apersistence_io_requires_commit#(adr, m, plog, avol0, lpt, ns; ; boolvar0)⟩ ( ( m = sb.maxino ∧ adr = sb.indexaddr ∧ # avol = sb.main + # avol0 ∧ avol0 = subarray(avol, sb.main, # avol - sb.main) ∧ is-encoded(plog, avol[sb.log].data) ∧ is-encoded(lpt, lebs(avol, sb.lpt, lptlebs(# avol0, LEB_SIZE))) ∧ is-encoded-pad(ns, sb.orphsize, avol[sb.orph].data)) ∧ (boolvar ↔ boolvar0))