| # wlar = # apebs1, wlar[vtblpnum2] = wl-entry(m3, stat), apebs1[vtblpnum2] = mkpeb(aehdr0, empty, buf0, 0, false), aehdr0.valid?, vtblpnum2 < # apebs1, is-aligned(LEB_SIZE, EB_PAGE_SIZE), is-encoded(∅, buf), ubi-io-initial(apebs1), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)]), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf0, 0, false)]), ubi-io-peb-inv(mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)), ENCODED_NAT_SIZE ≤ LEB_SIZE, vtblpnum2 < # apebs1 → (apebs1[vtblpnum2].bad → wlar[vtblpnum2] = wl-entry(0, erroneous)) ∧ ( ¬ apebs1[vtblpnum2].bad → apebs1[vtblpnum2].echdr.valid? ∧ wlar[vtblpnum2] = wl-entry(apebs1[vtblpnum2].echdr.ec, free) ∧ apebs1[vtblpnum2].vidhdr = empty) ⊦ vtblpnum2 = # apebs1, aehdr0 = aechdr(m3) ∧ (∃ v, m. valid-peb(v, m, mkpeb(aechdr(m3), avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)) ∧ 0 = valid-sqns(v, m, apebs1[vtblpnum2, mkpeb(aechdr(m3), avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)]).max) |
# wlar = # apebs1, apebs1[vtblpnum2] = mkpeb(aehdr0, empty, buf0, 0, false), wlar[vtblpnum2] = wl-entry(aehdr0.ec, free), aehdr0.valid?, vtblpnum2 < # apebs1, is-aligned(LEB_SIZE, EB_PAGE_SIZE), is-encoded(∅, buf), ubi-io-initial(apebs1), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf0, 0, false)]), ubi-io-inv(apebs1[vtblpnum2, mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)]), ubi-io-peb-inv(mkpeb(aehdr0, avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)), ENCODED_NAT_SIZE ≤ LEB_SIZE ⊦ vtblpnum2 = # apebs1, aehdr0 = aechdr(aehdr0.ec) ∧ (∃ v, m. valid-peb(v, m, mkpeb(aechdr(aehdr0.ec), avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)) ∧ 0 = valid-sqns(v, m, apebs1[vtblpnum2, mkpeb(aechdr(aehdr0.ec), avidhdr(VTBL_VOLID, VTBL_LNUM, 0, 0, 0), buf, LEB_SIZE, false)]).max)
Used simplifier rules: ⊦ wl-entry(m, stat) = wl-entry(m0, stat0) ↔ m = m0 ∧ stat = stat0; (ws)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).echdr = aehdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).bad ↔ boolvar; (s)