| nx0 = n0 + nx1, valid-indices(wlar1, nx0), valid-indices(wlar1, nx4), valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx4), # wlar1.mapIndices(nx4, λ wle. wle.ec:= n) ≤ n0 ⊦ nx0 = [], dups(nx0), dups(nx4), dups(nx4 + nx0) |
# wlar1.mapIndices(nx4, λ wle. wle.ec:= n) < # wlar1, n0 < # wlar1, valid-indices(wlar1, nx1), valid-indices(wlar1, nx4), valid-indices(wlar1.mapIndices(nx4, λ wle. wle.ec:= n), nx4), # wlar1.mapIndices(nx4, λ wle. wle.ec:= n) ≤ n0 ⊦ dups(nx1), dups(nx4), dups(nx4 + nx1), n0 ∈ nx1, n0 ∈ nx4
Used simplifier rules: ⊦ m < n → n ≠ 0; (s)%a: ⊦ ¬ dups(nx + nx0) → ¬ dups(nx) ∧ ¬ dups(nx0); (forward) from specification list-dup[nat-list-set]%fle-01: ⊦ m ≤ n ∧ n < n0 → m < n0; (forward) from specification nat%f: ⊦ m < n → n ≠ 0; (forward) from specification nat-basic% ⊦ ¬ n ∈ nx → (dups(n ' + nx) ↔ dups(nx)); (s)% ⊦ dups(nx + n ' + nx0) ↔ n ∈ nx ∨ n ∈ nx0 ∨ dups(nx + nx0); (ws)% ⊦ valid-indices(wlar, n ') ↔ n < # wlar; (s)%⊦ valid-indices(wlar, nx0 + nx1) ↔ valid-indices(wlar, nx0) ∧ valid-indices(wlar, nx1); (ws)%a: ⊦ (nx + nx0) + nx1 = nx + nx0 + nx1; from specification list[nat-list-set]% ⊦ n ' + nx ≠ []; (s)% ⊦ n + nx = n ' + nx; (s)