| # buf = lptsize(# lpt, LEB_SIZE), buf0 = mkbuf(lptsize(# lpt, m0)), err = ESUCCESS, err0 = ESUCCESS, m0 = LEB_SIZE, n = n0, n1 = 0, n < # lpt, n ≤ # lpt, err = ESUCCESS → is-encoded(lpt, buf, n), err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪encode_lprops#(lpt[n], n * ENCODED_LPROPS_SIZE; buf, m; err); n := n + 1⟫ ( (n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n))) ∧ # lpt - n < # lpt - n0) |
# buf = lptsize(# lpt, LEB_SIZE), n0 < # lpt, is-encoded(lpt, buf, n0) ⊦ ⟪encode_lprops#(lpt[n0], n0 * ENCODED_LPROPS_SIZE; buf, m; err); n := n0 + 1⟫ ( n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n)) ∧ # lpt < (# lpt - n0) + n)
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic%n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m ≤ n ↔ ¬ n < m; (ss)% ⊦ m < n → m ≤ n; (s)