| # buf0 = lptsize(# lpt, LEB_SIZE), # buf0 = # buf1, subarray(buf0, 0, n * ENCODED_LPROPS_SIZE) = subarray(buf1, 0, n * ENCODED_LPROPS_SIZE), n < # lpt, is-encoded(lpt[n], subarray(buf1, n * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), n * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf1, ∀ m. m < # lpt ∧ m < n → is-encoded(lpt[m], subarray(buf0, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ⊦ # buf1 = align↑(# lpt * ENCODED_LPROPS_SIZE, LEB_SIZE) ∧ (m < # lpt ∧ ¬ n < m → is-encoded(lpt[m], subarray(buf1, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE))) |
# buf1 = align↑(# lpt * ENCODED_LPROPS_SIZE, LEB_SIZE), # buf0 = # buf1, subarray(buf0, 0, n * ENCODED_LPROPS_SIZE) = subarray(buf1, 0, n * ENCODED_LPROPS_SIZE), n < # lpt, m < # lpt, is-encoded(lpt[n], subarray(buf1, n * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), n * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf1, m ≤ n, ∀ m. m < # lpt ∧ m < n → is-encoded(lpt[m], subarray(buf0, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ⊦ is-encoded(lpt[m], subarray(buf1, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE))
Used simplifier rules: lpt-size: ⊦ lptsize(mainareasize, n) = align↑(mainareasize * ENCODED_LPROPS_SIZE, n);%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat% ⊦ m < n ↔ ¬ n ≤ m; (ss)