| # lpt = # avol, # avol0 = # avol, avol[m2] = mapped(buf0), avol0[m2] = mapped(buf0.align↓), LEB_SIZE < # buf0.align↓, m2 < # avol, awbuf-inv(avol, bleb), synced(avol0), synced(avol) ⊦ buffered(m2) = bleb |
⊦ buf.align↓ = subarray(buf, 0, align↓(# buf, EB_PAGE_SIZE))
Used simplifier rules: ⊦ EB_PAGE_SIZE ≠ 0; (s)% ⊦ # subarray(buf, m, n) = n; (s)%aligndown-is-smaller: m ≠ 0 ⊦ n0 < align↓(n, m) → n0 < n; (forward) from specification align%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n → n ≠ 0; (s)%⊦ awbuf-inv(avol, bleb) ∧ n < # avol ∧ avol[n] = mapped(buf) → ¬ LEB_SIZE < # buf; (s)%n ≠ 0, m % n = 0 ⊦ align↓(m, n) = m; (s)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s)%⊦ n < # avol ∧ synced(avol) ∧ avol[n] = mapped(buf) → is-aligned(# buf, EB_PAGE_SIZE); (s)%n ≠ 0, is-aligned(m, n) ⊦ align↓(m, n) = m; (s) Used terms: buf0