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