| # buf = LEB_SIZE, m + n + # buf0 = LEB_SIZE, subarray(buf, m, n) = mkempbuf(n), subarray(buf, m, n + # buf0) = mkempbuf(n + # buf0), aehdr.valid?, is-aligned(m, EB_PAGE_SIZE), m + n ≤ LEB_SIZE, m4 ≤ datasize(buf, m + n + # buf0), m4 ≤ LEB_SIZE ⊦ aehdr = empty, m4 = 0, m4 ≤ (datasize(buf0) = 0 ⊃ datasize(buf, m);(m + n) + datasize(buf0)) ∧ checksum(buf, m4) = checksum(subarray(buf, 0, m + n) + buf0, m4) |
⊦ subarray(buf, n0, n1) = mkempbuf(n1) ∧ n0 + n1 ≤ # buf → datasize(buf, n0 + n1) = datasize(buf, n0)
# buf = LEB_SIZE, m + n + # buf0 = LEB_SIZE, subarray(buf, m, n) = mkempbuf(n), subarray(buf, m, n + # buf0) = mkempbuf(n + # buf0), aehdr.valid?, is-aligned(m, EB_PAGE_SIZE), m4 ≤ LEB_SIZE, m4 ≤ datasize(buf, m), m + n ≤ LEB_SIZE, m + n + # buf0 ≤ # buf ⊦ aehdr = empty, m4 = 0, m4 ≤ (datasize(buf0) = 0 ⊃ datasize(buf, m);(m + n) + datasize(buf0)) ∧ checksum(buf, m4) = checksum(subarray(buf, 0, m + n) + buf0, m4)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ LEB_SIZE ≠ 0; (s)% ⊦ m < n → ¬ n < m; (s) Used terms: n + # buf0, m, buf