| m0 + nx0 < m, indices-erasing(wlar, m0 + nx0), ∀ m, wlar, wle. nx0 < m ∧ indices-erasing(wlar, nx0) → indices-erasing(wlar[m, wle], nx0) ⊦ indices-erasing(wlar[m, wle], m0 + nx0) |
wlar[m0].status = erasing, nx0 < m, m0 < m, m0 < # wlar, indices-erasing(wlar, nx0), ∀ m, wlar, wle. nx0 < m ∧ indices-erasing(wlar, nx0) → indices-erasing(wlar[m, wle], nx0) ⊦ indices-erasing(wlar[m, wle], nx0)
Used simplifier rules: indices-erasing-rec: ⊦ indices-erasing(wlar, n ' + nx) ↔ n < # wlar ∧ wlar[n].status = erasing ∧ indices-erasing(wlar, nx);% ⊦ m < n → n ≠ 0; (s)%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ n < m → wlar[m, wle][n] = wlar[n]; (s)% ⊦ # wlar[n, wle] = # wlar; (s)% ⊦ m ' + nx < n ↔ m < n ∧ nx < n; (ws)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ n + nx = n ' + nx; (s)