| # apebs = # wlar, apebs[m] = mkpeb(aehdr, avhdr, buf, m2, false), valid-sqns(v, n, apebs, m) = ∅, mkpeb(aehdr, avhdr, buf, m2, false).echdr.valid?, m < # wlar, ∀ n0. n0 < m → (wlar[n0].status = erroneous ↔ apebs[n0].bad) ∧ (wlar[n0].status = free → apebs[n0].vidhdr = empty) ∧ (wlar[n0].status ≠ erroneous ∧ wlar[n0].status ≠ erasing → apebs[n0].echdr = aechdr(wlar[n0].ec)) ∧ (wlar[n0].status = used → (∃ v0, m1. valid-peb(v0, m1, apebs[n0]) ∧ apebs[n0].vidhdr.sqn = valid-sqns(v0, m1, apebs, m).max)), ∃ m0, m1, m3. mkpeb(aehdr, avhdr, buf, m2, false).vidhdr = avidhdr(v, n, m0, m1, m3) ∧ (m1 ≠ 0 → m1 ≤ datasize(mkpeb(aehdr, avhdr, buf, m2, false).data) ∧ m3 = checksum(mkpeb(aehdr, avhdr, buf, m2, false).data, m1)) ⊦ aehdr = aechdr(aehdr.ec), mkpeb(aehdr, avhdr, buf, m2, false).bad |
# apebs = # wlar, apebs[m] = mkpeb(aehdr, avidhdr(v, n, m3, m1, m0), buf, m2, false), valid-sqns(v, n, apebs, m) = ∅, aehdr.valid?, m < # wlar, m1 ≠ 0 → m1 ≤ datasize(buf) ∧ m0 = checksum(buf, m1), ∀ n0. n0 < m → (wlar[n0].status = erroneous ↔ apebs[n0].bad) ∧ (wlar[n0].status = free → apebs[n0].vidhdr = empty) ∧ (wlar[n0].status ≠ erroneous ∧ wlar[n0].status ≠ erasing → apebs[n0].echdr = aechdr(wlar[n0].ec)) ∧ (wlar[n0].status = used → (∃ v0, m1. valid-peb(v0, m1, apebs[n0]) ∧ apebs[n0].vidhdr.sqn = valid-sqns(v0, m1, apebs, m).max)) ⊦ aehdr = aechdr(aehdr.ec)
Used simplifier rules: ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).data = buf; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).bad ↔ boolvar; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).echdr = aehdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)