| # apebs = # wlar, apebs[m0].vidhdr.sqn = valid-sqns(VTBL_VOLID, VTBL_LNUM, apebs).max, wlar[m0] = wl-entry(m2, stat), apebs[m0] = mkpeb(aehdr, avhdr, buf, m, boolvar), recs[VTBL_VOLID × VTBL_LNUM] = recovery-entry(m0, m1), m0 < # apebs, m0 < # wlar, is-encoded(to-vtbl(vols), buf), unmapped-vols(vols), valid-peb(VTBL_VOLID, VTBL_LNUM, apebs[m0]), valid-recs(apebs, wlar, recs), VTBL_VOLID × VTBL_LNUM ∈ recs, ∃ vtbl. is-encoded(vtbl, apebs[m0].data) ∧ ¬ VTBL_VOLID ∈ vtbl ⊦ stat = used ∧ avhdr.vol = VTBL_VOLID ∧ avhdr.leb = VTBL_LNUM ∧ ¬ VTBL_VOLID ∈ vols |
# apebs = # wlar, avhdr.sqn = valid-sqns(VTBL_VOLID, VTBL_LNUM, apebs).max, recs[VTBL_VOLID × VTBL_LNUM] = recovery-entry(m0, m1), apebs[m0] = mkpeb(aehdr, avhdr, buf, m, boolvar), wlar[m0] = wl-entry(m2, stat), m0 < # wlar, is-encoded(to-vtbl(vols), buf), unmapped-vols(vols), valid-peb(VTBL_VOLID, VTBL_LNUM, mkpeb(aehdr, avhdr, buf, m, boolvar)), valid-recs(apebs, wlar, recs), VTBL_VOLID × VTBL_LNUM ∈ recs ⊦ stat = used, VTBL_VOLID ∈ vols
Used simplifier rules: ⊦ v ∈ to-vtbl(vols) ↔ v ∈ vols; (s)%⊦ valid-peb(v, m, mkpeb(aehdr, avhdr, buf, m0, boolvar)) → avhdr.leb = m; (s)%⊦ valid-peb(v, m, mkpeb(aehdr, avhdr, buf, m0, boolvar)) → avhdr.vol = v; (s)% ⊦ is-encoded(vtbl0, buf) → (is-encoded(vtbl1, buf) ↔ vtbl0 = vtbl1); (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).data = buf; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)