| m = m1, m0 = m2, v = default-volid, avols[default-volid][m2].mapped?, m2 < # avols[default-volid], ebm-cons(avols), default-volid ∈ avols, m1 + n ≤ LEB_SIZE, n0 + n ≤ # buf ⊦ ⟪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⟫ true |
m = m1, m0 = m2, v = default-volid, avols[default-volid][m2].mapped?, m2 < # avols[default-volid], ebm-cons(avols), default-volid ∈ avols, n0 + n ≤ # buf, m1 + n ≤ LEB_SIZE ⊦ ⟪ebm_read#(v, m0, m, n0, n, avols; buf; err)⟫ true
Used simplifier rules: ⊦ ¬ v ∈ avols → avols[v] = (∅)[v]; (s)