| v ∈ avols, vtblpnum < # avols[v], vtblpnum0 + n ≤ LEB_SIZE, is-aligned(vtblpnum0, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), n + n0 ≤ # buf, avols[v][vtblpnum].mapped? → vtblpnum0 ≥ avols[v][vtblpnum].fill, abs(avols, apebs, vols, q), ebm-cons(avols), ubi-cons(apebs, vols, wlar, q, bflipset, vtblpnum1, sqnum), vtblpnum2 = LEB_SIZE, vtblpnum3 = EB_PAGE_SIZE, ubi-io-inv(apebs) ⊦ ⟪ubi_write#(v, vtblpnum, vtblpnum0, n0, n, buf, vtblpnum3; vols, wlar, q, bflipset, vtblpnum1, sqnum, apebs; err)⟫ ⟨ebm_write#(v, vtblpnum, vtblpnum0, n0, n, buf; avols; err0)⟩ (abs(avols, apebs, vols, q) ∧ err = err0) |
vtblpnum2 = LEB_SIZE, vtblpnum3 = EB_PAGE_SIZE, vtblpnum < # avols[v], abs(avols, apebs, vols, q), ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(vtblpnum0, EB_PAGE_SIZE), ubi-cons(apebs, vols, wlar, q, bflipset, vtblpnum1, sqnum), ubi-io-inv(apebs), v ∈ avols, n + n0 ≤ # buf, vtblpnum0 + n ≤ LEB_SIZE, avols[v][vtblpnum].mapped? → vtblpnum0 ≥ avols[v][vtblpnum].fill ⊦ ⟪ubi_write#(v, vtblpnum, vtblpnum0, n0, n, buf, vtblpnum3; vols, wlar, q, bflipset, vtblpnum1, sqnum, apebs; err)⟫ ⟨ebm_write#(v, vtblpnum, vtblpnum0, n0, n, buf; avols; err0)⟩ (abs(avols, apebs, vols, q) ∧ err = err0)