| pebs[m0] = mkpeb(buf0, m, false), m0 < # pebs, is-aligned(n, EB_PAGE_SIZE), is-aligned(m1, EB_PAGE_SIZE), mtd-cons(pebs), n0 + n ≤ # buf, m1 + n ≤ LEB_SIZE, m ≤ m1 + 2 * EB_PAGE_SIZE ⊦ ⟪ubi_io_write_data#(m0, m1, n0, n, buf, EB_PAGE_SIZE; pebs; err)⟫ mtd-cons(pebs) |
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)
Used simplifier rules: write-data: ⊦ ;