| LEB_SIZE = n0 + # buf1, avol[0] = mapped(buf1), subarray(buf1 + mkempbuf(n0), 0, encoding-size(sb, EB_PAGE_SIZE)) = buf0 + buf, ebm-vol-inv(avol), is-encoded-unaligned(sb, buf0), # buf1 ≤ LEB_SIZE, encoding-size(sb, EB_PAGE_SIZE) ≤ LEB_SIZE, ∃ buf0, buf2. buf1 = buf0 + buf2 ∧ is-encoded-unaligned(sb0, buf0) ∧ # buf1 = encoding-size(sb0, EB_PAGE_SIZE) ⊦ # avol = 0, sb = sb0 |
# buf3 + # buf2 = encoding-size(sb0, EB_PAGE_SIZE), LEB_SIZE = n0 + encoding-size(sb0, EB_PAGE_SIZE), avol[0] = mapped(buf3 + buf2), subarray((buf3 + buf2) + mkempbuf(n0), 0, encoding-size(sb, EB_PAGE_SIZE)) = buf0 + buf, ebm-vol-inv(avol), is-encoded-unaligned(sb, buf0), is-encoded-unaligned(sb0, buf3), encoding-size(sb, EB_PAGE_SIZE) ≤ LEB_SIZE, encoding-size(sb0, EB_PAGE_SIZE) ≤ LEB_SIZE ⊦ # avol = 0, sb = sb0
Used simplifier rules: a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ #(buf + buf0) = # buf + # buf0; (s)