@@ -53,6 +53,11 @@ theorem Submonoid.fg_iff (P : Submonoid M) :
5353 ⟨fun ⟨S, hS⟩ => ⟨S, hS, Finset.finite_toSet S⟩, fun ⟨S, hS, hf⟩ =>
5454 ⟨Set.Finite.toFinset hf, by simp [hS]⟩⟩
5555
56+ /-- A finitely generated submonoid has a minimal generating set. -/
57+ @[to_additive "A finitely generated submonoid has a minimal generating set."]
58+ lemma Submonoid.FG.exists_minimal_closure_eq (hP : P.FG) :
59+ ∃ S : Finset M, Minimal (closure ·.toSet = P) S := exists_minimal_of_wellFoundedLT _ hP
60+
5661theorem Submonoid.fg_iff_add_fg (P : Submonoid M) : P.FG ↔ P.toAddSubmonoid.FG :=
5762 ⟨fun h =>
5863 let ⟨S, hS, hf⟩ := (Submonoid.fg_iff _).1 h
@@ -104,6 +109,13 @@ theorem Monoid.fg_iff :
104109 Monoid.FG M ↔ ∃ S : Set M, Submonoid.closure S = (⊤ : Submonoid M) ∧ S.Finite :=
105110 ⟨fun _ => (Submonoid.fg_iff ⊤).1 FG.fg_top, fun h => ⟨(Submonoid.fg_iff ⊤).2 h⟩⟩
106111
112+ variable (M) in
113+ /-- A finitely generated monoid has a minimal generating set. -/
114+ @[to_additive "A finitely generated monoid has a minimal generating set."]
115+ lemma Submonoid.exists_minimal_closure_eq_top [Monoid.FG M] :
116+ ∃ S : Finset M, Minimal (Submonoid.closure ·.toSet = ⊤) S :=
117+ Monoid.FG.fg_top.exists_minimal_closure_eq
118+
107119theorem Monoid.fg_iff_add_fg : Monoid.FG M ↔ AddMonoid.FG (Additive M) where
108120 mp _ := ⟨(Submonoid.fg_iff_add_fg ⊤).1 FG.fg_top⟩
109121 mpr h := ⟨(Submonoid.fg_iff_add_fg ⊤).2 h.fg_top⟩
0 commit comments