| avols[v0][m] = mapped(buf, m0), m < # avols[v0], v0 ∈ avols, ∀ m. m < # avols[v0] → valid-leb(avols[v0][m]) ⊦ v ∈ avols, is-aligned(m0, EB_PAGE_SIZE) ∧ range=(buf, m0, emptyleb, 0, LEB_SIZE - m0) |
avols[v0][m] = mapped(buf, m0), m < # avols[v0], v0 ∈ avols, ∀ m1. m1 < # avols[v0] → avols[v0][m1].mapped? → # avols[v0][m1].data = LEB_SIZE ∧ avols[v0][m1].fill ≤ LEB_SIZE ∧ is-aligned(avols[v0][m1].fill, EB_PAGE_SIZE) ∧ range=(avols[v0][m1].data, avols[v0][m1].fill, emptyleb, 0, LEB_SIZE - avols[v0][m1].fill) ⊦ v ∈ avols, is-aligned(m0, EB_PAGE_SIZE) ∧ range=(buf, m0, emptyleb, 0, LEB_SIZE - m0)
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)