| # avols[v] = # avols0[v], m < # avols0[v], m2 < # avols0[v], ebm-cons(avols), ebm-cons(avols0), is-aligned(m1, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), v ∈ avols0, v ∈ avols, m1 + n ≤ LEB_SIZE, n + n2 ≤ # buf, ∀ m. m < # avols0[v] ∧ avols[v][m] ≠ unmapped → (avols[v][m] = erased → avols0[v][m] = erased) ∧ (avols[v][m].mapped? → avols0[v][m] = avols[v][m]) ⊦ avols[v][m2, unmapped][m] = unmapped, n = 0, avols[v][m2].mapped?, (avols[v][m] = erased → avols0[v][m] = erased) ∧ (avols[v][m].mapped? → avols0[v][m] = avols[v][m]) |
# avols[v] = # avols0[v], m2 < # avols0[v], m < # avols0[v], ebm-cons(avols0), ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m1, EB_PAGE_SIZE), v ∈ avols, v ∈ avols0, n + n2 ≤ # buf, m1 + n ≤ LEB_SIZE, ∀ m. m < # avols0[v] ∧ avols[v][m] ≠ unmapped → (avols[v][m] = erased → avols0[v][m] = erased) ∧ (avols[v][m].mapped? → avols0[v][m] = avols[v][m]) ⊦ avols[v][m2, unmapped][m] = unmapped, m = m2, n = 0, avols[v][m2].mapped?, (avols[v][m] = erased → avols0[v][m] = erased) ∧ (avols[v][m].mapped? → avols0[v][m] = avols[v][m])
Used simplifier rules: ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%m < # evol ⊦ evol[m, leb][m] = leb; (s) Used formulas: m = m2