| m = LEB_SIZE, m0 = m2, m1 = n0, n = 0, ebm-vol-inv(avol), mapped-full?(avol, n0, m2), n0 + m2 ≤ # avol ⊦ ⟪err := ESUCCESS; buf := mkbuf(m0 * m); 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, n0, m2))) |
err = ESUCCESS, m = LEB_SIZE, m0 = m2, m1 = n0, n = 0, ebm-vol-inv(avol), mapped-full?(avol, n0, m2), n0 + m2 ≤ # avol ⊦ ⟪buf := mkbuf(m0 * m); 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, n0, m2)))