| ⟪decode_lprops#(n0 * ENCODED_LPROPS_SIZE, buf; lp, m; err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → lp0 = lp ∧ m = ENCODED_LPROPS_SIZE)), ⟨decode_lprops#(n0 * ENCODED_LPROPS_SIZE, buf; lp, m; err)⟩ (lp = lp0 ∧ m = ENCODED_LPROPS_SIZE ∧ err = ESUCCESS), # buf = lptsize(n1 + n0, LEB_SIZE), # lpt1 = n1 + n0, # lpt2 = n1 + n0, lp = lpt1[n0], n1 ≠ 0, is-encoded(lp0, subarray(buf, n0 * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), is-encoded(lpt1, buf, n0), n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf, ¬ is-encoded(lpt1[n0, lp0], buf, n0 + 1) ⊦ |
# lpt2 = n1 + n0, # lpt1 = n1 + n0, # buf = lptsize(n1 + n0, LEB_SIZE), lp = lpt1[n0], is-encoded(lpt1, buf, n0), is-encoded(lp0, subarray(buf, n0 * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)), n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf ⊦ n1 = 0, is-encoded(lpt1[n0, lp0], buf, n0 + 1)