| wlar[n0] = wl-entry(m0, stat), n0 < # wlar, n0 < m, n0 < # wlar[m, wle], ∀ 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, wle], n0) ++ wlar[m, wle][n0].ec = ecs(wlar, n0) ++ m0 |
wlar[n0] = wl-entry(m0, stat), n0 < # wlar, n0 < m, ∀ 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, wle], n0) = ecs(wlar, n0)
Used simplifier rules: ⊦ bag ++ n = bag2 ++ n ↔ bag = bag2; (s)% ⊦ wl-entry(m, stat).ec = m; (s)% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ # wlar[n, wle] = # wlar; (s)% ⊦ n < m → wlar[m, wle][n] = wlar[n]; (s)