| ⊦ ⟪persistence_io_encode_lpt#(lpt, LEB_SIZE; ; buf, err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf) ∧ # buf = lptsize(# lpt, LEB_SIZE))) |
m0 = LEB_SIZE ⊦ ⟪err := ESUCCESS; buf := mkbuf(lptsize(# lpt, m0)); let n = 0, m = ? in while err = ESUCCESS ∧ n < # lpt do {/* (prepost-encode-lpt : invariant n ≤ # lpt ∧ # buf = lptsize(# lpt, LEB_SIZE) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf, n)) wfbound # lpt - n) */; encode_lprops#(lpt[n], n * ENCODED_LPROPS_SIZE; buf, m; err); n := n + 1}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → is-encoded(lpt, buf) ∧ # buf = lptsize(# lpt, LEB_SIZE)))
Used simplifier rules: encode-lpt: ⊦ ;