| pebs[n] = mkpeb(buf, m, false), n < # pebs, mtd-cons(pebs), m0 + m1 ≤ PEB_SIZE, m0 ≥ m ⊦ subarray(buf, m0, m1) = mkempbuf(m1) |
pebs[n] = mkpeb(buf, m, false), n < # pebs, m ≤ m0, m0 + m1 ≤ PEB_SIZE, ∀ n0. n0 < # pebs → # pebs[n0].data = PEB_SIZE ∧ ( ¬ pebs[n0].bad → pebs[n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n0].fill, EB_PAGE_SIZE) ∧ range=(pebs[n0].data, pebs[n0].fill, emptypeb, pebs[n0].fill, PEB_SIZE - pebs[n0].fill)) ⊦ subarray(buf, m0, m1) = mkempbuf(m1)
Used simplifier rules: mtd-cons: ⊦ mtd-cons(pebs) ↔ (∀ n. n < # pebs → mtd-valid-peb(pebs[n]));%mtd-valid-peb: ⊦ mtd-valid-peb(peb) ↔ # peb.data = PEB_SIZE ∧ ( ¬ peb.bad → peb.fill ≤ PEB_SIZE ∧ is-aligned(peb.fill, EB_PAGE_SIZE) ∧ range= (peb.data, peb.fill, emptypeb, peb.fill, PEB_SIZE - peb.fill));% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ n ≥ m ↔ m ≤ n; (s)