| # buf < EB_PAGE_SIZE, is-aligned(# buf3, EB_PAGE_SIZE) ⊦ ∃ buf2. buf3 + buf2 = ((buf3 + buf) + buf1).align↓ |
⊦ buf.align↓ = subarray(buf, 0, align↓(# buf, EB_PAGE_SIZE))
Used simplifier rules: ⊦ #(buf + buf0) = # buf + # buf0; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ EB_PAGE_SIZE ≠ 0; (s)%n ≠ 0 ⊦ is-aligned(n0, n) → align↓(n0 + n1, n) = n0 + align↓(n1, n); (s)%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%m ≠ 0 ⊦ align↓(n0, m) ≤ n0; (s)%m ≤ # buf ⊦ subarray(buf0 + buf, 0, # buf0 + m) = buf0 + subarray(buf, 0, m); (s)% ⊦ buf + buf0 = buf + buf1 ↔ buf0 = buf1; (s) Used terms: (buf3 + buf) + buf1