| LEB_SIZE = n1 + m, subarray(buf, m, n1) = mkempbuf(n1), m < datasize(subarray(buf, 0, m) + subarray(buf, m, n1), LEB_SIZE), is-aligned(m, EB_PAGE_SIZE), m ≤ LEB_SIZE ⊦ ∃ buf0. subarray(buf, 0, m) + subarray(buf, m, n1) = mkempbuf(LEB_SIZE) + buf0 |
⊦ m ≤ # buf0 + # buf1 ∧ (m ≥ # buf0 → datasize(buf1, m - # buf0) = 0) → datasize(buf0 + buf1, m) = datasize(buf0, min(m, # buf0))
LEB_SIZE = n1 + m, subarray(buf, m, n1) = mkempbuf(n1), m < datasize(subarray(buf, 0, m) + subarray(buf, m, n1), LEB_SIZE), is-aligned(m, EB_PAGE_SIZE), m ≤ LEB_SIZE ⊦ ∃ buf0. subarray(buf, 0, m) + subarray(buf, m, n1) = mkempbuf(LEB_SIZE) + buf0, LEB_SIZE ≤ # subarray(buf, 0, m) + # subarray(buf, m, n1) ∧ (LEB_SIZE ≥ # subarray(buf, 0, m) → datasize(subarray(buf, m, n1), LEB_SIZE - # subarray(buf, 0, m)) = 0)
Used simplifier rules: ⊦ # subarray(buf, m, n) = n; (s)% ⊦ n0 ≤ n1 → min(n0, n1) = n0; (s)%min-comm: ⊦ min(n0, n1) = min(n1, n0); from specification min-max% ⊦ ¬ n < datasize(buf, n); (s)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s) Used terms: LEB_SIZE, subarray(buf, m, n1), subarray(buf, 0, m)