| n < # ar, valid-indices(ar, ar.indicesWhere(φ, m)), m ≤ # ar ⊦ (n ∈ ar.indicesWhere(φ, m) ⊃ f(ar[n]);ar[n]) = (n < m ∧ φ(ar[n]) ⊃ f(ar[n]);ar[n]), dups(ar.indicesWhere(φ, m)) |
⊦ valid-indices(ar, nx) ↔ nx < # ar
⊦ n ≤ # ar → ¬ dups(ar.indicesWhere(φ, n))
n < # ar, ar.indicesWhere(φ, m) < # ar, m ≤ # ar ⊦ (n ∈ ar.indicesWhere(φ, m) ⊃ f(ar[n]);ar[n]) = (n < m ∧ φ(ar[n]) ⊃ f(ar[n]);ar[n])
Used simplifier rules: valid-indices: ⊦ valid-indices(ar, nx) ↔ nx < # ar;%valid-indices-nodups-h: ⊦ n ≤ # ar → ¬ dups(ar.indicesWhere(φ, n));