| avols[default-volid][m2] = mapped(buf1, n1), buf = buf0, m = m1, m0 = m2, n = n2, n0 = n3, v = default-volid, m2 < # avols[default-volid], ebm-cons(avols), ebm-vol-inv(abs(avols[default-volid])), default-volid ∈ avols, n3 + n2 ≤ # buf0, m1 + n2 ≤ LEB_SIZE ⊦ ⟪if avols[v][m0].mapped? ∧ m0 < # avols[v] ∧ m + n ≤ LEB_SIZE ∧ n0 + n ≤ # buf then ebm_read#(v, m0, m, n0, n, avols; buf; err) else abort⟫ ⟨ebm_avol_read#(m2, m1, n3, n2, abs(avols[default-volid]); buf0; err0)⟩ (buf = buf0 ∧ err = err0) |
avols[default-volid][m2] = mapped(buf1, n1), buf = buf0, m = m1, m0 = m2, n = n2, n0 = n3, v = default-volid, m2 < # avols[default-volid], ebm-cons(avols), ebm-vol-inv(abs(avols[default-volid])), default-volid ∈ avols, m1 + n2 ≤ LEB_SIZE, n3 + n2 ≤ # buf0 ⊦ ⟪ebm_read#(v, m0, m, n0, n, avols; buf; err)⟫ ⟨ebm_avol_read#(m2, m1, n3, n2, abs(avols[default-volid]); buf0; err0)⟩ (buf = buf0 ∧ err = err0)
Used simplifier rules: ⊦ mapped(buf, m).mapped?; (s)