| EB_PAGE_SIZE = # buf1 + # buf0 % EB_PAGE_SIZE, avol[n] = mapped(buf0), LEB_SIZE < # buf0 + # buf1, n < # avol, awbuf-inv(avol, bleb) ⊦ is-aligned(# buf0, EB_PAGE_SIZE) |
⊦ awbuf-inv(avol, bleb) ↔ ¬ ¬ ( (∀ n. n < # avol ∧ avol[n].mapped? → # avol[n].data ≤ LEB_SIZE ∧ (buffered(n) ≠ bleb → is-aligned(# avol[n].data, EB_PAGE_SIZE))) ∧ (bleb ≠ nobuffer → bleb.leb < # avol ∧ avol[bleb.leb].mapped?))
EB_PAGE_SIZE = # buf1 + # buf0 % EB_PAGE_SIZE, avol[n] = mapped(buf0), n < # avol, LEB_SIZE < # buf0 + # buf1, bleb ≠ nobuffer → bleb.leb < # avol ∧ avol[bleb.leb].mapped?, ∀ n. n < # avol ∧ avol[n].mapped? → # avol[n].data ≤ LEB_SIZE ∧ (buffered(n) ≠ bleb → is-aligned(# avol[n].data, EB_PAGE_SIZE)) ⊦ is-aligned(# buf0, EB_PAGE_SIZE)
Used terms: bleb, avol