| avols[v][m] = mapped(buf, m0), m < # avols[v], m0 + m1 < LEB_SIZE, v ∈ avols, ∀ m. m < # avols[v] → valid-leb(avols[v][m]) ⊦ buf[m1 + m0] = empty |
avols[v][m] = mapped(buf, m0), m0 + m1 < LEB_SIZE, m < # avols[v], v ∈ avols, ∀ m2. m2 < # avols[v] → avols[v][m2].mapped? → # avols[v][m2].data = LEB_SIZE ∧ avols[v][m2].fill ≤ LEB_SIZE ∧ is-aligned(avols[v][m2].fill, EB_PAGE_SIZE) ∧ range=(avols[v][m2].data, avols[v][m2].fill, emptyleb, 0, LEB_SIZE - avols[v][m2].fill) ⊦ buf[m1 + m0] = empty
Used simplifier rules: ⊦ valid-leb(leb) ↔ leb.mapped? → # leb.data = LEB_SIZE ∧ leb.fill ≤ LEB_SIZE ∧ is-aligned(leb.fill, EB_PAGE_SIZE) ∧ range=(leb.data, leb.fill, emptyleb, 0, LEB_SIZE - leb.fill); (s)