| # buf2 = EB_PAGE_SIZE, pebs[m2] = mkpeb(buf1, EB_PAGE_SIZE, false), apebs[m2] = mkpeb(aehdr, empty, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false), aehdr.valid?, m2 < # apebs, m2 < # pebs, abs(pebs, apebs), abs-echdr(subarray(buf1, 0, EB_PAGE_SIZE), aehdr), abs-vidhdr(subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE), empty), is-encoded(vidhdr(v, m6, m5, m3, m4), buf2), mtd-cons(pebs), ubi-io-inv(apebs), 2 * EB_PAGE_SIZE ≤ PEB_SIZE ⊦ aehdr = empty, m1 = 0 ∧ abs-vidhdr(buf2, avidhdr(v, m6, m5, m3, m4)) |
⊦ abs-vidhdr(buf, avhdr) ↔ (avhdr = empty → buf = emptypage) ∧ (avhdr.valid? → is-encoded(vidhdr(avhdr.vol, avhdr.leb, avhdr.sqn, avhdr.size, avhdr.checksum), buf)) ∧ (avhdr = garbage → is-garbage-vid(buf) ∧ buf ≠ emptypage)
# buf2 = EB_PAGE_SIZE, apebs[m2] = mkpeb(aehdr, empty, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false), pebs[m2] = mkpeb(buf1, EB_PAGE_SIZE, false), aehdr.valid?, m2 < # pebs, m2 < # apebs, abs(pebs, apebs), abs-echdr(subarray(buf1, 0, EB_PAGE_SIZE), aehdr), abs-vidhdr(subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE), empty), is-encoded(vidhdr(v, m6, m5, m3, m4), buf2), mtd-cons(pebs), ubi-io-inv(apebs), 2 * EB_PAGE_SIZE ≤ PEB_SIZE ⊦ aehdr = empty, m1 = 0 ∧ (avidhdr(v, m6, m5, m3, m4) = empty → buf2 = emptypage) ∧ ( avidhdr(v, m6, m5, m3, m4).valid? → is-encoded (vidhdr (avidhdr(v, m6, m5, m3, m4).vol, avidhdr(v, m6, m5, m3, m4).leb, avidhdr(v, m6, m5, m3, m4).sqn, avidhdr(v, m6, m5, m3, m4).size, avidhdr(v, m6, m5, m3, m4).checksum), buf2)) ∧ (avidhdr(v, m6, m5, m3, m4) = garbage → is-garbage-vid(buf2) ∧ buf2 ≠ emptypage)
Used terms: avidhdr(v, m6, m5, m3, m4), buf2