| nx1 = nx, nx3 = nx, wlar0 = wlar1, nx0.head < # wlar, valid-indices(wlar1, nx), ∃ nx. (nx3 = nx + nx0 ∧ wlar = wlar1.mapIndices(nx, λ wle. wle.ec:= n) ∧ valid-indices(wlar, nx) ∧ ¬ dups(nx3)) ∧ nx0 = nx2 ⊦ ⟪nx := nx0.tail⟫ ∃ nx1. ( nx3 = nx1 + nx ∧ wlar[nx0.head, wlar[nx0.head].ec:= n] = wlar1.mapIndices(nx1, λ wle. wle.ec:= n) ∧ valid-indices(wlar[nx0.head, wlar[nx0.head].ec:= n], nx1) ∧ ¬ dups(nx3)) ∧ # nx < # nx2, nx0 = [], dups(nx) |
nx1 = nx, nx3 = nx, wlar0 = wlar1, nx0.head < # wlar, valid-indices(wlar1, nx), ∃ nx. (nx3 = nx + nx0 ∧ wlar = wlar1.mapIndices(nx, λ wle. wle.ec:= n) ∧ valid-indices(wlar, nx) ∧ ¬ dups(nx3)) ∧ nx0 = nx2 ⊦ nx0 = [], dups(nx), ∃ nx1. ( nx3 = nx1 + nx0.tail ∧ wlar[nx0.head, wlar[nx0.head].ec:= n] = wlar1.mapIndices(nx1, λ wle. wle.ec:= n) ∧ valid-indices(wlar[nx0.head, wlar[nx0.head].ec:= n], nx1) ∧ ¬ dups(nx3)) ∧ # nx0.tail < # nx2