| # buf = n0 + n + ENCODED_ELEM_SIZE, # buf1 = # buf, subarray(buf1, n, ENCODED_ELEM_SIZE) = mkempbuf(ENCODED_ELEM_SIZE), subarray(buf1, 0, n) = subarray(buf, 0, n), subarray(buf1, n + ENCODED_ELEM_SIZE, n0) = subarray(buf, n + ENCODED_ELEM_SIZE, n0), is-encoded(a, subarray(buf1, n, ENCODED_ELEM_SIZE)), n + ENCODED_ELEM_SIZE ≤ # buf ⊦ isempty(buf1, n, ENCODED_ELEM_SIZE) |
⊦ n0 + n1 ≤ # buf → (isempty(buf, n0, n1) ↔ (∀ n. n0 ≤ n ∧ n < n0 + n1 → buf[n] = empty))
# buf1 = # buf, # buf = n0 + n + ENCODED_ELEM_SIZE, subarray(buf1, n + ENCODED_ELEM_SIZE, n0) = subarray(buf, n + ENCODED_ELEM_SIZE, n0), subarray(buf1, 0, n) = subarray(buf, 0, n), subarray(buf1, n, ENCODED_ELEM_SIZE) = mkempbuf(ENCODED_ELEM_SIZE), is-encoded(a, subarray(buf1, n, ENCODED_ELEM_SIZE)), n + ENCODED_ELEM_SIZE ≤ # buf, n + ENCODED_ELEM_SIZE ≤ # buf1 ⊦ ∀ n2. n ≤ n2 ∧ n2 < n + ENCODED_ELEM_SIZE → buf1[n2] = empty
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%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat% ⊦ m < n → n ≠ 0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)%# buf = n ⊦ subarray(buf, 0, n) = buf; (s) Used terms: ENCODED_ELEM_SIZE, n, buf1