| # apebs = # wlar, v × n ∈ recs ∧ recs[v × n].pnum = m0 ↔ wlar[m0].status = used ∧ m0 < m ∧ apebs[m0].vidhdr.vol = (v × n).vol ∧ apebs[m0].vidhdr.leb = (v × n).leb, recs[v × n] = recovery-entry(m0, avhdr.sqn), apebs[m0] = mkpeb(aehdr, avhdr, buf, m1, boolvar), m0 < # wlar, m0 < m, valid-peb(v, n, mkpeb(aehdr, avhdr, buf, m1, boolvar)), valid-recs-sqns(apebs, recs), valid-wl(subarray(apebs, 0, m), subarray(wlar, 0, m)), v × n ∈ recs, m ≤ # wlar ⊦ avhdr.sqn = valid-sqns(v, n, apebs, m).max |
# apebs = # wlar, wlar[m0].status = used, recs[v × n] = recovery-entry(m0, avhdr.sqn), apebs[m0] = mkpeb(aehdr, avhdr, buf, m1, boolvar), m0 < # wlar, m0 < m, valid-peb(v, n, mkpeb(aehdr, avhdr, buf, m1, boolvar)), valid-recs-sqns(apebs, recs), valid-wl(subarray(apebs, 0, m), subarray(wlar, 0, m)), v × n ∈ recs, m ≤ # wlar ⊦ avhdr.sqn = valid-sqns(v, n, apebs, m).max
Used simplifier rules: ⊦ 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)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)% ⊦ recovery-entry(m, m0).pnum = m; (s)% ⊦ (v × m).leb = m; (s)% ⊦ (v × m).vol = v; (s)