| apebs[m1] = mkpeb(aehdr, avhdr, buf2, 0, false), pebs[m1] = mkpeb(buf1, 2 * EB_PAGE_SIZE, false), buf0 = buf, m = m1, n = align↑(datasize(buf, n), EB_PAGE_SIZE), aehdr.valid?, avhdr.valid?, m1 < # apebs, m1 < # pebs, abs(pebs, apebs), abs-peb(mkpeb(buf1, 2 * EB_PAGE_SIZE, false), mkpeb(aehdr, avhdr, buf2, 0, false)), is-aligned(n, EB_PAGE_SIZE), mtd-cons(pebs), ubi-io-inv(apebs), n ≤ LEB_SIZE, n ≤ # buf, ⌊err0⌋ ⊦ datasize(buf, n) = 0, ubi-io-write-data-wl-pre(m, n, buf0, apebs) |
Used simplifier rules: ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).fill = m; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).vidhdr = avhdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).echdr = aehdr; (s)% ⊦ mkpeb(aehdr, avhdr, buf, m, boolvar).bad ↔ boolvar; (s)%⊦ ubi-io-write-data-wl-pre(n, n1, buf, apebs) ↔ n < # apebs ∧ ¬ apebs[n].bad ∧ apebs[n].echdr.valid? ∧ apebs[n].vidhdr.valid? ∧ n1 = align↑(datasize(buf, n1), EB_PAGE_SIZE) ∧ apebs[n].fill = 0 ∧ n1 ≤ LEB_SIZE ∧ n1 ≤ # buf ∧ datasize(buf, n1) ≠ 0; (s)