| # pebs[n0].data = PEB_SIZE, pebs[m3] = mkpeb(buf0, m1, false), n0 < # pebs, m3 < # pebs, is-aligned(m2, EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), mtd-cons(pebs), m1 ≤ m2, n2 + n ≤ # buf, m2 + n ≤ 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[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].data = PEB_SIZE ∧ ( ¬ pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].bad → pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, EB_PAGE_SIZE) ∧ range= (pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].data, pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, emptypeb, pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, PEB_SIZE - pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill)) |
# buf1 = PEB_SIZE, pebs[m3] = mkpeb(buf0, m1, false), pebs[n0] = mkpeb(buf1, m, boolvar), m3 < # pebs, n0 < # pebs, is-aligned(n, EB_PAGE_SIZE), is-aligned(m2, EB_PAGE_SIZE), mtd-cons(pebs), m2 + n ≤ PEB_SIZE, n2 + n ≤ # buf, m1 ≤ m2, ¬ boolvar → m ≤ PEB_SIZE ∧ is-aligned(m, EB_PAGE_SIZE) ∧ range=(buf1, m, emptypeb, m, PEB_SIZE - m) ⊦ # pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].data = PEB_SIZE ∧ ( ¬ pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].bad → pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill ≤ PEB_SIZE ∧ is-aligned(pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, EB_PAGE_SIZE) ∧ range= (pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].data, pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, emptypeb, pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill, PEB_SIZE - pebs[m3, mkpeb(copy(buf, n2, buf0, m2, n), m2 + n, false)][n0].fill))
Used simplifier rules: ⊦ (buf = peb.data ∧ m = peb.fill) ∧ (boolvar ↔ peb.bad) ↔ peb = mkpeb(buf, m, boolvar); (elim) Used terms: pebs[n0], buf1, m, boolvar