Skip to content

Commit 5315a73

Browse files
chore: protect Finset.ext_iff (#15698)
This replaces the manual implementation by one generated by the ext attribute for consistency.
1 parent 5dccde4 commit 5315a73

File tree

6 files changed

+16
-18
lines changed

6 files changed

+16
-18
lines changed

Mathlib/Algebra/BigOperators/Ring.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -168,7 +168,7 @@ theorem prod_add (f g : ι → α) (s : Finset ι) :
168168
(by simp)
169169
(by simp [Classical.em])
170170
(by simp_rw [mem_filter, Function.funext_iff, eq_iff_iff, mem_pi, mem_insert]; tauto)
171-
(by simp_rw [ext_iff, @mem_filter _ _ (id _), mem_powerset]; tauto)
171+
(by simp_rw [Finset.ext_iff, @mem_filter _ _ (id _), mem_powerset]; tauto)
172172
(fun a _ ↦ by
173173
simp only [prod_ite, filter_attach', prod_map, Function.Embedding.coeFn_mk,
174174
Subtype.map_coe, id_eq, prod_attach, filter_congr_decidable]

Mathlib/Data/Finset/Basic.lean

Lines changed: 10 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -214,17 +214,13 @@ instance decidableMem' [DecidableEq α] (a : α) (s : Finset α) : Decidable (a
214214

215215
/-! ### extensionality -/
216216

217-
218-
theorem ext_iff {s₁ s₂ : Finset α} : s₁ = s₂ ↔ ∀ a, a ∈ s₁ ↔ a ∈ s₂ :=
219-
val_inj.symm.trans <| s₁.nodup.ext s₂.nodup
220-
221217
@[ext]
222-
theorem ext {s₁ s₂ : Finset α} : (∀ a, a ∈ s₁ ↔ a ∈ s₂) s₁ = s₂ :=
223-
ext_iff.2
218+
theorem ext {s₁ s₂ : Finset α} (h : ∀ a, a ∈ s₁ ↔ a ∈ s₂) : s₁ = s₂ :=
219+
(val_inj.symm.trans <| s₁.nodup.ext s₂.nodup).mpr h
224220

225221
@[simp, norm_cast]
226222
theorem coe_inj {s₁ s₂ : Finset α} : (s₁ : Set α) = s₂ ↔ s₁ = s₂ :=
227-
Set.ext_iff.trans ext_iff.symm
223+
Set.ext_iff.trans Finset.ext_iff.symm
228224

229225
theorem coe_injective {α} : Injective ((↑) : Finset α → Set α) := fun _s _t => coe_inj.1
230226

@@ -1764,11 +1760,11 @@ theorem inter_sdiff_self (s₁ s₂ : Finset α) : s₁ ∩ (s₂ \ s₁) = ∅
17641760

17651761
instance : GeneralizedBooleanAlgebra (Finset α) :=
17661762
{ sup_inf_sdiff := fun x y => by
1767-
simp only [ext_iff, mem_union, mem_sdiff, inf_eq_inter, sup_eq_union, mem_inter,
1763+
simp only [Finset.ext_iff, mem_union, mem_sdiff, inf_eq_inter, sup_eq_union, mem_inter,
17681764
← and_or_left, em, and_true, implies_true]
17691765
inf_inf_sdiff := fun x y => by
1770-
simp only [ext_iff, inter_sdiff_self, inter_empty, inter_assoc, false_iff_iff, inf_eq_inter,
1771-
not_mem_empty, bot_eq_empty, not_false_iff, implies_true] }
1766+
simp only [Finset.ext_iff, inter_sdiff_self, inter_empty, inter_assoc, false_iff_iff,
1767+
inf_eq_inter, not_mem_empty, bot_eq_empty, not_false_iff, implies_true] }
17721768

17731769
theorem not_mem_sdiff_of_mem_right (h : a ∈ t) : a ∉ s \ t := by
17741770
simp only [mem_sdiff, h, not_true, not_false_iff, and_false_iff]
@@ -2493,9 +2489,11 @@ theorem filter_union_filter_neg_eq [∀ x, Decidable (¬p x)] (s : Finset α) :
24932489

24942490
end
24952491

2496-
lemma filter_inj : s.filter p = t.filter p ↔ ∀ ⦃a⦄, p a → (a ∈ s ↔ a ∈ t) := by simp [ext_iff]
2492+
lemma filter_inj : s.filter p = t.filter p ↔ ∀ ⦃a⦄, p a → (a ∈ s ↔ a ∈ t) := by
2493+
simp [Finset.ext_iff]
24972494

2498-
lemma filter_inj' : s.filter p = s.filter q ↔ ∀ ⦃a⦄, a ∈ s → (p a ↔ q a) := by simp [ext_iff]
2495+
lemma filter_inj' : s.filter p = s.filter q ↔ ∀ ⦃a⦄, a ∈ s → (p a ↔ q a) := by
2496+
simp [Finset.ext_iff]
24992497

25002498
end Filter
25012499

Mathlib/Data/Finset/Image.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -633,7 +633,7 @@ theorem mem_subtype {p : α → Prop} [DecidablePred p] {s : Finset α} :
633633
| ⟨a, ha⟩ => by simp [Finset.subtype, ha]
634634

635635
theorem subtype_eq_empty {p : α → Prop} [DecidablePred p] {s : Finset α} :
636-
s.subtype p = ∅ ↔ ∀ x, p x → x ∉ s := by simp [ext_iff, Subtype.forall, Subtype.coe_mk]
636+
s.subtype p = ∅ ↔ ∀ x, p x → x ∉ s := by simp [Finset.ext_iff, Subtype.forall, Subtype.coe_mk]
637637

638638
@[mono]
639639
theorem subtype_mono {p : α → Prop} [DecidablePred p] : Monotone (Finset.subtype p) :=

Mathlib/Data/Finset/Sum.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,7 @@ theorem inr_mem_disjSum : inr b ∈ s.disjSum t ↔ b ∈ t :=
6868
Multiset.inr_mem_disjSum
6969

7070
@[simp]
71-
theorem disjSum_eq_empty : s.disjSum t = ∅ ↔ s = ∅ ∧ t = ∅ := by simp [ext_iff]
71+
theorem disjSum_eq_empty : s.disjSum t = ∅ ↔ s = ∅ ∧ t = ∅ := by simp [Finset.ext_iff]
7272

7373
theorem disjSum_mono (hs : s₁ ⊆ s₂) (ht : t₁ ⊆ t₂) : s₁.disjSum t₁ ⊆ s₂.disjSum t₂ :=
7474
val_le_iff.1 <| Multiset.disjSum_mono (val_le_iff.2 hs) (val_le_iff.2 ht)

Mathlib/Data/Fintype/Basic.lean

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ theorem mem_univ (x : α) : x ∈ (univ : Finset α) :=
7676
theorem mem_univ_val : ∀ x, x ∈ (univ : Finset α).1 :=
7777
mem_univ
7878

79-
theorem eq_univ_iff_forall : s = univ ↔ ∀ x, x ∈ s := by simp [ext_iff]
79+
theorem eq_univ_iff_forall : s = univ ↔ ∀ x, x ∈ s := by simp [Finset.ext_iff]
8080

8181
theorem eq_univ_of_forall : (∀ x, x ∈ s) → s = univ :=
8282
eq_univ_iff_forall.2
@@ -348,7 +348,7 @@ namespace Finset
348348
variable {s t : Finset α}
349349

350350
@[simp] lemma subtype_eq_univ {p : α → Prop} [DecidablePred p] [Fintype {a // p a}] :
351-
s.subtype p = univ ↔ ∀ ⦃a⦄, p a → a ∈ s := by simp [ext_iff]
351+
s.subtype p = univ ↔ ∀ ⦃a⦄, p a → a ∈ s := by simp [Finset.ext_iff]
352352

353353
@[simp] lemma subtype_univ [Fintype α] (p : α → Prop) [DecidablePred p] [Fintype {a // p a}] :
354354
univ.subtype p = univ := by simp

Mathlib/Order/Interval/Finset/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -844,7 +844,7 @@ theorem eq_of_mem_uIcc_of_mem_uIcc' : b ∈ [[a, c]] → c ∈ [[a, b]] → b =
844844
exact Set.eq_of_mem_uIcc_of_mem_uIcc'
845845

846846
theorem uIcc_injective_right (a : α) : Injective fun b => [[b, a]] := fun b c h => by
847-
rw [ext_iff] at h
847+
rw [Finset.ext_iff] at h
848848
exact eq_of_mem_uIcc_of_mem_uIcc ((h _).1 left_mem_uIcc) ((h _).2 left_mem_uIcc)
849849

850850
theorem uIcc_injective_left (a : α) : Injective (uIcc a) := by

0 commit comments

Comments
 (0)