| # buf = lptsize(# lpt, LEB_SIZE), # lpt = n1 + n0, n0 < # lpt, is-encoded(lpt, buf, n0), n0 ≤ # lpt ⊦ ⟪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 < n1 + n) |
# lpt = n1 + n0, # buf = lptsize(n1 + n0, LEB_SIZE), n1 ≠ 0, 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 < n1 + n)
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m < m + n ↔ n ≠ 0; (s)% ⊦ m < n → n ≠ 0; (s)%lf-01: ⊦ m < n ∧ n = n0 → m < n0; (forward) from specification nat-basic%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ m < n → m ≤ n; (s)