| # avol0 = # avol1, # lpt0 = # avol1, # buf1 = EB_PAGE_SIZE, rofs0 ↔ rofs, avol0[m4] = mapped(buf2), adr = adr0, avol = avol0, bleb = buffered(m4), buf0 = buf, lpt = lpt0, m = m3, m0 = EB_PAGE_SIZE, n1 = align↓(wbuf.nbytes + n2, m0), n2 = n, ns = ns0, plog = plog0, ¬ rofs, wbuf = mkwbuf(buf1, m1, m2), m2 < EB_PAGE_SIZE, m4 < # avol1, abs(avol1, buffered(m4), mkwbuf(buf1, m1, m2), avol0, rofs), awbuf-inv(avol1, buffered(m4)), ebm-vol-inv(avol0), is-aligned(m1, EB_PAGE_SIZE), # avol1[m4].data + n ≤ LEB_SIZE, n ≤ # buf, wbuf.nbytes + n2 ≥ m0, ¬ rofs → wbuf.offset + wbuf.nbytes + n2 ≤ LEB_SIZE ∧ n2 ≤ # buf0, ¬ rofs → # buf2 = m1, rofs → m1 ≤ # buf2 ⊦ bleb = nobuffer, n1 ≥ wbuf.nbytes |
Used simplifier rules: ⊦ m < EB_PAGE_SIZE ∧ EB_PAGE_SIZE ≤ n + m → (align↓(m + n, EB_PAGE_SIZE) < m ↔ false); (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ n ≥ m ↔ m ≤ n; (s)% ⊦ mkwbuf(buf, m, m0).nbytes = m0; (s)% ⊦ nobuffer ≠ buffered(m); (s)