| buf0 = buf, ENCODED_ELEM_SIZE ≤ # buf, ENCODED_ELEM_SIZE ≤ EB_PAGE_SIZE, EB_PAGE_SIZE ≤ # buf ⊦ ∀ buf, err. # buf = # buf0 ∧ subarray(buf, ENCODED_ELEM_SIZE, # buf - ENCODED_ELEM_SIZE) = subarray(buf0, ENCODED_ELEM_SIZE, # buf - ENCODED_ELEM_SIZE) ∧ is-encoded-nonempty(a, subarray(buf, 0, ENCODED_ELEM_SIZE)) → err = ESUCCESS → is-encoded-pagesize(a, subarray(buf, 0, EB_PAGE_SIZE)) |
# buf1 = # buf, subarray(buf1, ENCODED_ELEM_SIZE, # buf - ENCODED_ELEM_SIZE) = subarray(buf, ENCODED_ELEM_SIZE, # buf - ENCODED_ELEM_SIZE), is-encoded-nonempty(a, subarray(buf1, 0, ENCODED_ELEM_SIZE)), ENCODED_ELEM_SIZE ≤ # buf, ENCODED_ELEM_SIZE ≤ EB_PAGE_SIZE, EB_PAGE_SIZE ≤ # buf ⊦ is-encoded-pagesize(a, subarray(buf1, 0, EB_PAGE_SIZE))
Used simplifier rules: ⊦ # subarray(buf, m, n) = n; (s)%is-encoded-size: ⊦ is-encoded-nonempty(a, buf) → # buf = ENCODED_ELEM_SIZE; (forward) from specification encoding-fixed-size-nonempty