| # buf = n0 + ENCODED_ELEM_SIZE, # buf1 = n0 + ENCODED_ELEM_SIZE, subarray(buf1, ENCODED_ELEM_SIZE, n0) = subarray(buf, ENCODED_ELEM_SIZE, n0), is-encoded-nonempty(a, subarray(buf1, 0, ENCODED_ELEM_SIZE)), ENCODED_ELEM_SIZE ≤ EB_PAGE_SIZE, EB_PAGE_SIZE ≤ n0 + ENCODED_ELEM_SIZE, 0 + EB_PAGE_SIZE ≤ # buf1, 0 + ENCODED_ELEM_SIZE ≤ EB_PAGE_SIZE ⊦ is-encoded-nonempty(a, subarray(buf1, 0 + 0, ENCODED_ELEM_SIZE)) ∧ subarray(buf1, 0, EB_PAGE_SIZE) ≠ emptypage |
# buf1 = n0 + ENCODED_ELEM_SIZE, # buf = n0 + ENCODED_ELEM_SIZE, subarray(buf1, ENCODED_ELEM_SIZE, n0) = subarray(buf, ENCODED_ELEM_SIZE, n0), subarray(buf1, 0, EB_PAGE_SIZE) = emptypage, is-encoded-nonempty(a, subarray(buf1, 0, ENCODED_ELEM_SIZE)), ENCODED_ELEM_SIZE ≤ EB_PAGE_SIZE, EB_PAGE_SIZE ≤ n0 + ENCODED_ELEM_SIZE ⊦
Used simplifier rules: ⊦ is-encoded-nonempty(a, buf) → (is-encoded-nonempty(b, buf) ↔ a = b); (s)%c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ n + 0 = n; (s)