| LEB_SIZE = n0 + n, m < # avols[default-volid], ebm-cons(avols), ebm-vol-inv(abs(avols[default-volid])), is-aligned(n, EB_PAGE_SIZE), default-volid ∈ avols, n ≤ LEB_SIZE, n ≤ # buf ⊦ mapped(subarray(buf, 0, n)) = abs(avols[default-volid][m, mapped(subarray(buf, 0, n) + mkempbuf(n0), n)])[m] |
⊦ n < # evol → abs(evol)[n] = abs(evol[n])
Used simplifier rules: ⊦ m < # evol → evol[m, leb][m] = leb; (s)% ⊦ abs(mapped(buf, n)) = mapped(subarray(buf, 0, n)); (s)% ⊦ # subarray(buf, m, n) = n; (s)%n = # buf ⊦ subarray(buf + buf0, 0, n) = buf; (s)%append-a: ⊦ (buf + buf0) + buf1 = buf + buf0 + buf1; from specification array-splice[buffer]% ⊦ mapped(buf) = mapped(buf0) ↔ buf = buf0; (s)% ⊦ m ≠ n → (m ≤ n ↔ m < n); (s)% ⊦ # evol[n, leb] = # evol; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s) Used terms: m, avols[default-volid][m, mapped(subarray(buf, 0, n) + mkempbuf(n0), n)]