| 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 - n < ENCODED_ELEM_SIZE → buf[n + (n0 - n)] = empty ⊦ buf[n0] = empty |
buf[n + (n0 - n)] = 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 ⊦ buf[n0] = empty
Used simplifier rules: 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)