| indices-erasing(wlar0, m + nx0), valid-eraseq(wlar0, q0), valid-eraseq(wlar1, q1), q0 ⊆ q1, ∀ wlar0, wlar1, q1, q0. indices-erasing(wlar0, nx0) ∧ valid-eraseq(wlar1, q1) ∧ valid-eraseq(wlar0, q0) ∧ q0 ⊆ q1 → indices-erasing(wlar1, nx0) ⊦ indices-erasing(wlar1, m + nx0) |
wlar0[m].status = erasing, m < # wlar0, indices-erasing(wlar0, nx0), valid-eraseq(wlar0, q0), valid-eraseq(wlar1, q1), q0 ⊆ q1, ∀ wlar0, wlar1, q1, q0. indices-erasing(wlar0, nx0) ∧ valid-eraseq(wlar1, q1) ∧ valid-eraseq(wlar0, q0) ∧ q0 ⊆ q1 → indices-erasing(wlar1, nx0) ⊦ m < # wlar1 ∧ wlar1[m].status = erasing ∧ indices-erasing(wlar1, 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%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ n + nx = n ' + nx; (s)