Documentation

Mathlib.GroupTheory.Finiteness

Finitely generated monoids and groups #

We define finitely generated monoids and groups. See also Submodule.FG and Module.Finite for finitely-generated modules.

Main definition #

Monoids and submonoids #

def Submonoid.FG {M : Type u_1} [Monoid M] (P : Submonoid M) :

A submonoid of M is finitely generated if it is the closure of a finite subset of M.

Equations
    Instances For
      def AddSubmonoid.FG {M : Type u_1} [AddMonoid M] (P : AddSubmonoid M) :

      An additive submonoid of N is finitely generated if it is the closure of a finite subset of M.

      Equations
        Instances For
          theorem Submonoid.fg_iff {M : Type u_1} [Monoid M] (P : Submonoid M) :
          P.FG ∃ (S : Set M), closure S = P S.Finite

          An equivalent expression of Submonoid.FG in terms of Set.Finite instead of Finset.

          theorem AddSubmonoid.fg_iff {M : Type u_1} [AddMonoid M] (P : AddSubmonoid M) :
          P.FG ∃ (S : Set M), closure S = P S.Finite

          An equivalent expression of AddSubmonoid.FG in terms of Set.Finite instead of Finset.

          theorem Submonoid.FG.exists_minimal_closure_eq {M : Type u_1} [Monoid M] {P : Submonoid M} (hP : P.FG) :
          ∃ (S : Finset M), Minimal (fun (S : Finset M) => closure S = P) S

          A finitely generated submonoid has a minimal generating set.

          theorem AddSubmonoid.FG.exists_minimal_closure_eq {M : Type u_1} [AddMonoid M] {P : AddSubmonoid M} (hP : P.FG) :
          ∃ (S : Finset M), Minimal (fun (S : Finset M) => closure S = P) S

          A finitely generated submonoid has a minimal generating set.

          theorem Submonoid.FG.sup {M : Type u_1} [Monoid M] {P Q : Submonoid M} (hP : P.FG) (hQ : Q.FG) :
          (PQ).FG
          theorem AddSubmonoid.FG.sup {M : Type u_1} [AddMonoid M] {P Q : AddSubmonoid M} (hP : P.FG) (hQ : Q.FG) :
          (PQ).FG
          theorem Submonoid.FG.finset_sup {M : Type u_1} [Monoid M] {ι : Type u_3} (s : Finset ι) (P : ιSubmonoid M) (hP : is, (P i).FG) :
          (s.sup P).FG
          theorem AddSubmonoid.FG.finset_sup {M : Type u_1} [AddMonoid M] {ι : Type u_3} (s : Finset ι) (P : ιAddSubmonoid M) (hP : is, (P i).FG) :
          (s.sup P).FG
          theorem Submonoid.FG.biSup_finset {M : Type u_1} [Monoid M] {ι : Type u_3} (s : Finset ι) (P : ιSubmonoid M) (hP : is, (P i).FG) :
          (⨆ is, P i).FG
          theorem AddSubmonoid.FG.biSup_finset {M : Type u_1} [AddMonoid M] {ι : Type u_3} (s : Finset ι) (P : ιAddSubmonoid M) (hP : is, (P i).FG) :
          (⨆ is, P i).FG
          theorem Submonoid.FG.biSup {M : Type u_1} [Monoid M] {ι : Type u_3} {s : Set ι} (hs : s.Finite) (P : ιSubmonoid M) (hP : is, (P i).FG) :
          (⨆ is, P i).FG
          theorem AddSubmonoid.FG.biSup {M : Type u_1} [AddMonoid M] {ι : Type u_3} {s : Set ι} (hs : s.Finite) (P : ιAddSubmonoid M) (hP : is, (P i).FG) :
          (⨆ is, P i).FG
          theorem Submonoid.FG.iSup {M : Type u_1} [Monoid M] {ι : Sort u_3} [Finite ι] (P : ιSubmonoid M) (hP : ∀ (i : ι), (P i).FG) :
          theorem AddSubmonoid.FG.iSup {M : Type u_1} [AddMonoid M] {ι : Sort u_3} [Finite ι] (P : ιAddSubmonoid M) (hP : ∀ (i : ι), (P i).FG) :
          theorem Submonoid.FG.prod {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] {P : Submonoid M} {Q : Submonoid N} (hP : P.FG) (hQ : Q.FG) :
          (P.prod Q).FG

          The product of two finitely generated submonoids is finitely generated.

          theorem AddSubmonoid.FG.prod {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] {P : AddSubmonoid M} {Q : AddSubmonoid N} (hP : P.FG) (hQ : Q.FG) :
          (P.prod Q).FG

          The product of two finitely generated additive submonoids is finitely generated.

          @[deprecated AddSubmonoid.FG.prod (since := "2025-08-28")]
          theorem AddSubmonoid.FG.sum {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] {P : AddSubmonoid M} {Q : AddSubmonoid N} (hP : P.FG) (hQ : Q.FG) :
          (P.prod Q).FG

          Alias of AddSubmonoid.FG.prod.


          The product of two finitely generated additive submonoids is finitely generated.

          theorem Submonoid.iSup_map_mulSingle {ι : Type u_3} [Finite ι] {M : ιType u_4} [(i : ι) → Monoid (M i)] {P : (i : ι) → Submonoid (M i)} [DecidableEq ι] :
          ⨆ (i : ι), map (MonoidHom.mulSingle M i) (P i) = pi Set.univ P
          theorem AddSubmonoid.iSup_map_single {ι : Type u_3} [Finite ι] {M : ιType u_4} [(i : ι) → AddMonoid (M i)] {P : (i : ι) → AddSubmonoid (M i)} [DecidableEq ι] :
          ⨆ (i : ι), map (AddMonoidHom.single M i) (P i) = pi Set.univ P
          theorem Submonoid.FG.pi {ι : Type u_3} [Finite ι] {M : ιType u_4} [(i : ι) → Monoid (M i)] {P : (i : ι) → Submonoid (M i)} (hP : ∀ (i : ι), (P i).FG) :

          Finite product of finitely generated submonoids is finitely generated.

          theorem AddSubmonoid.FG.pi {ι : Type u_3} [Finite ι] {M : ιType u_4} [(i : ι) → AddMonoid (M i)] {P : (i : ι) → AddSubmonoid (M i)} (hP : ∀ (i : ι), (P i).FG) :

          Finite product of finitely generated additive submonoids is finitely generated.

          class AddMonoid.FG (M : Type u_3) [AddMonoid M] :

          An additive monoid is finitely generated if it is finitely generated as an additive submonoid of itself.

          Instances
            class Monoid.FG (M : Type u_1) [Monoid M] :

            A monoid is finitely generated if it is finitely generated as a submonoid of itself.

            Instances
              theorem Monoid.fg_iff {M : Type u_1} [Monoid M] :
              FG M ∃ (S : Set M), Submonoid.closure S = S.Finite

              An equivalent expression of Monoid.FG in terms of Set.Finite instead of Finset.

              theorem AddMonoid.fg_iff {M : Type u_1} [AddMonoid M] :

              An equivalent expression of AddMonoid.FG in terms of Set.Finite instead of Finset.

              theorem Monoid.fg_iff_exists_freeMonoid_hom_surjective {M : Type u_1} [Monoid M] :
              FG M ∃ (S : Set M) (_ : S.Finite) (φ : FreeMonoid S →* M), Function.Surjective φ

              A monoid is finitely generated iff there exists a surjective homomorphism from a FreeMonoid on finitely many generators.

              An additive monoid is finitely generated iff there exists a surjective homomorphism from a FreeAddMonoid on finitely many generators.

              theorem Submonoid.exists_minimal_closure_eq_top (M : Type u_1) [Monoid M] [Monoid.FG M] :
              ∃ (S : Finset M), Minimal (fun (S : Finset M) => closure S = ) S

              A finitely generated monoid has a minimal generating set.

              theorem AddSubmonoid.exists_minimal_closure_eq_top (M : Type u_1) [AddMonoid M] [AddMonoid.FG M] :
              ∃ (S : Finset M), Minimal (fun (S : Finset M) => closure S = ) S

              A finitely generated monoid has a minimal generating set.

              theorem Submonoid.FG.map {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] {P : Submonoid M} (h : P.FG) (e : M →* M') :
              theorem AddSubmonoid.FG.map {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] {P : AddSubmonoid M} (h : P.FG) (e : M →+ M') :
              theorem Submonoid.FG.map_injective {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] {P : Submonoid M} (e : M →* M') (he : Function.Injective e) (h : (Submonoid.map e P).FG) :
              P.FG
              theorem AddSubmonoid.FG.map_injective {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] {P : AddSubmonoid M} (e : M →+ M') (he : Function.Injective e) (h : (AddSubmonoid.map e P).FG) :
              P.FG
              @[simp]
              theorem Monoid.fg_iff_submonoid_fg {M : Type u_1} [Monoid M] (N : Submonoid M) :
              FG N N.FG
              theorem Monoid.fg_of_surjective {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] [FG M] (f : M →* M') (hf : Function.Surjective f) :
              FG M'
              theorem AddMonoid.fg_of_surjective {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] [FG M] (f : M →+ M') (hf : Function.Surjective f) :
              FG M'
              instance Monoid.fg_range {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] [FG M] (f : M →* M') :
              instance AddMonoid.fg_range {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] [FG M] (f : M →+ M') :
              theorem Submonoid.powers_fg {M : Type u_1} [Monoid M] (r : M) :
              instance Monoid.powers_fg {M : Type u_1} [Monoid M] (r : M) :
              instance Monoid.closure_finite_fg {M : Type u_1} [Monoid M] (s : Set M) [Finite s] :

              Groups and subgroups #

              def Subgroup.FG {G : Type u_3} [Group G] (P : Subgroup G) :

              A subgroup of G is finitely generated if it is the closure of a finite subset of G.

              Equations
                Instances For
                  def AddSubgroup.FG {G : Type u_3} [AddGroup G] (P : AddSubgroup G) :

                  An additive subgroup of H is finitely generated if it is the closure of a finite subset of H.

                  Equations
                    Instances For
                      theorem Subgroup.fg_iff {G : Type u_3} [Group G] (P : Subgroup G) :
                      P.FG ∃ (S : Set G), closure S = P S.Finite

                      An equivalent expression of Subgroup.FG in terms of Set.Finite instead of Finset.

                      theorem AddSubgroup.fg_iff {G : Type u_3} [AddGroup G] (P : AddSubgroup G) :
                      P.FG ∃ (S : Set G), closure S = P S.Finite

                      An equivalent expression of AddSubgroup.fg in terms of Set.Finite instead of Finset.

                      theorem Subgroup.fg_iff_submonoid_fg {G : Type u_3} [Group G] (P : Subgroup G) :
                      P.FG P.FG

                      A subgroup is finitely generated if and only if it is finitely generated as a submonoid.

                      An additive subgroup is finitely generated if and only if it is finitely generated as an additive submonoid.

                      theorem Subgroup.FG.sup {G : Type u_3} [Group G] {P Q : Subgroup G} (hP : P.FG) (hQ : Q.FG) :
                      (PQ).FG
                      theorem AddSubgroup.FG.sup {G : Type u_3} [AddGroup G] {P Q : AddSubgroup G} (hP : P.FG) (hQ : Q.FG) :
                      (PQ).FG
                      theorem Subgroup.FG.finset_sup {G : Type u_3} [Group G] {ι : Type u_5} (s : Finset ι) (P : ιSubgroup G) (hP : is, (P i).FG) :
                      (s.sup P).FG
                      theorem AddSubgroup.FG.finset_sup {G : Type u_3} [AddGroup G] {ι : Type u_5} (s : Finset ι) (P : ιAddSubgroup G) (hP : is, (P i).FG) :
                      (s.sup P).FG
                      theorem Subgroup.FG.biSup_finset {G : Type u_3} [Group G] {ι : Type u_5} (s : Finset ι) (P : ιSubgroup G) (hP : is, (P i).FG) :
                      (⨆ is, P i).FG
                      theorem AddSubgroup.FG.biSup_finset {G : Type u_3} [AddGroup G] {ι : Type u_5} (s : Finset ι) (P : ιAddSubgroup G) (hP : is, (P i).FG) :
                      (⨆ is, P i).FG
                      theorem Subgroup.FG.biSup {G : Type u_3} [Group G] {ι : Type u_5} {s : Set ι} (hs : s.Finite) (P : ιSubgroup G) (hP : is, (P i).FG) :
                      (⨆ is, P i).FG
                      theorem AddSubgroup.FG.biSup {G : Type u_3} [AddGroup G] {ι : Type u_5} {s : Set ι} (hs : s.Finite) (P : ιAddSubgroup G) (hP : is, (P i).FG) :
                      (⨆ is, P i).FG
                      theorem Subgroup.FG.iSup {G : Type u_3} [Group G] {ι : Sort u_5} [Finite ι] (P : ιSubgroup G) (hP : ∀ (i : ι), (P i).FG) :
                      theorem AddSubgroup.FG.iSup {G : Type u_3} [AddGroup G] {ι : Sort u_5} [Finite ι] (P : ιAddSubgroup G) (hP : ∀ (i : ι), (P i).FG) :
                      theorem Subgroup.FG.prod {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] {P : Subgroup G} {Q : Subgroup G'} (hP : P.FG) (hQ : Q.FG) :
                      (P.prod Q).FG

                      The product of two finitely generated subgroups is finitely generated.

                      theorem AddSubgroup.FG.prod {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] {P : AddSubgroup G} {Q : AddSubgroup G'} (hP : P.FG) (hQ : Q.FG) :
                      (P.prod Q).FG

                      The product of two finitely generated additive subgroups is finitely generated.

                      theorem Subgroup.FG.pi {ι : Type u_5} [Finite ι] {G : ιType u_6} [(i : ι) → Group (G i)] {P : (i : ι) → Subgroup (G i)} (hP : ∀ (i : ι), (P i).FG) :

                      Finite product of finitely generated subgroups is finitely generated.

                      theorem AddSubgroup.FG.pi {ι : Type u_5} [Finite ι] {G : ιType u_6} [(i : ι) → AddGroup (G i)] {P : (i : ι) → AddSubgroup (G i)} (hP : ∀ (i : ι), (P i).FG) :

                      Finite product of finitely generated additive subgroups is finitely generated.

                      class Group.FG (G : Type u_3) [Group G] :

                      A group is finitely generated if it is finitely generated as a subgroup of itself.

                      Instances
                        class AddGroup.FG (H : Type u_4) [AddGroup H] :

                        An additive group is finitely generated if it is finitely generated as an additive subgroup of itself.

                        Instances
                          theorem Group.fg_iff {G : Type u_3} [Group G] :
                          FG G ∃ (S : Set G), Subgroup.closure S = S.Finite

                          An equivalent expression of Group.FG in terms of Set.Finite instead of Finset.

                          theorem AddGroup.fg_iff {G : Type u_3} [AddGroup G] :

                          An equivalent expression of AddGroup.fg in terms of Set.Finite instead of Finset.

                          theorem Group.fg_iff' {G : Type u_3} [Group G] :
                          FG G ∃ (n : ) (S : Finset G), S.card = n Subgroup.closure S =
                          theorem AddGroup.fg_iff' {G : Type u_3} [AddGroup G] :
                          FG G ∃ (n : ) (S : Finset G), S.card = n AddSubgroup.closure S =
                          theorem Group.fg_iff_exists_freeGroup_hom_surjective {G : Type u_3} [Group G] :
                          FG G ∃ (S : Set G) (_ : S.Finite) (φ : FreeGroup S →* G), Function.Surjective φ

                          A group is finitely generated iff there exists a surjective homomorphism from a FreeGroup on finitely many generators.

                          theorem AddGroup.fg_iff_exists_freeAddGroup_hom_surjective {G : Type u_3} [AddGroup G] :
                          FG G ∃ (S : Set G) (_ : S.Finite) (φ : FreeAddGroup S →+ G), Function.Surjective φ

                          An additive group is finitely generated iff there exists a surjective homomorphism from a FreeAddGroup on finitely many generators.

                          theorem Group.fg_iff_monoid_fg {G : Type u_3} [Group G] :

                          A group is finitely generated if and only if it is finitely generated as a monoid.

                          An additive group is finitely generated if and only if it is finitely generated as an additive monoid.

                          @[simp]
                          theorem Group.fg_iff_subgroup_fg {G : Type u_3} [Group G] (H : Subgroup G) :
                          FG H H.FG
                          @[simp]
                          theorem AddGroup.fg_iff_addSubgroup_fg {G : Type u_3} [AddGroup G] (H : AddSubgroup G) :
                          FG H H.FG
                          @[instance 100]
                          instance Group.fg_of_finite {G : Type u_3} [Group G] [Finite G] :
                          FG G
                          @[instance 100]
                          instance AddGroup.fg_of_finite {G : Type u_3} [AddGroup G] [Finite G] :
                          FG G
                          theorem Group.fg_of_surjective {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [hG : FG G] {f : G →* G'} (hf : Function.Surjective f) :
                          FG G'
                          theorem AddGroup.fg_of_surjective {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [hG : FG G] {f : G →+ G'} (hf : Function.Surjective f) :
                          FG G'
                          instance Group.fg_range {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [FG G] (f : G →* G') :
                          FG f.range
                          instance AddGroup.fg_range {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [FG G] (f : G →+ G') :
                          FG f.range
                          instance Group.closure_finite_fg {G : Type u_3} [Group G] (s : Set G) [Finite s] :
                          instance QuotientGroup.fg {G : Type u_3} [Group G] [Group.FG G] (N : Subgroup G) [N.Normal] :
                          instance Prod.instMonoidFG {M : Type u_1} {N : Type u_2} [Monoid M] [Monoid N] [Monoid.FG M] [Monoid.FG N] :

                          The product of two finitely generated monoids is finitely generated.

                          instance Prod.instAddMonoidFG {M : Type u_1} {N : Type u_2} [AddMonoid M] [AddMonoid N] [AddMonoid.FG M] [AddMonoid.FG N] :

                          The product of two finitely generated additive monoids is finitely generated.

                          instance Prod.instGroupFG {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] [Group.FG G'] :
                          Group.FG (G × G')

                          The product of two finitely generated groups is finitely generated.

                          instance Prod.instAddGroupFG {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [AddGroup.FG G] [AddGroup.FG G'] :

                          The product of two finitely generated additive groups is finitely generated.

                          instance Pi.instMonoidFG {ι : Type u_5} [Finite ι] {M : ιType u_6} [(i : ι) → Monoid (M i)] [∀ (i : ι), Monoid.FG (M i)] :
                          Monoid.FG ((i : ι) → M i)

                          Finite product of finitely generated monoids is finitely generated.

                          instance Pi.instAddMonoidFG {ι : Type u_5} [Finite ι] {M : ιType u_6} [(i : ι) → AddMonoid (M i)] [∀ (i : ι), AddMonoid.FG (M i)] :
                          AddMonoid.FG ((i : ι) → M i)

                          Finite product of finitely generated additive monoids is finitely generated.

                          instance Pi.instGroupFG {ι : Type u_5} [Finite ι] {G : ιType u_6} [(i : ι) → Group (G i)] [∀ (i : ι), Group.FG (G i)] :
                          Group.FG ((i : ι) → G i)

                          Finite product of finitely generated groups is finitely generated.

                          instance Pi.instAddGroupFG {ι : Type u_5} [Finite ι] {G : ιType u_6} [(i : ι) → AddGroup (G i)] [∀ (i : ι), AddGroup.FG (G i)] :
                          AddGroup.FG ((i : ι) → G i)

                          Finite product of finitely generated additive groups is finitely generated.

                          theorem Submonoid.fg_of_divisive {M : Type u_5} [CommMonoid M] [PartialOrder M] [WellQuasiOrderedLE M] [IsOrderedCancelMonoid M] [CanonicallyOrderedMul M] {P : Submonoid M} (hP : xP, ∀ (y : M), x * y Py P) :
                          P.FG

                          In a canonically ordered and well-quasi-ordered monoid, any divisive submonoid is finitely generated.

                          theorem AddSubmonoid.fg_of_subtractive {M : Type u_5} [AddCommMonoid M] [PartialOrder M] [WellQuasiOrderedLE M] [IsOrderedCancelAddMonoid M] [CanonicallyOrderedAdd M] {P : AddSubmonoid M} (hP : xP, ∀ (y : M), x + y Py P) :
                          P.FG

                          In a canonically ordered and well-quasi-ordered additive monoid (typical example is ℕ ^ k), any subtractive submonoid is finitely generated.

                          A canonically ordered and well-quasi-ordered monoid must be finitely generated.

                          A canonically ordered and well-quasi-ordered additive monoid must be finitely generated.

                          If f g are homomorphisms from a canonically ordered and well-quasi-ordered monoid M to a cancellative monoid N, the submonoid of M on which f and g agree is finitely generated.

                          If f g are homomorphisms from a canonically ordered and well-quasi-ordered additive monoid M to a cancellative additive monoid N, the submonoid of M on which f and g agree is finitely generated. When M and N are ℕ ^ k, this is also known as a version of Gordan's lemma.