| avol[n, mapped(buf)][n0] = mapped(buf0), n0 < # avol, ∀ n. n < # avol ∧ avol[n].mapped? → is-aligned(# avol[n].data, EB_PAGE_SIZE), # avol ≤ n ∨ is-aligned(# buf, EB_PAGE_SIZE) ⊦ is-aligned(# buf0, EB_PAGE_SIZE) |
avol[n, mapped(buf)][n0] = mapped(buf0), n0 < # avol, ∀ n. n < # avol ∧ avol[n].mapped? → is-aligned(# avol[n].data, EB_PAGE_SIZE), # avol ≤ n ∨ is-aligned(# buf, EB_PAGE_SIZE) ⊦ n0 = n, is-aligned(# buf0, EB_PAGE_SIZE)
Used simplifier rules: ⊦ m < # avol → avol[m, aleb][m] = aleb; (s)% ⊦ mapped(buf) = mapped(buf0) ↔ buf = buf0; (s)% ⊦ m < n → (n ≤ m ↔ false); (s) Used formulas: n0 = n