| # avol0 = # avol1, # buf = LEB_SIZE, avol0[n + m0] = mapped(buf), lebs(avol1, n, m0) = lebs(avol0, n, m0), n + m0 < # avol1, ∀ m. m < # avol1 → (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)) ⊦ avol1[n + m0].data + mkempbuf(LEB_SIZE - # avol1[n + m0].data) = buf |
Used simplifier rules: ⊦ unmapped ≠ mapped(buf); (s)% ⊦ mapped(buf).mapped?; (s)% ⊦ mapped(buf).data = buf; (s)% ⊦ buf + buf0 = buf ↔ # buf0 = 0; (s)% ⊦ # mkempbuf(n) = n; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ m - m = 0; (s) Used terms: n + m0