| m < # avol, n ≤ # buf, m0 + n ≤ LEB_SIZE, avol[m].mapped?, ⟨awbuf_read_buf#(m, m0, n, adr, m1, nx, avol, lpt, ns, bleb, isbuf; buf; err)⟩ (adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns), awbuf-inv(avol, bleb), # lpt = # avol ⊦ ⟨awbuf_read_buf#(m, m0, n, adr, m1, nx, avol, lpt, ns, bleb, isbuf; buf; err)⟩ (synced(avol) ∧ adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns), adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns |
⟨awbuf_read_buf#(m, m0, n, adr, m1, nx, avol, lpt, ns, bleb, isbuf; buf; err)⟩ (adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns), # lpt = # avol, avol[m].mapped?, m < # avol, awbuf-inv(avol, bleb), m0 + n ≤ LEB_SIZE, n ≤ # buf ⊦ ⟨awbuf_read_buf#(m, m0, n, adr, m1, nx, avol, lpt, ns, bleb, isbuf; buf; err)⟩ (synced(avol) ∧ adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns), adr0 = adr ∧ m2 = m1 ∧ nx0 = nx ∧ lpt0 = lpt ∧ avol0 ↓ avol ∧ ns0 = ns