@@ -65,6 +65,8 @@ This generalizes and will eventually replace the four existing definitions
6565class IsMulFG : Prop where
6666 fg_top : ∃ S : Finset M, Subsemigroup.closure (S : Set M) = ⊤
6767
68+ attribute [to_additive existing] isMulFG_def
69+
6870variable {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]
103105theorem 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]
109110instance [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]
129130theorem 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)]
135135theorem 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]
164164instance [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)]
189189theorem isMulFG_top_iff : IsMulFG (⊤ : Subgroup G) ↔ IsMulFG G :=
0 commit comments