| # lpt = # avol, err0 = ESUCCESS, m = m1, m0 = m2, m2 < # avol, awbuf-inv(avol, bleb), synced(avol), ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪avol[m0] := mapped(mkbuf(0))⟫ (awbuf-inv(avol, bleb) ∧ # lpt = # avol), buffered(m2) = bleb |
Used simplifier rules: ⊦ ¬ ⌊ESUCCESS⌋ ; (s)% ⊦ # avol[n, aleb] = # avol; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%n < # avol ⊦ bleb ≠ buffered(n) ∧ awbuf-inv(avol, bleb) → ( awbuf-inv(avol[n, mapped(buf)], bleb) ↔ ( avol[n].mapped? → # avol[n].data ≤ LEB_SIZE ∧ is-aligned(# avol[n].data, EB_PAGE_SIZE)) → # buf ≤ LEB_SIZE ∧ is-aligned(# buf, EB_PAGE_SIZE)); (ss)% ⊦ # mkbuf(n) = n; (s)% ⊦ 0 ≤ m; (s)% ⊦ EB_PAGE_SIZE ≠ 0; (s)%n ≠ 0 ⊦ is-aligned(0, n); (s)