| wlar[m, wl-entry(m0, stat)][n0] = wl-entry(m1, stat2), wlar[n0] = wl-entry(m2, stat0), wlar[m] = wl-entry(m2, stat1), n0 = m, m < # wlar, n0 < # wlar, m ≤ n0, ∀ wlar, m, wle. n0 ≤ # wlar → ecs(wlar[m, wle], n0) = (m < n0 ⊃ (ecs(wlar, n0) -- wlar[m].ec) ++ wle.ec;ecs(wlar, n0)) ⊦ ecs(wlar[m, wl-entry(m0, stat)], n0) ++ m1 = ecs(wlar, n0) ++ m0 |
wlar[m] = wl-entry(m2, stat1), m < # wlar, ∀ wlar, m0, wle. m ≤ # wlar → ecs(wlar[m0, wle], m) = (m0 < m ⊃ (ecs(wlar, m) -- wlar[m0].ec) ++ wle.ec;ecs(wlar, m)) ⊦ ecs(wlar[m, wl-entry(m1, stat)], m) = ecs(wlar, m)
Used simplifier rules: ⊦ bag ++ n = bag2 ++ n ↔ bag = bag2; (s)% ⊦ m ≤ m; (s)% ⊦ wl-entry(m, stat) = wl-entry(m0, stat0) ↔ m = m0 ∧ stat = stat0; (ws)% ⊦ m < # wlar → wlar[m, wle][m] = wle; (s)