| wlar[n] = wl-entry(m0, stat), wlar[n, wl-entry(m1, erasing)][n0] = wl-entry(m, stat0), n < # wlar, ∀ n. n ∈ q ↔ n < # wlar ∧ wlar[n].status = erasing ⊦ n0 ∈ q + eq-entry(n, lref) ' ↔ n0 < # wlar ∧ stat0 = erasing, stat = erasing |
wlar[n, wl-entry(m1, erasing)][n0] = wl-entry(m, stat0), wlar[n] = wl-entry(m0, stat), n < # wlar, ∀ n. n ∈ q ↔ n < # wlar ∧ wlar[n].status = erasing ⊦ n0 ∈ q + eq-entry(n, lref) ' ↔ n0 < # wlar ∧ stat0 = erasing, n0 = n, stat = erasing
Used simplifier rules: ⊦ m < # wlar → wlar[m, wle][m] = wle; (s)% ⊦ wl-entry(m, stat) = wl-entry(m0, stat0) ↔ m = m0 ∧ stat = stat0; (ws)% ⊦ n ∈ q + eq-entry(n0, lref) ' ↔ n ∈ q ∨ n = n0; (ss)%a: ⊦ (q + q0) + q1 = q + q0 + q1; from specification list[erasequeue-base] Used formulas: n0 = n