| # avol0 = # avol2, # avol1 = # avol2, # lpt1 = # avol2, # buf = EB_PAGE_SIZE, avol2[n] = mapped(buf1), avol1[n] = mapped(buf1), mapped(buf1) = avol0[n], subarray(buf, 0, m3) = subarray(buf1, m2, m3), m2 < LEB_SIZE, m2 + m3 < LEB_SIZE, m3 < EB_PAGE_SIZE, n < # avol2, m2 < # buf1, m2 + m3 < # buf1, is-aligned(m2, EB_PAGE_SIZE), # buf1 ≤ LEB_SIZE, ∀ n. n < # avol0 ∧ avol0[n].mapped? → # avol0[n].data ≤ LEB_SIZE ∧ is-aligned(# avol0[n].data, EB_PAGE_SIZE) ⊦ is-aligned(# buf1, EB_PAGE_SIZE) |
# buf = EB_PAGE_SIZE, # lpt1 = # avol2, # avol1 = # avol2, # avol0 = # avol2, avol1[n] = mapped(buf1), avol2[n] = mapped(buf1), mapped(buf1) = avol0[n], subarray(buf, 0, m3) = subarray(buf1, m2, m3), m2 + m3 < # buf1, m2 < # buf1, n < # avol2, m3 < EB_PAGE_SIZE, m2 + m3 < LEB_SIZE, m2 < LEB_SIZE, is-aligned(m2, EB_PAGE_SIZE), # buf1 ≤ LEB_SIZE, ∀ n. n < # avol2 ∧ avol0[n].mapped? → # avol0[n].data ≤ LEB_SIZE ∧ is-aligned(# avol0[n].data, EB_PAGE_SIZE) ⊦ is-aligned(# buf1, EB_PAGE_SIZE)