| ⟨awbuf_write_buf#(n, buf, adr, m, nx, lpt, ns, bleb; avol, isbuf; err)⟩ (avol = avol1 ∧ (isbuf ↔ isbuf0) ∧ err = err0), # lpt = # avol, bleb ≠ nobuffer, awbuf-inv(avol, bleb), avol0 ↓ avol1, n ≤ # buf, # avol[bleb.leb].data + n ≤ LEB_SIZE, ¬ avol0 ↓ avol ⊦ ⟨awbuf_write_buf#(n, buf, adr, m, nx, lpt, ns, bleb; avol, isbuf; err)⟩ (synced(avol) ∧ avol0 ↓ avol) |
⟨awbuf_write_buf#(n, buf, adr, m, nx, lpt, ns, bleb; avol, isbuf; err)⟩ (avol = avol1 ∧ (isbuf ↔ isbuf0) ∧ err = err0), # lpt = # avol, bleb = buffered(m0), awbuf-inv(avol, bleb), avol0 ↓ avol1, # avol[m0].data + n ≤ LEB_SIZE, n ≤ # buf ⊦ ⟨awbuf_write_buf#(n, buf, adr, m, nx, lpt, ns, bleb; avol, isbuf; err)⟩ (synced(avol) ∧ avol0 ↓ avol), bleb = nobuffer, avol0 ↓ avol
Used simplifier rules: ⊦ bleb ≠ nobuffer → (m = bleb.leb ↔ bleb = buffered(m)); (elim) Used terms: bleb, m