| # avol1 = # avol0, n < # avol0, n < m0 + m1, m0 < # avol0, n0 < # avol0, n < n0, n0 < m0 + m1, n < m0, n + 1 < # avol0, n + 1 < m0 + m1, m0 ≤ n0, m0 ≤ n0 ∧ n0 < m0 + m1 ∧ n0 < # avol0 → avol0[n0].mapped? ∧ # avol0[n0].data = LEB_SIZE, ∀ m. m < # avol0 ∧ m ≠ n → avol1[m] = avol0[m] ⊦ m1 = 0, avol1[n0].mapped? ∧ # avol1[n0].data = LEB_SIZE |
# avol1 = # avol0, # buf = LEB_SIZE, avol0[n0] = mapped(buf), n < # avol0, n < m0 + m1, m0 < # avol0, n0 < # avol0, n < n0, n0 < m0 + m1, n < m0, n + 1 < # avol0, n + 1 < m0 + m1, m0 ≤ n0, ∀ m. m < # avol0 ∧ m ≠ n → avol1[m] = avol0[m] ⊦ m1 = 0, avol1[n0].mapped? ∧ # avol1[n0].data = LEB_SIZE
Used simplifier rules: ⊦ mapped(buf).data = buf; (s)% ⊦ aleb.mapped? ↔ (∃ buf. aleb = mapped(buf)); (as)