| # wlar = # apebs1, # buf1 = LEB_SIZE, wlar[vtblpnum2] = wl-entry(m, stat), apebs1[vtblpnum2] = mkpeb(aehdr, empty, buf0, 0, false), aehdr.valid?, vtblpnum2 < # apebs1, is-aligned(LEB_SIZE, EB_PAGE_SIZE), is-encoded(∅, buf1), ubi-io-initial(apebs1), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf0, 0, false)]), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)]), ENCODED_NAT_SIZE ≤ LEB_SIZE, ∀ n3. n3 < # apebs1 → (apebs1[n3].bad → wlar[n3] = wl-entry(0, erroneous)) ∧ (¬ apebs1[n3].bad → apebs1[n3].echdr.valid? ∧ wlar[n3] = wl-entry(apebs1[n3].echdr.ec, free) ∧ apebs1[n3].vidhdr = empty) ⊦ vtblpnum2 = # apebs1, ∀ v, m0, n. (∅)[v][m0] = ⌜n⌝ ∧ v ∈ ∅ ∧ m0 < # (∅)[v] ↔ wlar[vtblpnum2, wl-entry(m, used)][n].status = used ∧ n < # apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)] ∧ n < # wlar[vtblpnum2, wl-entry(m, used)] ∧ apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)][n].vidhdr.valid? ∧ apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)][n].vidhdr.vol = v ∧ apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)][n].vidhdr.leb = m0 ∧ n ≠ vtblpnum2 |
# wlar = # apebs1, # buf1 = LEB_SIZE, wlar[n].status = used, wlar[vtblpnum2] = wl-entry(m, stat), apebs1[vtblpnum2] = mkpeb(aehdr, empty, buf0, 0, false), apebs1[n].vidhdr.valid?, aehdr.valid?, n < # apebs1, vtblpnum2 < # apebs1, is-aligned(LEB_SIZE, EB_PAGE_SIZE), is-encoded(∅, buf1), ubi-io-initial(apebs1), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf0, 0, false)]), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf1, LEB_SIZE, false)]), ENCODED_NAT_SIZE ≤ LEB_SIZE, ∀ n3. n3 < # apebs1 → (apebs1[n3].bad → wlar[n3] = wl-entry(0, erroneous)) ∧ (¬ apebs1[n3].bad → apebs1[n3].echdr.valid? ∧ wlar[n3] = wl-entry(apebs1[n3].echdr.ec, free) ∧ apebs1[n3].vidhdr = empty) ⊦ n = vtblpnum2, vtblpnum2 = # apebs1
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ m ≠ n → apebs[n, apeb][m] = apebs[m]; (s)% ⊦ # wlar[n, wle] = # wlar; (s)% ⊦ # apebs[n, apeb] = # apebs; (s)% ⊦ m ≠ n → wlar[n, wle][m] = wlar[m]; (s)% ⊦ ¬ v ∈ ∅; (s)