| LEB_SIZE = n1 + m1 + n, m2 < # avols[v], ebm-cons(avols), is-aligned(m1, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), v ∈ avols, n + m1 ≤ LEB_SIZE, m1 ≤ LEB_SIZE, n2 + n ≤ # buf, m1 + n ≤ LEB_SIZE, n + n2 ≤ # buf ⊦ avols[v][m2].mapped?, range=(mkempbuf(m1) + subarray(buf, n2, n) + mkempbuf(n1), m1 + n, emptyleb, 0, n1) |
⊦ range=(buf, n0, buf0, n1, m) ↔ n0 + m ≤ # buf ∧ n1 + m ≤ # buf0 ∧ (∀ n. n < m → buf[n0 + n] = buf0[n1 + n])
LEB_SIZE = n1 + m1 + n, m2 < # avols[v], ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m1, EB_PAGE_SIZE), v ∈ avols, n + n2 ≤ # buf, m1 + n ≤ LEB_SIZE, n2 + n ≤ # buf, m1 ≤ LEB_SIZE, n + m1 ≤ LEB_SIZE ⊦ avols[v][m2].mapped?, (m1 + n) + n1 ≤ #(mkempbuf(m1) + subarray(buf, n2, n) + mkempbuf(n1)) ∧ 0 + n1 ≤ # emptyleb ∧ (∀ n3. n3 < n1 → (mkempbuf(m1) + subarray(buf, n2, n) + mkempbuf(n1))[(m1 + n) + n3] = (emptyleb)[0 + n3])
Used terms: n1, 0, emptyleb, m1 + n, mkempbuf(m1) + subarray(buf, n2, n) + mkempbuf(n1)