| # lpt = # lpt2, # buf = lptsize(# lpt, LEB_SIZE), # buf = lptsize(# lpt2, LEB_SIZE), buf0 = buf, err = ESUCCESS, err0 = ESUCCESS, lpt = lpt1, lpt0 = lpt2, n = n0, n1 = 0, n < # lpt, n ≤ # lpt, err = ESUCCESS → is-encoded(lpt, buf, n), err = ESUCCESS ∨ ⌊err⌋ ⊦ ⟪decode_lprops#(n * ENCODED_LPROPS_SIZE, buf; lpt[n], m; err); n := n + 1⟫ ( ( n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ # lpt = # lpt2 ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n))) ∧ # lpt - n < # lpt1 - n0) |
# lpt1 = # lpt2, # buf = lptsize(# lpt2, LEB_SIZE), n0 < # lpt2, 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 < (# lpt2 - n0) + n)
Used simplifier rules: n0 ≤ n ⊦ n - n0 < m ↔ n < m + n0; (s)% ⊦ m ≤ n → (n < m ↔ false); (s)% ⊦ m < n → n ≠ 0; (s)%fle: ⊦ m < n ∧ n ≤ n0 → m < n0; (forward) from specification nat%lf-02: ⊦ m < n ∧ m = n0 → n0 < n; (forward) from specification nat-basic%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 ↔ ¬ n < m; (ss)% ⊦ m < n → m ≤ n; (s)