| m < # pebs, is-aligned(n, EB_PAGE_SIZE), is-aligned(m0, EB_PAGE_SIZE), mtd-cons(pebs), n0 + n ≤ # buf, m0 + n ≤ PEB_SIZE, pebs[m].fill ≤ m0 ⊦ ⟪mtd_asm_write#(m, m0, n0, n, buf; pebs; err)⟫ mtd-cons(pebs), pebs[m].bad |
m < # pebs, is-aligned(n, EB_PAGE_SIZE), is-aligned(m0, EB_PAGE_SIZE), mtd-cons(pebs), n0 + n ≤ # buf, m0 + n ≤ PEB_SIZE, pebs[m].fill ≤ m0, ¬ pebs[m].bad ⊦ ⟪mtd_asm_write#(m, m0, n0, n, buf; pebs; err)⟫ mtd-cons(pebs)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic