| wlar[m, wl-entry(m0, used)][m1, wl-entry(m2, erasing)][n] = wl-entry(m3, stat), m1 + 1 < # wlar, m < # wlar, m1 < m, m1 < # wlar, ∀ n. n ∈ q ↔ n < m ∧ wlar[n].status = erasing ⊦ n ∈ q + eq-entry(m1, lref) ' ↔ ¬ m < n ∧ stat = erasing |
wlar[m, wl-entry(m0, used)][m1, wl-entry(m2, erasing)][n] = wl-entry(m3, stat), m1 < # wlar, m1 < m, m < # wlar, m1 + 1 < # wlar, ∀ n. n ∈ q ↔ n < m ∧ wlar[n].status = erasing ⊦ n ∈ q + eq-entry(m1, lref) ' ↔ ¬ m < n ∧ stat = erasing, n = m1
Used simplifier rules: ⊦ # wlar[n, wle] = # wlar; (s)% ⊦ m < n ↔ ¬ n ≤ m; (ss)% ⊦ m < n → (n ≤ m ↔ false); (s)%m < # wlar ⊦ wlar[m, wle][m] = wle; (s)% ⊦ wl-entry(m, stat) = wl-entry(m0, stat0) ↔ m = m0 ∧ stat = stat0; (ws)% ⊦ m < n → ¬ n < m; (s)% ⊦ n < n0 → (n0 < n ↔ false); (ss)% ⊦ 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: n = m1