| 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) |
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, ∃ buf0. subarray(buf, m, n1) = mkempbuf(LEB_SIZE - m) + buf0
Used simplifier rules: ls-datasize-zero: n ≤ # buf ⊦ datasize(buf, n) = 0 ↔ (∃ buf0. buf = mkempbuf(n) + buf0);% ⊦ m ≤ m; (s)%c: ⊦ m + n = n + m; from specification nat-basic%n0 ≤ n ⊦ n - n0 ≤ m ↔ n ≤ m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ n ≥ m ↔ m ≤ n; (s)% ⊦ # subarray(buf, m, n) = n; (s)