| # wlar = # apebs1, apebs1[vtblpnum2] = mkpeb(aehdr, empty, buf0, m, false), apebs = apebs1, apebs0 = apebs[vtblpnum, apebs[vtblpnum].vidhdr:= avhdr], err = err0, err1 = err, vtblpnum = vtblpnum2, vtblpnum1 = LEB_SIZE, aehdr.valid?, vtblpnum2 < # wlar, vtblpnum2 < # apebs1, vtblpnum < # apebs, ubi-io-initial(apebs1), ubi-io-inv(apebs[vtblpnum, apebs[vtblpnum].vidhdr:= avhdr]), ∀ 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), ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪q := []; sqnum := 1; bflipset := ∅⟫ ( ( err1 = ESUCCESS → # apebs0 = # wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)] ∧ unique-sqns(apebs0) ∧ valid-global-sqn(apebs0, sqnum) ∧ valid-wl(apebs0, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)]) ∧ valid-eraseq(q) ∧ valid-eraseq(wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], q) ∧ valid-eraseq(apebs0, q) ∧ ¬ VTBL_VOLID ∈ ∅ ∧ bflipset-cons(bflipset, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)]) ∧ valid-ebatbl(apebs0, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], ∅, vtblpnum2) ∧ valid-vtbl(apebs0, ∅, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], vtblpnum2) ∧ vtblpnum1 = LEB_SIZE ∧ ubi-io-inv(apebs0)) ∧ (err1 = ESUCCESS ∨ ⌊err1⌋ ) ∧ (err1 = ESUCCESS → ∅ = ∅)), err = ESUCCESS, vtblpnum2 = # apebs1, avhdr.valid? |
# wlar = # apebs1, apebs1[vtblpnum2] = mkpeb(aehdr, empty, buf0, m, false), apebs = apebs1, apebs0 = apebs[vtblpnum, apebs[vtblpnum].vidhdr:= avhdr], err = err0, err1 = err, vtblpnum = vtblpnum2, vtblpnum1 = LEB_SIZE, aehdr.valid?, vtblpnum < # apebs, vtblpnum2 < # apebs1, vtblpnum2 < # wlar, ubi-io-initial(apebs1), ubi-io-inv(apebs[vtblpnum, apebs[vtblpnum].vidhdr:= avhdr]), ∀ 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), ⌊err0⌋ ∨ err0 = ESUCCESS ⊦ ⟪sqnum := 1; bflipset := ∅⟫ ( ( err1 = ESUCCESS → # apebs0 = # wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)] ∧ unique-sqns(apebs0) ∧ valid-global-sqn(apebs0, sqnum) ∧ valid-wl(apebs0, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)]) ∧ valid-eraseq([]) ∧ valid-eraseq(wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], []) ∧ valid-eraseq(apebs0, []) ∧ ¬ VTBL_VOLID ∈ ∅ ∧ bflipset-cons(bflipset, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)]) ∧ valid-ebatbl(apebs0, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], ∅, vtblpnum2) ∧ valid-vtbl(apebs0, ∅, wlar[vtblpnum2, wl-entry(wlar[vtblpnum2].ec, used)], vtblpnum2) ∧ vtblpnum1 = LEB_SIZE ∧ ubi-io-inv(apebs0)) ∧ (err1 = ESUCCESS ∨ ⌊err1⌋ ) ∧ (err1 = ESUCCESS → ∅ = ∅)), err = ESUCCESS, vtblpnum2 = # apebs1, avhdr.valid?