| ubi_erase_all#(VOLS, BFLIPSET, VTBLPNUM, SQNUM; WLARRAY, ERASEQ, APEBS; ERR) {ERR := ESUCCESS; while ERR = ESUCCESS ∧ ERASEQ ≠ [] do {/* (inv-erase-all : invariant ubi-cons(APEBS, VOLS, WLARRAY, ERASEQ, BFLIPSET, VTBLPNUM, SQNUM) ∧ ubi-io-inv(APEBS) ∧ id(APEBS, APEBS`, mapped-pebs(VOLS)) ∧ ERASEQ ⊆ ERASEQ` ∧ (ERR = ESUCCESS ∨ ⌊ERR⌋ ) wfbound (ERR = ESUCCESS ⊃ # ERASEQ;0)) */; ubi_erase_worker_helper#(ERASEQ.head.pnum; WLARRAY, APEBS; ERR); if ERR = ESUCCESS then ERASEQ := ERASEQ.tail} } |