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