| # buf = PEB_SIZE, PEB_SIZE = n0 + m, pebs[n] = mkpeb(buf, m, false), n1 < m1, n < # pebs, is-aligned(m, EB_PAGE_SIZE), range=(buf, m, emptypeb, m, n0), m0 + m1 ≤ PEB_SIZE, m ≤ m0, m ≤ PEB_SIZE ⊦ buf[m0 + n1] = empty |
⊦ range=(buf, n0, buf0, n1, m) ↔ n0 + m ≤ # buf ∧ n1 + m ≤ # buf0 ∧ (∀ n. n < m → buf[n0 + n] = buf0[n1 + n])
# buf = PEB_SIZE, PEB_SIZE = n0 + m, pebs[n] = mkpeb(buf, m, false), n < # pebs, n1 < m1, is-aligned(m, EB_PAGE_SIZE), m ≤ PEB_SIZE, m ≤ m0, m0 + m1 ≤ PEB_SIZE, m + n0 ≤ # buf, m + n0 ≤ # emptypeb, ∀ n. n < n0 → buf[m + n] = (emptypeb)[m + n] ⊦ buf[m0 + n1] = empty
Used terms: n0, m, emptypeb, m, buf