@@ -66,9 +66,10 @@ theorem isMulFG_def {M : Type*} [Mul M] :
6666
6767namespace Monoid
6868
69+ variable {M : Type *} [Monoid M]
70+
6971@[to_additive]
70- theorem isMulFG_iff {M : Type *} [Monoid M] :
71- IsMulFG M ↔ ∃ S : Finset M, Submonoid.closure (S : Set M) = ⊤ := by
72+ theorem isMulFG_iff : IsMulFG M ↔ ∃ S : Finset M, Submonoid.closure (S : Set M) = ⊤ := by
7273 classical
7374 simp_rw [isMulFG_def, SetLike.ext'_iff, Submonoid.closure_eq_one_union,
7475 Subsemigroup.coe_top, Submonoid.coe_top]
@@ -79,7 +80,7 @@ theorem isMulFG_iff {M : Type*} [Monoid M] :
7980 · exact Subsemigroup.closure_mono (by simp) hx
8081
8182@[to_additive]
82- theorem isMulFG_iff_finite {M : Type *} [Monoid M] :
83+ theorem isMulFG_iff_finite :
8384 IsMulFG M ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = ⊤ ∧ S.Finite :=
8485 isMulFG_iff.trans
8586 ⟨fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
@@ -88,9 +89,10 @@ end Monoid
8889
8990namespace Submonoid
9091
92+ variable {M : Type *} [Monoid M] {P : Submonoid M}
93+
9194@[to_additive]
92- theorem isMulFG_iff {M : Type *} [Monoid M] {P : Submonoid M} :
93- IsMulFG P ↔ ∃ S : Finset M, Submonoid.closure (S : Set M) = P := by
95+ theorem isMulFG_iff : IsMulFG P ↔ ∃ S : Finset M, Submonoid.closure (S : Set M) = P := by
9496 classical
9597 simp_rw [Monoid.isMulFG_iff, ← (map_injective_of_injective P.subtype_injective).eq_iff,
9698 ← MonoidHom.mrange_eq_map, mrange_subtype, MonoidHom.map_mclosure]
@@ -100,35 +102,40 @@ theorem isMulFG_iff {M : Type*} [Monoid M] {P : Submonoid M} :
100102 simpa [Set.image_preimage_eq_of_subset h]
101103
102104@[to_additive]
103- theorem isMulFG_iff_finite {M : Type *} [Monoid M] {P : Submonoid M} :
105+ theorem isMulFG_iff_finite :
104106 IsMulFG P ↔ ∃ S : Set M, Submonoid.closure (S : Set M) = P ∧ S.Finite :=
105107 isMulFG_iff.trans
106108 ⟨fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
107109
110+ @ [to_additive (attr := simp)]
111+ theorem isMulFG_top_iff : IsMulFG (⊤ : Submonoid M) ↔ IsMulFG M :=
112+ isMulFG_iff.trans Monoid.isMulFG_iff.symm
113+
108114end Submonoid
109115
110116namespace Group
111117
118+ variable {G : Type *} [Group G]
119+
112120@[to_additive]
113- theorem isMulFG_iff {G : Type *} [Group G] :
114- IsMulFG G ↔ ∃ S : Finset G, Subgroup.closure (S : Set G) = ⊤ := by
121+ theorem isMulFG_iff : IsMulFG G ↔ ∃ S : Finset G, Subgroup.closure (S : Set G) = ⊤ := by
115122 classical
116123 exact Monoid.isMulFG_iff.trans ⟨fun ⟨S, hS⟩ ↦ ⟨S, Subgroup.closure_eq_top_of_mclosure_eq_top hS⟩,
117124 fun ⟨S, hS⟩ ↦ ⟨S ∪ S⁻¹, by simp [← Subgroup.closure_toSubmonoid, hS]⟩⟩
118125
119126@[to_additive]
120- theorem isMulFG_iff_finite {G : Type *} [Group G] :
121- IsMulFG G ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = ⊤ ∧ S.Finite :=
127+ theorem isMulFG_iff_finite : IsMulFG G ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = ⊤ ∧ S.Finite :=
122128 isMulFG_iff.trans
123129 ⟨fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
124130
125131end Group
126132
127133namespace Subgroup
128134
135+ variable {G : Type *} [Group G] {H : Subgroup G}
136+
129137@[to_additive]
130- theorem isMulFG_iff {G : Type *} [Group G] {H : Subgroup G} :
131- IsMulFG H ↔ ∃ S : Finset G, Subgroup.closure (S : Set G) = H := by
138+ theorem isMulFG_iff : IsMulFG H ↔ ∃ S : Finset G, Subgroup.closure (S : Set G) = H := by
132139 classical
133140 simp_rw [Group.isMulFG_iff, ← Subgroup.map_subtype_inj,
134141 ← MonoidHom.range_eq_map, range_subtype, MonoidHom.map_closure]
@@ -138,11 +145,14 @@ theorem isMulFG_iff {G : Type*} [Group G] {H : Subgroup G} :
138145 simpa [Set.image_preimage_eq_of_subset h]
139146
140147@[to_additive]
141- theorem isMulFG_iff_finite {G : Type *} [Group G] {H : Subgroup G} :
142- IsMulFG H ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = H ∧ S.Finite :=
148+ theorem isMulFG_iff_finite : IsMulFG H ↔ ∃ S : Set G, Subgroup.closure (S : Set G) = H ∧ S.Finite :=
143149 isMulFG_iff.trans
144150 ⟨fun ⟨S, hS⟩ ↦ ⟨S, hS, S.finite_toSet⟩, fun ⟨S, hS, hf⟩ ↦ ⟨hf.toFinset, by simpa⟩⟩
145151
152+ @ [to_additive (attr := simp)]
153+ theorem isMulFG_top_iff : IsMulFG (⊤ : Subgroup G) ↔ IsMulFG G :=
154+ isMulFG_iff.trans Group.isMulFG_iff.symm
155+
146156end Subgroup
147157
148158end
0 commit comments