| # apebs = # wlar, recs[VTBL_VOLID × VTBL_LNUM] = recovery-entry(m0, m1), apebs[m0] = mkpeb(aehdr, avhdr, buf, m, boolvar), vols0 = ∅, vtbl = ∅, m0 < # wlar, recs[VTBL_VOLID × VTBL_LNUM].pnum < # apebs, is-encoded(vtbl1, buf), is-encoded(to-vtbl(vols) ∪ vtbl, apebs[recs[VTBL_VOLID × VTBL_LNUM].pnum].data), unmapped-vols(vols), valid-recs(apebs, wlar, recs), valid-vtbl-weak(apebs, m0), valid-vtbl-weak(apebs, recs[VTBL_VOLID × VTBL_LNUM].pnum), VTBL_VOLID × VTBL_LNUM ∈ recs, to-vtbl(vols) ⊥ vtbl ⊦ valid-vtbl(apebs, vols, wlar, m0) ∧ unmapped-vols(vols) ∧ ¬ VTBL_VOLID ∈ vols |
# 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
Used simplifier rules: ⊦ is-encoded(vtbl0, buf) → (is-encoded(vtbl1, buf) ↔ vtbl0 = vtbl1); (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).data = buf; (s)% ⊦ recovery-entry(m, m0).pnum = m; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ vtbl ∪ ∅ = vtbl; (s)% ⊦ vtbl ⊥ ∅; (s)