| # buf = LEB_SIZE, LEB_SIZE = n0 + m, apebs[n] = mkpeb(aehdr, avhdr, buf, m, false), subarray(buf, m, n0) = mkempbuf(n0), n < # apebs, is-aligned(m, EB_PAGE_SIZE), valid-peb(v, m2, mkpeb(aehdr, avhdr, buf, m, false)), m ≤ m0, m0 ≤ LEB_SIZE, m ≤ LEB_SIZE ⊦ aehdr = empty, avhdr = empty, valid-peb(v, m2, mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false)) |
⊦ valid-peb(v, m, apeb) ↔ ¬ apeb.bad ∧ apeb.echdr.valid? ∧ (∃ m0, m1, m2. apeb.vidhdr = avidhdr(v, m, m0, m1, m2) ∧ (m1 ≠ 0 → m1 ≤ datasize(apeb.data) ∧ m2 = checksum(apeb.data, m1)))
# buf = LEB_SIZE, LEB_SIZE = n0 + m, apebs[n] = mkpeb(aehdr, avhdr, buf, m, false), subarray(buf, m, n0) = mkempbuf(n0), n < # apebs, is-aligned(m, EB_PAGE_SIZE), valid-peb(v, m2, mkpeb(aehdr, avhdr, buf, m, false)), m ≤ LEB_SIZE, m0 ≤ LEB_SIZE, m ≤ m0 ⊦ aehdr = empty, avhdr = empty, ¬ mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false).bad ∧ mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false).echdr.valid? ∧ (∃ m4, m5, m3. mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false).vidhdr = avidhdr(v, m2, m4, m5, m3) ∧ ( m5 ≠ 0 → m5 ≤ datasize(mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false).data) ∧ m3 = checksum(mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false).data, m5)))
Used terms: mkpeb(aehdr, avhdr, subarray(buf, 0, m0) + buf1, m1, false), m2, v