| nx2.head < # wlar1.mapIndices(nx4, λ wle. wle.ec:= n), valid-indices(wlar1, nx2), valid-indices(wlar1, nx4), valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx4) ⊦ nx2 = [], dups(nx2), dups(nx4), dups(nx4 + nx2), ∃ nx. nx4 + nx2 = nx + nx2.tail ∧ wlar1.mapIndices(nx4, λ wle. wle.ec:= n)[nx2.head, wlar1.mapIndices(nx4, λ wle. wle.ec:= n)[nx2.head].ec:= n] = wlar1.mapIndices(nx, λ wle. wle.ec:= n) ∧ valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx) |
nx2 = n0 + nx0, n0 < # wlar1.mapIndices(nx4, λ wle. wle.ec:= n), valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx4), valid-indices(wlar1, nx4), valid-indices(wlar1, nx2) ⊦ nx2 = [], dups(nx4 + nx2), dups(nx4), dups(nx2), ∃ nx. nx4 + nx2 = nx + nx0 ∧ wlar1.mapIndices(nx4, λ wle. wle.ec:= n)[n0, wlar1.mapIndices(nx4, λ wle. wle.ec:= n)[n0].ec:= n] = wlar1.mapIndices(nx, λ wle. wle.ec:= n) ∧ valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx)
Used simplifier rules: nx ≠ [] ⊦ n = nx.head ∧ nx0 = nx.tail ↔ nx = n + nx0; (elim) Used terms: nx2, n0, nx0