| # lpt = # avol, adr = adr0, n0 = n, ns = ns0, nx = nx0, awbuf-inv(avol, bleb), synced(avol0), avol0 ↓ avol, n ≤ # buf, # avol[bleb.leb].data + n ≤ LEB_SIZE, bleb ≠ nobuffer → avol[bleb.leb].mapped? ∧ bleb.leb < # avol ∧ bleb.isbuf? ⊦ bleb = nobuffer, bleb ≠ nobuffer ∧ # avol[bleb.leb].data + n0 ≤ LEB_SIZE ∧ n0 ≤ # buf |
Used simplifier rules: ⊦ bleb.isbuf? ↔ (∃ n. bleb = buffered(n)); (as)% ⊦ aleb.mapped? ↔ (∃ buf. aleb = mapped(buf)); (as)