| # lpt = n1 + n0, # buf = lptsize(n1 + n0, LEB_SIZE), buf1 = buf, n1 ≠ 0, is-encoded(lpt, buf, n0), n0 * ENCODED_LPROPS_SIZE + ENCODED_LPROPS_SIZE ≤ # buf ⊦ [encode_lprops#(lpt[n0], n0 * ENCODED_LPROPS_SIZE; 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)) |
# 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