| # buf = n0 + n + encoding-size(a), # buf1 = # buf, align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = n1 + encoding-size(a), subarray(buf1, 0, n) = subarray(buf, 0, n), subarray(buf1, n + encoding-size(a), n0) = subarray(buf, n + encoding-size(a), n0), is-encoded(a, subarray(buf1, n, encoding-size(a))), n + encoding-size(a) ≤ # buf, n + align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) ≤ # buf, encoding-size(a) ≤ align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) ⊦ subarray(buf1, n, align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT)) = subarray(buf1, n, encoding-size(a)) + subarray(buf1, n + encoding-size(a), n1) ∧ align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = size-aligned(a, ENCODED_ELEM_ALIGNMENT) |
# buf1 = # buf, # buf = n0 + n + encoding-size(a), align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = n1 + encoding-size(a), subarray(buf1, n + encoding-size(a), n0) = subarray(buf, n + encoding-size(a), n0), subarray(buf1, 0, n) = subarray(buf, 0, n), is-encoded(a, subarray(buf1, n, encoding-size(a))), n + n1 + encoding-size(a) ≤ # buf, n + encoding-size(a) ≤ # buf ⊦ subarray(buf1, n, n1 + encoding-size(a)) = subarray(buf1, n, encoding-size(a)) + subarray(buf1, n + encoding-size(a), n1) ∧ n1 + encoding-size(a) = size-aligned(a, ENCODED_ELEM_ALIGNMENT)
Used simplifier rules: m ≠ 0 ⊦ n0 ≤ align↑(n0, m); (s)% ⊦ ENCODED_ELEM_ALIGNMENT ≠ 0; (s)