@@ -52,7 +52,7 @@ class IsAddFG (M : Type*) [Add M] : Prop where
5252
5353section Mul
5454
55- variable (M : Type *) [Mul M]
55+ variable (M N : Type *) [Mul M] [Mul N ]
5656
5757/-- A type with multiplication is finitely generated if there is a finite subset such that every
5858element of the type can be written as a finite product of elements from this finite subset.
@@ -63,12 +63,13 @@ This generalizes and will eventually replace the four existing definitions
6363class IsMulFG : Prop where
6464 fg_top : ∃ S : Finset M, Subsemigroup.closure (S : Set M) = ⊤
6565
66- variable {M}
66+ variable {M N }
6767
6868@[to_additive]
6969theorem isMulFG_def : IsMulFG M ↔ ∃ S : Finset M, Subsemigroup.closure (S : Set M) = ⊤ :=
7070 ⟨fun h ↦ h.fg_top, fun h ↦ ⟨h⟩⟩
7171
72+ @[to_additive]
7273instance [Finite M] : IsMulFG M := by
7374 cases nonempty_fintype M
7475 exact ⟨Finset.univ, by simp⟩
@@ -122,12 +123,10 @@ theorem isMulFG_iff_finite :
122123theorem isMulFG_top_iff : IsMulFG (⊤ : Submonoid M) ↔ IsMulFG M :=
123124 isMulFG_iff.trans Monoid.isMulFG_iff.symm
124125
125- instance isMulFG_top [IsMulFG M] : IsMulFG (⊤ : Submonoid M) :=
126+ @[to_additive]
127+ instance [IsMulFG M] : IsMulFG (⊤ : Submonoid M) :=
126128 isMulFG_top_iff.mpr ‹_›
127129
128- instance isMulFG_bot : IsMulFG (⊥ : Submonoid M) :=
129- isMulFG_iff.mpr ⟨∅, by simp⟩
130-
131130end Submonoid
132131
133132namespace Group
@@ -170,12 +169,10 @@ theorem isMulFG_iff_finite : IsMulFG H ↔ ∃ S : Set G, Subgroup.closure (S :
170169theorem isMulFG_top_iff : IsMulFG (⊤ : Subgroup G) ↔ IsMulFG G :=
171170 isMulFG_iff.trans Group.isMulFG_iff.symm
172171
173- instance isMulFG_top [IsMulFG G] : IsMulFG (⊤ : Subgroup G) :=
172+ @[to_additive]
173+ instance [IsMulFG G] : IsMulFG (⊤ : Subgroup G) :=
174174 isMulFG_top_iff.mpr ‹_›
175175
176- instance isMulFG_bot : IsMulFG (⊥ : Subgroup G) :=
177- isMulFG_iff.mpr ⟨∅, by simp⟩
178-
179176end Subgroup
180177
181178end
0 commit comments