| # apebs = # wlar, abs(avols, apebs, vols, q), bflipset-cons(bflipset, wlar), ebm-cons(avols), ubi-io-inv(apebs), unique-sqns(apebs), valid-ebatbl(apebs, wlar, vols, vtblpnum), valid-eraseq(q), valid-eraseq(wlar, q), valid-eraseq(apebs, q), valid-global-sqn(apebs, sqnum), valid-vtbl(apebs, vols, wlar, vtblpnum), valid-wl(apebs, wlar), ¬ VTBL_VOLID ∈ vols ⊦ ⟪ubi_erase_worker#(; wlar, q, apebs)⟫ ⟨skip⟩ abs(avols, apebs, vols, q) |
# apebs = # wlar, abs(avols, apebs, vols, q), bflipset-cons(bflipset, wlar), ebm-cons(avols), ubi-io-inv(apebs), unique-sqns(apebs), valid-ebatbl(apebs, wlar, vols, vtblpnum), valid-eraseq(apebs, q), valid-eraseq(wlar, q), valid-eraseq(q), valid-global-sqn(apebs, sqnum), valid-vtbl(apebs, vols, wlar, vtblpnum), valid-wl(apebs, wlar) ⊦ ⟪if q ≠ [] then let eqent = q.head, err = ? in {ubi_erase_worker_helper#(eqent.pnum; wlar, apebs; err); if err = ESUCCESS then q := q.tail}⟫ ⟨skip⟩ abs(avols, apebs, vols, q), VTBL_VOLID ∈ vols
Used simplifier rules: ubi_erase_worker#(; WLARRAY, ERASEQ, APEBS) {if ERASEQ ≠ [] then let EQENT = ERASEQ.head, ERR = ? in {ubi_erase_worker_helper#(EQENT.pnum; WLARRAY, APEBS; ERR); if ERR = ESUCCESS then ERASEQ := ERASEQ.tail} };