| 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)) |
m2 < # avols[default-volid], ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m1, EB_PAGE_SIZE), default-volid ∈ avols, n + n0 ≤ # buf, m1 + n ≤ LEB_SIZE, avols[default-volid][m2].mapped? → avols[default-volid][m2].fill ≤ m1 ⊦ [ebm_write#(default-volid, m2, m1, n0, n, buf; avols; err)] (ebm-cons(avols) → default-volid ∈ avols)
Used simplifier rules: ⊦ n ≥ m ↔ m ≤ n; (s)