| m2 < # avols[default-volid], ebm-cons(avols), is-aligned(m1, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), default-volid ∈ avols, m1 + n ≤ LEB_SIZE, n + n0 ≤ # buf, avols[default-volid][m2].mapped? → avols[default-volid][m2].fill ≤ m1 ⊦ ⟪ebm_write#(default-volid, m2, m1, n0, n, buf; avols; err)⟫ (default-volid ∈ avols ∧ ebm-cons(avols)) |
ebm-cons(avols), v ∈ avols, m < # avols[v], m0 + n ≤ LEB_SIZE, is-aligned(m0, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), n + n0 ≤ # buf, avols[v][m].mapped? → m0 ≥ avols[v][m].fill ⊦ ⟪ebm_write#(v, m, m0, n0, n, buf; avols; err)⟫ ebm-cons(avols)
buf0 = buf, m3 = m2, m4 = m1, n1 = n, n2 = n0, v0 = default-volid, m2 < # avols[default-volid], ebm-cons(avols), is-aligned(m1, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), default-volid ∈ avols, m1 + n ≤ LEB_SIZE, n + n0 ≤ # buf, avols[default-volid][m2].mapped? → avols[default-volid][m2].fill ≤ m1, avols[default-volid][m2].mapped? → m1 ≥ avols[default-volid][m2].fill ⊦ [ebm_write#(default-volid, m2, m1, n0, n, buf; avols; err)] (ebm-cons(avols) → default-volid ∈ avols ∧ ebm-cons(avols))
Used simplifier rules: ⊦ n ≥ m ↔ m ≤ n; (s)