| # 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 |
# 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), n1 < n + ENCODED_ELEM_SIZE, n1 < # buf, n < # buf, is-encoded(a, subarray(buf1, n, ENCODED_ELEM_SIZE)), n + ENCODED_ELEM_SIZE ≤ # buf, n ≤ n1 ⊦ n0 + ENCODED_ELEM_SIZE = 0, buf1[n1] = empty
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ ENCODED_ELEM_SIZE ≠ 0; (s)% ⊦ m < m + n ↔ n ≠ 0; (s)% ⊦ m < n → n ≠ 0; (s)%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic