| is-encoded(a, subarray(buf, n, encoding-size(a))), n + encoding-size(a) ≤ # buf, n + align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) ≤ # buf ⊦ subarray(buf, n, align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT)) = subarray(buf, n, encoding-size(a)) + subarray(buf, n + encoding-size(a), align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) - encoding-size(a)) ∧ align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = size-aligned(a, ENCODED_ELEM_ALIGNMENT) |
align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = n0 + encoding-size(a), is-encoded(a, subarray(buf, n, encoding-size(a))), n + align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) ≤ # buf, n + encoding-size(a) ≤ # buf, encoding-size(a) ≤ align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) ⊦ subarray(buf, n, align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT)) = subarray(buf, n, encoding-size(a)) + subarray(buf, n + encoding-size(a), n0) ∧ align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT) = size-aligned(a, ENCODED_ELEM_ALIGNMENT)
Used simplifier rules: ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ ENCODED_ELEM_ALIGNMENT ≠ 0; (s)%m ≠ 0 ⊦ align↑(n, m) < n ↔ false; (s)%n ≤ m ⊦ n0 = m - n ↔ m = n0 + n; (elim) Used terms: align↑(encoding-size(a), ENCODED_ELEM_ALIGNMENT), encoding-size(a), n0