| v = default-volid, m < # avols[v], ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m0, EB_PAGE_SIZE), v ∈ avols, n + n0 ≤ # buf, m0 + n ≤ LEB_SIZE, avols[v][m].mapped? → m0 ≥ avols[v][m].fill ⊦ ⟪ebm_vol_write#(m, m0, n0, n, buf, v; avols; err)⟫ (v ∈ avols ∧ ebm-cons(avols)) |
m < # avols[default-volid], ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m0, EB_PAGE_SIZE), default-volid ∈ avols, n + n0 ≤ # buf, m0 + n ≤ LEB_SIZE, avols[default-volid][m].mapped? → avols[default-volid][m].fill ≤ m0 ⊦ ⟪ebm_vol_write#(m, m0, n0, n, buf, default-volid; avols; err)⟫ (default-volid ∈ avols ∧ ebm-cons(avols))
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ n ≥ m ↔ m ≤ n; (s)