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