| # apebs = # wlar, recs[VTBL_VOLID × VTBL_LNUM] = recovery-entry(m0, m1), apebs[m0] = mkpeb(aehdr, avhdr, buf, m, boolvar), m0 < # wlar, is-encoded(to-vtbl(vols), buf), unmapped-vols(vols), valid-recs(apebs, wlar, recs), valid-vtbl-weak(apebs, m0), VTBL_VOLID × VTBL_LNUM ∈ recs ⊦ valid-vtbl(apebs, vols, wlar, m0) ∧ ¬ VTBL_VOLID ∈ vols |
⊦ valid-vtbl(apebs, vols, wlar, n0) ↔ n0 < # apebs ∧ n0 < # wlar ∧ wlar[n0].status = used ∧ apebs[n0].vidhdr.vol = VTBL_VOLID ∧ apebs[n0].vidhdr.leb = VTBL_LNUM ∧ is-encoded(to-vtbl(vols), apebs[n0].data)
# apebs = # wlar, apebs[m0] = mkpeb(aehdr, avhdr, buf, m, boolvar), recs[VTBL_VOLID × VTBL_LNUM] = recovery-entry(m0, m1), m0 < # wlar, is-encoded(to-vtbl(vols), buf), unmapped-vols(vols), valid-recs(apebs, wlar, recs), valid-vtbl-weak(apebs, m0), VTBL_VOLID × VTBL_LNUM ∈ recs ⊦ ( m0 < # apebs ∧ m0 < # wlar ∧ wlar[m0].status = used ∧ apebs[m0].vidhdr.vol = VTBL_VOLID ∧ apebs[m0].vidhdr.leb = VTBL_LNUM ∧ is-encoded(to-vtbl(vols), apebs[m0].data)) ∧ ¬ VTBL_VOLID ∈ vols
Used terms: m0, wlar, vols, apebs