| avols[v, fill(mkabstractvolume(n), erased)][v0][m] = mapped(buf, m0), m < # avols[v, fill(mkabstractvolume(n), erased)][v0], ebm-cons(avols), v0 ∈ avols[v, fill(mkabstractvolume(n), erased)] ⊦ v0 = v, v ∈ avols, # buf = LEB_SIZE ∧ m0 ≤ LEB_SIZE ∧ is-aligned(m0, EB_PAGE_SIZE) ∧ range=(buf, m0, emptyleb, 0, LEB_SIZE - m0) |
avols[v0][m] = mapped(buf, m0), m < # avols[v0], ebm-cons(avols), v0 ∈ avols ⊦ v ∈ avols, is-aligned(m0, EB_PAGE_SIZE) ∧ range=(buf, m0, emptyleb, 0, LEB_SIZE - m0)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%⊦ v ∈ avols ∧ m < # avols[v] ∧ avols[v][m] = mapped(buf, n) ∧ ebm-cons(avols) → n ≤ LEB_SIZE; (ss)%⊦ v ∈ avols ∧ m < # avols[v] ∧ avols[v][m] = mapped(buf, n) ∧ ebm-cons(avols) → # buf = LEB_SIZE; (s)% ⊦ v ∈ avols ∧ ¬ v0 ∈ avols → avols[v0, evol][v] = avols[v]; (s)% ⊦ v ≠ v0 → (v ∈ avols[v0, evol] ↔ v ∈ avols); (s)% ⊦ v ≠ v0 → avols[v0, evol][v] = avols[v]; (s)