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