| ebm-vol-inv(avol), mapped-full?(avol, n, m), n + m ≤ # avol ⊦ ⟪persistence_io_read_lebs#(n, m, LEB_SIZE, avol; ; buf, err)⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → buf = lebs(avol, n, m))) |
m = LEB_SIZE, m0 = m2, m1 = n, ebm-vol-inv(avol), mapped-full?(avol, n, m2), n + m2 ≤ # avol ⊦ ⟪err := ESUCCESS; buf := mkbuf(m0 * m); let n = 0 in while err = ESUCCESS ∧ n < m0 do {/* (prepost-read-lebs : invariant n ≤ m0 ∧ # buf = m0 * LEB_SIZE ∧ m1 + m0 ≤ # avol ∧ ebm-vol-inv(avol) ∧ mapped-full?(avol, m1, m0) ∧ (err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → subarray(buf, 0, n * LEB_SIZE) = lebs(avol, m1, n)) wfbound m0 - n) */; ebm_avol_read#(m1 + n, 0, n * m, m, avol; buf; err); n := n + 1}⟫ ((err = ESUCCESS ∨ ⌊err⌋ ) ∧ (err = ESUCCESS → buf = lebs(avol, n, m2)))
Used simplifier rules: read-lebs: ⊦ ;