| # avol0 = # avol1, avol0[n] = mapped(buf), n < # avol0, ebm-vol-inv(avol0), ∀ m. m < # avol0 → (avol0[m].mapped? → avol1[m] = avol0[m]) ∧ (avol0[m] = unmapped ∧ avol1[m].mapped? → # avol1[m].data ≤ LEB_SIZE ∧ is-aligned(# avol1[m].data, EB_PAGE_SIZE)) ⊦ avol1[n] = mapped(buf) |
# avol0 = # avol1, avol0[n] = mapped(buf), n < # avol1, ebm-vol-inv(avol0), ∀ m. m < # avol1 → (avol0[m].mapped? → avol1[m] = avol0[m]) ∧ (avol0[m] = unmapped ∧ avol1[m].mapped? → # avol1[m].data ≤ LEB_SIZE ∧ is-aligned(# avol1[m].data, EB_PAGE_SIZE)) ⊦ avol1[n] = mapped(buf)
Used simplifier rules: ⊦ m < n → n ≠ 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