| # buf = lptsize(# lpt, LEB_SIZE), buf0 = buf, lpt0 = lpt ⊦ ⟪let n = 0 in {err := ESUCCESS; while err = ESUCCESS ∧ n < # lpt do {/* (prepost-decode-lpt : invariant n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ # lpt = # lpt` ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n)) wfbound # lpt - n) */; let m = ? in decode_lprops#(n * ENCODED_LPROPS_SIZE, buf; lpt[n], m; err); n := n + 1}}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ # buf = # buf0 ∧ (err = ESUCCESS → is-encoded(lpt, buf) ∧ # lpt = # lpt0)) |
# buf = lptsize(# lpt, LEB_SIZE), buf0 = buf, lpt0 = lpt, n = 0 ⊦ ⟪err := ESUCCESS; while err = ESUCCESS ∧ n < # lpt do {/* (prepost-decode-lpt : invariant n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ # lpt = # lpt` ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n)) wfbound # lpt - n) */; let m = ? in decode_lprops#(n * ENCODED_LPROPS_SIZE, buf; lpt[n], m; err); n := n + 1}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ # buf = # buf0 ∧ (err = ESUCCESS → is-encoded(lpt, buf) ∧ # lpt = # lpt0))