| # buf = lptsize(n1 + n0, LEB_SIZE), # lpt = n1 + n0, buf1 = buf, is-encoded(lpt, buf, n0), n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf ⊦ ∀ buf, m, err. (err = ESUCCESS ∨ ⌊err⌋ ) ∧ # buf = # buf1 ∧ subarray(buf, 0, n0 * ENCODED_LPROPS_SIZE) = subarray(buf1, 0, n0 * ENCODED_LPROPS_SIZE) ∧ subarray(buf, n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE, # buf - n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE) = subarray(buf1, n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE, # buf - n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE) ∧ (err = ESUCCESS → is-encoded(lpt[n0], subarray(buf, n0 * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ∧ m = ENCODED_LPROPS_SIZE) → ⟪n := n0 + 1⟫ ( n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n)) ∧ # lpt < n1 + n), n1 = 0 |
# buf0 = # buf, # lpt = n1 + n0, # buf = lptsize(n1 + n0, LEB_SIZE), subarray(buf0, 0, n0 * ENCODED_LPROPS_SIZE) = subarray(buf, 0, n0 * ENCODED_LPROPS_SIZE), subarray(buf0, n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE, # buf - n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE) = subarray(buf, n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE, # buf - n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE), n1 ≠ 0, is-encoded(lpt, buf, n0), n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf, err = ESUCCESS → is-encoded(lpt[n0], subarray(buf0, n0 * ENCODED_LPROPS_SIZE, ENCODED_LPROPS_SIZE)) ∧ m = ENCODED_LPROPS_SIZE, err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪n := n0 + 1⟫ ( n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf0, n)) ∧ # lpt < n1 + n)