| # buf = align↑(# lpt1 * ENCODED_LPROPS_SIZE, LEB_SIZE), # lpt0 = # lpt1, m < # lpt1, m < n, n ≤ # lpt1, m < # lpt1 ∧ m < n → is-encoded(lpt0[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), ∀ n0. n0 < n → lpt0[n0] = lpt1[n0] ⊦ is-encoded(lpt1[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) |
# buf = align↑(# lpt1 * ENCODED_LPROPS_SIZE, LEB_SIZE), # lpt0 = # lpt1, m < # lpt1, m < n, is-encoded(lpt0[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), n ≤ # lpt1, ∀ n0. n0 < n → lpt0[n0] = lpt1[n0] ⊦ lpt0[m] = lpt1[m]
Used simplifier rules: ⊦ # subarray(buf, m, n) = n; (s)%is-encoded-size: ⊦ is-encoded(lp, buf) → # buf = ENCODED_LPROPS_SIZE; (forward) from specification encoding-fixed-size[encoding-lprops]% ⊦ is-encoded(lp, buf) → (is-encoded(lp0, buf) ↔ lp = lp0); (s)