Skip to content

Commit 6cedfc2

Browse files
committed
Review
1 parent 1b0ffa3 commit 6cedfc2

2 files changed

Lines changed: 20 additions & 12 deletions

File tree

Mathlib/Data/Set/Finite/Basic.lean

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -374,11 +374,19 @@ lemma «forall» {p : Finset α → Prop} :
374374
mp h s hs := h _
375375
mpr h s := by simpa using h s s.finite_toSet
376376

377+
theorem forall_iff_forall_finite {p : Set α → Prop} :
378+
(∀ s : Finset α, p s) ↔ ∀ s : Set α, s.Finite → p s := by
379+
simp [Finset.forall]
380+
377381
lemma «exists» {p : Finset α → Prop} :
378382
(∃ s, p s) ↔ ∃ (s : Set α) (hs : s.Finite), p hs.toFinset where
379383
mp := fun ⟨s, hs⟩ ↦ ⟨s, s.finite_toSet, by simpa⟩
380384
mpr := fun ⟨s, hs, hs'⟩ ↦ ⟨hs.toFinset, hs'⟩
381385

386+
theorem exists_iff_exists_finite {p : Set α → Prop} :
387+
(∃ s : Finset α, p s) ↔ ∃ s : Set α, p s ∧ s.Finite := by
388+
simp [Finset.exists, and_comm]
389+
382390
lemma mem_range_coe_iff {s : Set α} : s ∈ Set.range ((↑) : Finset α → Set α) ↔ s.Finite where
383391
mp := by
384392
rintro ⟨t, rfl⟩

Mathlib/GroupTheory/Finiteness.lean

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,8 @@ This generalizes and will eventually replace the four existing definitions
6565
class IsMulFG : Prop where
6666
fg_top : ∃ S : Finset M, Subsemigroup.closure (S : Set M) = ⊤
6767

68+
attribute [to_additive existing] isMulFG_def
69+
6870
variable {M N}
6971

7072
-- We give this instance low priority to avoid slow typeclass resolutions.
@@ -101,9 +103,8 @@ theorem isMulFG_iff : IsMulFG M ↔ ∃ S : Finset M, Submonoid.closure (S : Set
101103

102104
@[to_additive]
103105
theorem isMulFG_iff_finite :
104-
IsMulFG M ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = ⊤ ∧ S.Finite :=
105-
isMulFG_iff.trans
106-
fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
106+
IsMulFG M ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = ⊤ ∧ S.Finite := by
107+
rw [isMulFG_iff, ← Finset.exists_iff_exists_finite]
107108

108109
@[to_additive]
109110
instance [IsMulFG M] : IsMulFG (MonoidHom.mrange f) :=
@@ -127,9 +128,8 @@ theorem isMulFG_iff : IsMulFG P ↔ ∃ S : Finset M, Submonoid.closure (S : Set
127128

128129
@[to_additive]
129130
theorem isMulFG_iff_finite :
130-
IsMulFG P ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = P ∧ S.Finite :=
131-
isMulFG_iff.trans
132-
fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
131+
IsMulFG P ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = P ∧ S.Finite := by
132+
rw [isMulFG_iff, ← Finset.exists_iff_exists_finite]
133133

134134
@[to_additive (attr := simp)]
135135
theorem isMulFG_top_iff : IsMulFG (⊤ : Submonoid M) ↔ IsMulFG M :=
@@ -156,9 +156,9 @@ theorem isMulFG_iff : IsMulFG G ↔ ∃ S : Finset G, Subgroup.closure (S : Set
156156
fun ⟨S, hS⟩ ↦ ⟨S ∪ S⁻¹, by simp [← Subgroup.closure_toSubmonoid, hS]⟩⟩
157157

158158
@[to_additive]
159-
theorem isMulFG_iff_finite : IsMulFG G ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = ⊤ ∧ S.Finite :=
160-
isMulFG_iff.trans
161-
fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
159+
theorem isMulFG_iff_finite :
160+
IsMulFG G ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = ⊤ ∧ S.Finite := by
161+
rw [isMulFG_iff, ← Finset.exists_iff_exists_finite]
162162

163163
@[to_additive]
164164
instance [IsMulFG G] : IsMulFG f.range :=
@@ -181,9 +181,9 @@ theorem isMulFG_iff : IsMulFG H ↔ ∃ S : Finset G, Subgroup.closure (S : Set
181181
simpa [Set.image_preimage_eq_of_subset h]
182182

183183
@[to_additive]
184-
theorem isMulFG_iff_finite : IsMulFG H ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = H ∧ S.Finite :=
185-
isMulFG_iff.trans
186-
fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
184+
theorem isMulFG_iff_finite :
185+
IsMulFG H ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = H ∧ S.Finite := by
186+
rw [isMulFG_iff, ← Finset.exists_iff_exists_finite]
187187

188188
@[to_additive (attr := simp)]
189189
theorem isMulFG_top_iff : IsMulFG (⊤ : Subgroup G) ↔ IsMulFG G :=

0 commit comments

Comments
 (0)