| ⟨awbuf_write_buf#(n, buf, adr, m, nx, lpt, ns, buffered(m1); avol, isbuf; err)⟩ (avol = avol1 ∧ (isbuf ↔ isbuf0) ∧ err = err0), # lpt = # avol, avol[m1] = mapped(buf0), bleb = buffered(m1), m0 = m, n0 = n, m1 < # avol, awbuf-inv(avol, buffered(m1)), avol0 ↓ avol1, n ≤ # buf, # buf0 + n ≤ LEB_SIZE ⊦ bleb = nobuffer, avol0 ↓ avol, avol[bleb.leb].mapped? ∧ bleb.leb < # avol ∧ bleb.isbuf? |
Used simplifier rules: fwd-buffered-mapped: ⊦ awbuf-inv(avol, buffered(n)) → n < # avol ∧ avol[n].mapped?;% ⊦ unmapped ≠ mapped(buf); (s)%inv-buf-in-vol: ⊦ awbuf-inv(avol, buffered(n)) → n < # avol; (forward) from specification awbuf-inv%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ aleb.mapped? ↔ aleb ≠ unmapped; (ss)% ⊦ buffered(m).isbuf?; (s)% ⊦ buffered(m).leb = m; (s)% ⊦ nobuffer ≠ buffered(m); (s)