| # 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) ∪ vtbl, buf), unmapped-vols(vols), valid-recs(apebs, wlar, recs), valid-vtbl-weak(apebs, m0), VTBL_VOLID × VTBL_LNUM ∈ recs, to-vtbl(vols) ⊥ vtbl ⊦ ∀ v. (v ∈ vtbl ↔ v ∈ ∅) ∧ vtbl[v] = (∅)[v], ∃ v. v ∈ vtbl |
# 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) ∪ vtbl, buf), unmapped-vols(vols), valid-recs(apebs, wlar, recs), valid-vtbl-weak(apebs, m0), v ∈ vtbl, VTBL_VOLID × VTBL_LNUM ∈ recs, to-vtbl(vols) ⊥ vtbl ⊦ v ∈ vols, ∃ v. v ∈ vtbl
Used simplifier rules: ⊦ v ∈ to-vtbl(vols) ↔ v ∈ vols; (s)%disjoint-in-right: ⊦ v ∈ vtbl ∧ vtbl0 ⊥ vtbl → ¬ v ∈ vtbl0; (forward) from specification store-union[vtbl]% ⊦ ¬ v ∈ vtbl → vtbl[v] = (∅)[v]; (s)% ⊦ ¬ v ∈ ∅; (s)