| # buf = lptsize(# lpt2, LEB_SIZE), # lpt1 = # lpt2, # lpt2 = n1 + n0, n0 < # lpt2, is-encoded(lpt1, buf, n0), n0 ≤ # lpt2 ⊦ ⟪decode_lprops#(n0 * ENCODED_LPROPS_SIZE, buf; lpt1[n0], m; err); n := n0 + 1⟫ ( n ≤ # lpt1 ∧ # buf = lptsize(# lpt1, LEB_SIZE) ∧ # lpt1 = # lpt2 ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt1, buf, n)) ∧ # lpt1 < n1 + n) |
# lpt2 = n1 + n0, # lpt1 = n1 + n0, # buf = lptsize(n1 + n0, LEB_SIZE), n1 ≠ 0, is-encoded(lpt1, buf, n0) ⊦ ⟪decode_lprops#(n0 * ENCODED_LPROPS_SIZE, buf; lpt1[n0], m; err); n := n0 + 1⟫ ( n ≤ # lpt1 ∧ # buf = lptsize(# lpt1, LEB_SIZE) ∧ # lpt1 = # lpt2 ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt1, buf, n)) ∧ # lpt1 < 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)