| pebs[m3] = mkpeb(buf0, m4, false), m = EB_PAGE_SIZE, m0 = m2, m1 = m3, m3 < # pebs, is-aligned(m2, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), mtd-cons(pebs), m4 ≤ m2 + 2 * EB_PAGE_SIZE, m2 + n ≤ LEB_SIZE, n0 + n ≤ # buf ⊦ ⟪if m1 < # pebs ∧ ¬ pebs[m1].bad ∧ pebs[m1].fill ≤ m0 + 2 * EB_PAGE_SIZE ∧ m0 + n ≤ LEB_SIZE ∧ n0 + n ≤ # buf ∧ is-aligned(m0, EB_PAGE_SIZE) ∧ is-aligned(n, EB_PAGE_SIZE) then mtd_asm_write#(m1, m0 + 2 * m, n0, n, buf; pebs; err) else abort⟫ mtd-cons(pebs) |
pebs[m3] = mkpeb(buf0, m4, false), m = EB_PAGE_SIZE, m0 = m2, m1 = m3, m3 < # pebs, is-aligned(n, EB_PAGE_SIZE), is-aligned(m2, EB_PAGE_SIZE), mtd-cons(pebs), n0 + n ≤ # buf, m2 + n ≤ LEB_SIZE, m4 ≤ m2 + 2 * EB_PAGE_SIZE ⊦ ⟪mtd_asm_write#(m1, m0 + 2 * m, n0, n, buf; pebs; err)⟫ mtd-cons(pebs)
Used simplifier rules: ⊦ mkpeb(buf, m, boolvar).bad ↔ boolvar; (s)% ⊦ mkpeb(buf, m, boolvar).fill = m; (s)