| m2 < # avols[v], ebm-cons(avols), ebm-cons(avols0), is-aligned(m1, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), v ∈ avols, m1 + n ≤ LEB_SIZE, n + n2 ≤ # buf, avols ⊆ avols0 ⊦ n = 0, avols[v][m2].mapped?, (v0 ∈ avols[v, avols[v][m2, unmapped]] ↔ v0 ∈ avols0) ∧ ( v0 ∈ avols[v, avols[v][m2, unmapped]] → # avols[v, avols[v][m2, unmapped]][v0] = # avols0[v0] ∧ ( m < # avols[v, avols[v][m2, unmapped]][v0] ∧ avols[v, avols[v][m2, unmapped]][v0][m] ≠ unmapped → (avols[v, avols[v][m2, unmapped]][v0][m] = erased → avols0[v0][m] = erased) ∧ (avols[v, avols[v][m2, unmapped]][v0][m].mapped? → avols0[v0][m] = avols[v, avols[v][m2, unmapped]][v0][m]))) |
⊦ avols0 ⊆ avols1 ↔ (∀ v. (v ∈ avols0 ↔ v ∈ avols1) ∧ ( v ∈ avols0 → # avols0[v] = # avols1[v] ∧ (∀ m. m < # avols0[v] ∧ avols0[v][m] ≠ unmapped → (avols0[v][m] = erased → avols1[v][m] = erased) ∧ (avols0[v][m].mapped? → avols1[v][m] = avols0[v][m]))))
m2 < # avols[v], ebm-cons(avols0), ebm-cons(avols), is-aligned(n, EB_PAGE_SIZE), is-aligned(m1, EB_PAGE_SIZE), v ∈ avols, n + n2 ≤ # buf, m1 + n ≤ LEB_SIZE, ∀ v. (v ∈ avols ↔ v ∈ avols0) ∧ ( v ∈ avols → # avols[v] = # avols0[v] ∧ (∀ m. m < # avols[v] ∧ avols[v][m] ≠ unmapped → (avols[v][m] = erased → avols0[v][m] = erased) ∧ (avols[v][m].mapped? → avols0[v][m] = avols[v][m]))) ⊦ n = 0, avols[v][m2].mapped?, (v0 ∈ avols[v, avols[v][m2, unmapped]] ↔ v0 ∈ avols0) ∧ ( v0 ∈ avols[v, avols[v][m2, unmapped]] → # avols[v, avols[v][m2, unmapped]][v0] = # avols0[v0] ∧ ( m < # avols[v, avols[v][m2, unmapped]][v0] ∧ avols[v, avols[v][m2, unmapped]][v0][m] ≠ unmapped → (avols[v, avols[v][m2, unmapped]][v0][m] = erased → avols0[v0][m] = erased) ∧ (avols[v, avols[v][m2, unmapped]][v0][m].mapped? → avols0[v0][m] = avols[v, avols[v][m2, unmapped]][v0][m])))
Used terms: avols0, avols