| pebs[m2] = mkpeb(buf1, (aehdr = empty ⊃ 0;(avhdr1 = empty ⊃ EB_PAGE_SIZE;m1 + 2 * EB_PAGE_SIZE)), false), apebs[m2] = mkpeb(aehdr, avhdr1, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false), m2 < # apebs, m2 < # pebs, abs(pebs, apebs), abs-echdr(subarray(buf1, 0, EB_PAGE_SIZE), aehdr), abs-peb (mkpeb(buf1, (aehdr = empty ⊃ 0;(avhdr1 = empty ⊃ EB_PAGE_SIZE;m1 + 2 * EB_PAGE_SIZE)), false), mkpeb(aehdr, avhdr1, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false)), is-encoded(vidhdr(v, m0, m3, m4, m5), subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE)), mtd-cons(pebs), ubi-io-inv(apebs), 2 * EB_PAGE_SIZE ≤ PEB_SIZE, avhdr1 = empty → subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE) = emptypage, avhdr1.valid? → is-encoded(vidhdr(avhdr1.vol, avhdr1.leb, avhdr1.sqn, avhdr1.size, avhdr1.checksum), subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE)), avhdr1 = garbage → is-garbage-vid(subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE)) ∧ subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE) ≠ emptypage ⊦ avidhdr(v, m0, m3, m4, m5) = avhdr1, subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE) = emptypage |
apebs[m2] = mkpeb(aehdr, avhdr1, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false), pebs[m2] = mkpeb(buf1, (aehdr = empty ⊃ 0;m1 + 2 * EB_PAGE_SIZE), false), avhdr1.valid?, m2 < # pebs, m2 < # apebs, abs(pebs, apebs), abs-echdr(subarray(buf1, 0, EB_PAGE_SIZE), aehdr), abs-peb(mkpeb(buf1, (aehdr = empty ⊃ 0;m1 + 2 * EB_PAGE_SIZE), false), mkpeb(aehdr, avhdr1, subarray(buf1, 2 * EB_PAGE_SIZE, LEB_SIZE), m1, false)), is-encoded(vidhdr(avhdr1.vol, avhdr1.leb, avhdr1.sqn, avhdr1.size, avhdr1.checksum), subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE)), mtd-cons(pebs), ubi-io-inv(apebs), 2 * EB_PAGE_SIZE ≤ PEB_SIZE ⊦ avhdr1 = garbage, avhdr1 = empty, avidhdr(avhdr1.vol, avhdr1.leb, avhdr1.sqn, avhdr1.size, avhdr1.checksum) = avhdr1, subarray(buf1, EB_PAGE_SIZE, EB_PAGE_SIZE) = emptypage
Used simplifier rules: ⊦ vidhdr(v, m, m0, m1, m2) = vidhdr(v0, m3, m4, m5, m6) ↔ v = v0 ∧ m = m3 ∧ m0 = m4 ∧ m1 = m5 ∧ m2 = m6; (ws)% ⊦ avhdr ≠ garbage → (avhdr.valid? ↔ avhdr ≠ empty); (ss)%abs-fwd: ⊦ n < # pebs ∧ pebs[n] = peb ∧ abs(pebs, apebs) → n < # apebs ∧ abs-peb(peb, apebs[n]); (forward) from specification ubi-io-abs% ⊦ is-encoded(vhdr, buf) → (is-encoded(vhdr0, buf) ↔ vhdr = vhdr0); (s)% ⊦ is-encoded(vhdr, buf) → ¬ is-garbage-vid(buf); (s)