| pebs[m] = mkpeb(buf0, m1, false), apebs[m] = mkpeb(aehdr, avhdr, buf, m0, false), m < # pebs, m < # apebs, abs(pebs, apebs), abs-peb(mkpeb(buf0, m1, false), mkpeb(aehdr, avhdr, buf, m0, false)), mtd-cons(pebs), ubi-io-inv(apebs) ⊦ abs-peb(mkpeb(buf0, m1, true), mkpeb(aehdr, avhdr, buf, m0, true)) |
⊦ abs-peb(peb, apeb) ↔ (peb.bad ↔ apeb.bad) ∧ ( ¬ peb.bad → peb.fill = (apeb.echdr = empty ⊃ 0;(apeb.vidhdr = empty ⊃ EB_PAGE_SIZE;apeb.fill + 2 * EB_PAGE_SIZE)) ∧ abs-echdr(subarray(peb.data, 0, EB_PAGE_SIZE), apeb.echdr) ∧ abs-vidhdr(subarray(peb.data, EB_PAGE_SIZE, EB_PAGE_SIZE), apeb.vidhdr) ∧ subarray(peb.data, 2 * EB_PAGE_SIZE, LEB_SIZE) = apeb.data)
Used simplifier rules: ⊦ mkpeb(buf, m, boolvar).bad ↔ boolvar; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).bad ↔ boolvar; (s) Used terms: mkpeb(aehdr, avhdr, buf, m0, true), mkpeb(buf0, m1, true)