| # lpt0 = # lpt1, # buf = align↑(# lpt1 * ENCODED_LPROPS_SIZE, LEB_SIZE), n ≤ # lpt1, ∀ m. m < # lpt1 ∧ m < n → is-encoded(lpt0[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), ∀ m. m < # lpt1 ∧ m < n → is-encoded(lpt1[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ⊦ ∀ n0. n0 < n → lpt0[n0] = lpt1[n0] |
# buf = align↑(# lpt1 * ENCODED_LPROPS_SIZE, LEB_SIZE), # lpt0 = # lpt1, n0 < n, n0 < # lpt1, n ≤ # lpt1, ∀ m. m < # lpt1 ∧ m < n → is-encoded(lpt1[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), ∀ m. m < # lpt1 ∧ m < n → is-encoded(lpt0[m], subarray(buf, m * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ⊦ lpt0[n0] = lpt1[n0]
Used simplifier rules: lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic