| LEB_SIZE = align↑(datasize(buf, n), EB_PAGE_SIZE) + n0, LEB_SIZE = n + n1, n = n2 + align↑(datasize(buf, n), EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), align↑(datasize(buf, n), EB_PAGE_SIZE) ≤ # buf, align↑(datasize(buf, n), EB_PAGE_SIZE) ≤ n, n ≤ # buf ⊦ subarray(buf, 0, align↑(datasize(buf, n), EB_PAGE_SIZE)) + mkempbuf(n0) = (subarray(buf, 0, align↑(datasize(buf, n), EB_PAGE_SIZE)) + mkempbuf(n2)) + mkempbuf(n1) |
LEB_SIZE = n + n1, LEB_SIZE = align↑(datasize(buf, n), EB_PAGE_SIZE) + n0, n = n2 + align↑(datasize(buf, n), EB_PAGE_SIZE), is-aligned(n, EB_PAGE_SIZE), n ≤ # buf, align↑(datasize(buf, n), EB_PAGE_SIZE) ≤ n, align↑(datasize(buf, n), EB_PAGE_SIZE) ≤ # buf ⊦ n0 = n2 + n1
Used simplifier rules: ⊦ mkempbuf(n) = mkempbuf(m) ↔ n = m; (s)% ⊦ buf + buf0 = buf + buf1 ↔ buf0 = buf1; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ mkempbuf(n0) + mkempbuf(n1) = mkempbuf(n0 + n1); (s)