| # buf1 = EB_PAGE_SIZE, # lpt = # avol, avol[m4] = mapped(buf), m4 < # avol, ebm-vol-inv(avol), is-aligned(m3, EB_PAGE_SIZE), wbuf-cons(mkwbuf(buf1, m3, m2), mapped(buf), false), EB_PAGE_SIZE ≤ m2 + n3, m2 ≤ align↓(m2 + n3, EB_PAGE_SIZE), m2 ≤ EB_PAGE_SIZE, align↓(m2 + n3, EB_PAGE_SIZE) ≤ # buf3 + m2, m3 + m2 + n3 ≤ LEB_SIZE, n3 ≤ # buf3, # buf ≤ m3, m3 + align↓(m2 + n3, EB_PAGE_SIZE) ≤ LEB_SIZE, ⌊err0⌋ , ∀ n. ¬ n < align↓(m2 + n3, EB_PAGE_SIZE) ∨ ¬ is-aligned(n, EB_PAGE_SIZE) ⊦ mapped(buf).mapped? ∧ mkwbuf(buf1, m3, m2).nbytes < # mkwbuf(buf1, m3, m2).content ∧ # mkwbuf(buf1, m3, m2).content = EB_PAGE_SIZE ∧ (¬ true → # mapped(buf).data = mkwbuf(buf1, m3, m2).offset) ∧ (true → mkwbuf(buf1, m3, m2).offset ≤ # mapped(buf).data) ∧ is-aligned(mkwbuf(buf1, m3, m2).offset, EB_PAGE_SIZE) |
# lpt = # avol, # buf1 = EB_PAGE_SIZE, avol[m4] = mapped(buf), # buf < m3, m4 < # avol, m2 < EB_PAGE_SIZE, ebm-vol-inv(avol), is-aligned(m3, EB_PAGE_SIZE), wbuf-cons(mkwbuf(buf1, m3, m2), mapped(buf), false), n3 ≤ # buf3, m3 + m2 + n3 ≤ LEB_SIZE, align↓(m2 + n3, EB_PAGE_SIZE) ≤ # buf3 + m2, m2 ≤ align↓(m2 + n3, EB_PAGE_SIZE), EB_PAGE_SIZE ≤ m2 + n3, m3 + align↓(m2 + n3, EB_PAGE_SIZE) ≤ LEB_SIZE, ⌊err0⌋ , ∀ n. ¬ n < align↓(m2 + n3, EB_PAGE_SIZE) ∨ ¬ is-aligned(n, EB_PAGE_SIZE) ⊦ # buf = m3, n3 = 0
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m < m + n ↔ n ≠ 0; (s)% ⊦ EB_PAGE_SIZE ≠ 0; (s)% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)% ⊦ m < n → m ≤ n; (s)%⊦ wbuf-cons(mkwbuf(buf, m0, m1), aleb, boolvar) → (EB_PAGE_SIZE ≤ m1 ↔ false); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m ≤ n → (n ≤ m ↔ m = n); (s)% ⊦ mapped(buf).data = buf; (s)% ⊦ mkwbuf(buf, m, m0).offset = m; (s)% ⊦ mkwbuf(buf, m, m0).content = buf; (s)% ⊦ mkwbuf(buf, m, m0).nbytes = m0; (s)% ⊦ mapped(buf).mapped?; (s)