| n < # pebs ⊦ mtd-cons(pebs) ↔ mtd-valid-peb(pebs[n]) ∧ mtd-cons(pebs) |
n < # pebs, ∀ 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)) ⊦ # pebs[n].data = PEB_SIZE ∧ ( ¬ pebs[n].bad → pebs[n].fill ≤ PEB_SIZE ∧ is-aligned(pebs[n].fill, EB_PAGE_SIZE) ∧ range=(pebs[n].data, pebs[n].fill, emptypeb, pebs[n].fill, PEB_SIZE - pebs[n].fill))
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