| wlar[m] = wl-entry(m2, free), m < # wlar, n = m2 ∨ n ∈ free-ecs(wlar, m) ⊦ #(free-ecs(wlar, m) ++ m2) = 0, n ∈ free-ecs(wlar, m), ∃ m0. ¬ m < m0 ∧ wlar[m0].status = free ∧ wlar[m0].ec = n, ∃ m1. m1 < m ∧ wlar[m1].status = free ∧ wlar[m1].ec = n |
wlar[m] = wl-entry(m2, free), m < # wlar ⊦ m2 ∈ free-ecs(wlar, m), ∃ m0. ¬ m < m0 ∧ wlar[m0].status = free ∧ wlar[m0].ec = m2, ∃ m1. m1 < m ∧ wlar[m1].status = free ∧ wlar[m1].ec = m2
Used simplifier rules: c: ⊦ m + n = n + m; from specification nat-basic%a: ⊦ (m + n0) + n1 = m + n0 + n1; from specification nat-basic% ⊦ m + 1 ≠ 0; (s)% ⊦ ¬ n ∈ ns → #(ns ++ n) = # ns + 1; (s)