| # buf = LEB_SIZE, avol0[n0] = mapped(buf), n < # avol0, n0 < # avol0, n0 < # avol1, n0 < n + m, n < # avol1, n ≤ n0, avol0 ⊆ avol1 ⊦ m = 0, avol1[n0].mapped? ∧ # avol1[n0].data = LEB_SIZE |
⊦ avol0 ⊆ avol1 ↔ # avol0 = # avol1 ∧ (∀ m. m < # avol0 → (avol0[m].mapped? → avol1[m] = avol0[m]) ∧ (avol0[m] = unmapped ∧ avol1[m].mapped? → # avol1[m].data ≤ LEB_SIZE ∧ is-aligned(# avol1[m].data, EB_PAGE_SIZE)))
# avol0 = # avol1, # buf = LEB_SIZE, avol0[n0] = mapped(buf), n < # avol1, n0 < n + m, n0 < # avol1, n0 < # avol0, n < # avol0, n ≤ n0, ∀ m. m < # avol0 → (avol0[m].mapped? → avol1[m] = avol0[m]) ∧ (avol0[m] = unmapped ∧ avol1[m].mapped? → # avol1[m].data ≤ LEB_SIZE ∧ is-aligned(# avol1[m].data, EB_PAGE_SIZE)) ⊦ m = 0, avol1[n0].mapped? ∧ # avol1[n0].data = LEB_SIZE
Used terms: avol1, avol0