| ∃ lpt, log, orphans. persistence-io-inv(sb, logoff, avol, lpt, log, orphans), ebm-vol-inv(avol), sb.main + m < # avol, avol[sb.main + m].mapped?, # avol[sb.main + m].data ≤ m0, is-aligned(m0, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), m0 + n ≤ LEB_SIZE, n0 + n ≤ # buf ⊦ ⟪persistence_io_write#(m, m0, n0, n, buf, sb; avol; err)⟫ ((∃ lpt, log, orphans. persistence-io-inv(sb, logoff, avol, lpt, log, orphans)) ∧ ebm-vol-inv(avol)) |
avol[sb.main + m].mapped?, sb.main + m < # avol, ebm-vol-inv(avol), is-aligned(n, EB_PAGE_SIZE), is-aligned(m0, EB_PAGE_SIZE), n0 + n ≤ # buf, m0 + n ≤ LEB_SIZE, # avol[sb.main + m].data ≤ m0, ∃ lpt, log, orphans. persistence-io-inv(sb, logoff, avol, lpt, log, orphans) ⊦ ⟪persistence_io_write#(m, m0, n0, n, buf, sb; avol; err)⟫ ((∃ lpt, log, orphans. persistence-io-inv(sb, logoff, avol, lpt, log, orphans)) ∧ ebm-vol-inv(avol))