| # mkwbuf(buf, m2, m3).content = EB_PAGE_SIZE, # avol0 = # avol2, # avol1 = # avol2, # lpt1 = # avol2, # buf = EB_PAGE_SIZE, avol2[n] = mapped(buf2), avol1[n] = mapped(buf1), mapped(buf1) = avol0[n], mapped(buf1).mapped?, mkwbuf(buf, m2, m3).nbytes < # mkwbuf(buf, m2, m3).content, n < # avol2, ebm-vol-inv(avol0), is-aligned(mkwbuf(buf, m2, m3).offset, EB_PAGE_SIZE), # buf2 ≤ LEB_SIZE, ¬ rofs0 → buf2 = buf1 + subarray(buf, 0, m3), rofs0 → m2 = # buf1 ∧ buf2 = buf1 + subarray(buf, 0, m3) ∨ m2 < # buf1 ∧ m2 + m3 < # buf1 ∧ buf2 = buf1 ∧ subarray(buf, 0, m3) = subarray(buf1, m2, m3), ¬ rofs0 → # mapped(buf1).data = mkwbuf(buf, m2, m3).offset, rofs0 → mkwbuf(buf, m2, m3).offset ≤ # mapped(buf1).data ⊦ buf1 = buf2.align↓ |
# avol0 = # avol2, # avol1 = # avol2, # lpt1 = # avol2, # buf = EB_PAGE_SIZE, avol2[n] = mapped(buf2), avol1[n] = mapped(buf1), mapped(buf1) = avol0[n], m3 < EB_PAGE_SIZE, n < # avol2, ebm-vol-inv(avol0), is-aligned(m2, EB_PAGE_SIZE), # buf2 ≤ LEB_SIZE, ¬ rofs0 → # buf1 = m2, rofs0 → m2 ≤ # buf1, ¬ rofs0 → buf2 = buf1 + subarray(buf, 0, m3), rofs0 → m2 = # buf1 ∧ buf2 = buf1 + subarray(buf, 0, m3) ∨ m2 < # buf1 ∧ m2 + m3 < # buf1 ∧ buf2 = buf1 ∧ subarray(buf, 0, m3) = subarray(buf1, m2, m3) ⊦ buf1 = buf2.align↓
Used simplifier rules: ⊦ EB_PAGE_SIZE ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ mapped(buf).data = buf; (s)% ⊦ mapped(buf).mapped?; (s)% ⊦ mkwbuf(buf, m, m0).nbytes = m0; (s)% ⊦ mkwbuf(buf, m, m0).offset = m; (s)% ⊦ mkwbuf(buf, m, m0).content = buf; (s)