| # buf = LEB_SIZE, LEB_SIZE = (n + # buf0) + m, subarray(buf, m, n + # buf0) = mkempbuf(n + # buf0), aehdr.valid?, n0 < n, is-aligned(m, EB_PAGE_SIZE), m + n ≤ LEB_SIZE, m4 ≤ datasize(buf), m4 ≤ LEB_SIZE, m ≤ LEB_SIZE ⊦ buf[m + n0] = empty, aehdr = empty, m4 = 0, m4 ≤ (datasize(buf0) = 0 ⊃ datasize(buf, m + n);(m + n) + datasize(buf0)) ∧ checksum(buf, m4) = checksum(subarray(buf, 0, m + n) + buf0, m4) |
⊦ buf = buf0 ↔ # buf = # buf0 ∧ (∀ n. n < # buf → buf[n] = buf0[n])
# subarray(buf, m, n + # buf0) = # mkempbuf(n + # buf0), # buf = LEB_SIZE, LEB_SIZE = (n + # buf0) + m, aehdr.valid?, n0 < n, is-aligned(m, EB_PAGE_SIZE), m ≤ LEB_SIZE, m4 ≤ LEB_SIZE, m4 ≤ datasize(buf), m + n ≤ LEB_SIZE, ∀ n0. n0 < # subarray(buf, m, n + # buf0) → subarray(buf, m, n + # buf0)[n0] = mkempbuf(n + # buf0)[n0] ⊦ buf[m + n0] = empty, aehdr = empty, m4 = 0, m4 ≤ (datasize(buf0) = 0 ⊃ datasize(buf, m + n);(m + n) + datasize(buf0)) ∧ checksum(buf, m4) = checksum(subarray(buf, 0, m + n) + buf0, m4)
Used terms: mkempbuf(n + # buf0), subarray(buf, m, n + # buf0)