| wlar[m0].status = free, wlar[m0].ec ∈ free-ecs(wlar, m) ↔ (∃ m1. m1 < m ∧ wlar[m1].status = free ∧ wlar[m1].ec = wlar[m0].ec), wlar[m] = wl-entry(m2, stat), m < # wlar, m0 < # wlar, m0 ≤ m ⊦ wlar[m0].ec ∈ (stat = free ⊃ free-ecs(wlar, m) ++ m2;free-ecs(wlar, m)) |
m3 ∈ free-ecs(wlar, m) ↔ (∃ m1. m1 < m ∧ wlar[m1].status = free ∧ wlar[m1].ec = m3), wlar[m] = wl-entry(m2, stat), wlar[m0] = wl-entry(m3, stat0), stat0 = free, m0 < # wlar, m < # wlar, m0 ≤ m ⊦ m3 ∈ (stat = free ⊃ free-ecs(wlar, m) ++ m2;free-ecs(wlar, m))
Used simplifier rules: ⊦ m = wle.ec ∧ stat = wle.status ↔ wle = wl-entry(m, stat); (elim) Used terms: wlar[m0], m3, stat0