| # subarray(buf, n, ENCODED_ELEM_SIZE) = # mkempbuf(ENCODED_ELEM_SIZE), n0 < # buf, n0 < n + ENCODED_ELEM_SIZE, n < # buf, is-encoded(a, subarray(buf, n, ENCODED_ELEM_SIZE)), n + ENCODED_ELEM_SIZE ≤ # buf, n ≤ n0, ∀ n0. n0 < # subarray(buf, n, ENCODED_ELEM_SIZE) → subarray(buf, n, ENCODED_ELEM_SIZE)[n0] = mkempbuf(ENCODED_ELEM_SIZE)[n0] ⊦ buf[n0] = empty |
n < # buf, n0 < n + ENCODED_ELEM_SIZE, n0 < # buf, is-encoded(a, subarray(buf, n, ENCODED_ELEM_SIZE)), n ≤ n0, n + ENCODED_ELEM_SIZE ≤ # buf, ∀ n1. n1 < ENCODED_ELEM_SIZE → buf[n + n1] = empty ⊦ buf[n0] = empty
Used simplifier rules: ⊦ m < n → mkempbuf(n)[m] = empty; (s)% ⊦ n0 < n → subarray(buf, m, n)[n0] = buf[m + n0]; (s)% ⊦ # mkempbuf(n) = n; (s)% ⊦ # subarray(buf, m, n) = n; (s)