| avols[v][m] = mapped(buf, m0), m < # avols[v], m0 + m1 < LEB_SIZE, v ∈ avols, m < # avols[v] → avols[v][m].mapped? → # avols[v][m].data = LEB_SIZE ∧ avols[v][m].fill ≤ LEB_SIZE ∧ is-aligned(avols[v][m].fill, EB_PAGE_SIZE) ∧ range=(avols[v][m].data, avols[v][m].fill, emptyleb, 0, LEB_SIZE - avols[v][m].fill) ⊦ buf[m1 + m0] = empty |
# buf = LEB_SIZE, avols[v][m] = mapped(buf, m0), m0 + m1 < LEB_SIZE, m < # avols[v], is-aligned(m0, EB_PAGE_SIZE), range=(buf, m0, emptyleb, 0, LEB_SIZE - m0), v ∈ avols, m0 ≤ LEB_SIZE ⊦ buf[m1 + m0] = empty
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ mapped(buf, m).fill = m; (s)% ⊦ mapped(buf, m).data = buf; (s)% ⊦ mapped(buf, m).mapped?; (s)