| # 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)) |
pebs[n0] = mkpeb(buf1, m, boolvar), 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, ¬ 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: n < # pebs ⊦ pebs[n] = mkpeb(buf, m, boolvar) ∧ mtd-cons(pebs) → # buf = PEB_SIZE; (s)% ⊦ m < n → (n ≤ m ↔ false); (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)