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