| # apebs = # wlar, apebs[vols[v][vtblpnum4].pnum] = mkpeb(aehdr, avhdr, buf1, m, boolvar), vtblpnum4 < # vols[v], bflipset-cons(bflipset, wlar), is-aligned(n, EB_PAGE_SIZE), is-aligned(vtblpnum3, EB_PAGE_SIZE), ubi-io-inv(apebs), unique-sqns(apebs), valid-ebatbl(apebs, wlar, vols, vtblpnum), valid-eraseq(q), valid-eraseq(wlar, q), valid-eraseq(apebs, q), valid-global-sqn(apebs, sqnum), valid-vtbl(apebs, vols, wlar, vtblpnum), valid-wl(apebs, wlar), v ∈ vols, vtblpnum3 + n ≤ LEB_SIZE, n0 + n ≤ # buf, # wlar ≤ vols[v][vtblpnum4].pnum, m ≤ vtblpnum3 ⊦ vols[v][vtblpnum4] = unmapped, VTBL_VOLID ∈ vols, vtblpnum ∈ q |
Used simplifier rules: lf-mapped-valid-peb: ⊦ v ∈ vols ∧ m < # vols[v] ∧ vols[v][m] = ⌜n⌝ ∧ valid-ebatbl(apebs, wlar, vols, n0) ∧ valid-wl(apebs, wlar) → valid-peb(v, m, apebs[n]);%lf-mapped-info: ⊦ v ∈ vols ∧ m < # vols[v] ∧ vols[v][m] = ⌜n⌝ ∧ valid-ebatbl(apebs, wlar, vols, n0) → wlar[n].status = used ∧ n ≠ n0 ∧ n < # wlar;% ⊦ unmapped ≠ ⌜m⌝ ; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ ebae ≠ unmapped → (m = ebae.pnum ↔ ebae = ⌜m⌝ ); (elim) Used terms: vols[v][vtblpnum4], m0