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 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
    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
      abbrev AddSubmonoid.fg_iff.match_1 {M : Type u_1} [AddMonoid M] (P : AddSubmonoid M) (motive : P.FGProp) :
      ∀ (x : P.FG), (∀ (S : Finset M) (hS : AddSubmonoid.closure S = P), motive )motive x
      Equations
      • =
      Instances For
        abbrev AddSubmonoid.fg_iff.match_2 {M : Type u_1} [AddMonoid M] (P : AddSubmonoid M) (motive : (∃ (S : Set M), AddSubmonoid.closure S = P S.Finite)Prop) :
        ∀ (x : ∃ (S : Set M), AddSubmonoid.closure S = P S.Finite), (∀ (S : Set M) (hS : AddSubmonoid.closure S = P) (hf : S.Finite), motive )motive x
        Equations
        • =
        Instances For
          theorem AddSubmonoid.fg_iff {M : Type u_1} [AddMonoid M] (P : AddSubmonoid M) :
          P.FG ∃ (S : Set M), AddSubmonoid.closure S = P S.Finite

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

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

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

          theorem Submonoid.fg_iff_add_fg {M : Type u_1} [Monoid M] (P : Submonoid M) :
          P.FG (Submonoid.toAddSubmonoid P).FG
          theorem AddSubmonoid.fg_iff_mul_fg {N : Type u_2} [AddMonoid N] (P : AddSubmonoid N) :
          P.FG (AddSubmonoid.toSubmonoid P).FG
          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.out {M : Type u_1} [Monoid M] [self : Monoid.FG M] :
            .FG
            class AddMonoid.FG (N : Type u_2) [AddMonoid N] :

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

            Instances
              theorem AddMonoid.FG.out {N : Type u_2} [AddMonoid N] [self : AddMonoid.FG N] :
              .FG
              theorem Monoid.fg_def {M : Type u_1} [Monoid M] :
              theorem AddMonoid.fg_iff {M : Type u_1} [AddMonoid M] :
              AddMonoid.FG M ∃ (S : Set M), AddSubmonoid.closure S = S.Finite

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

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

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

              Equations
              • =
              Equations
              • =
              @[instance 100]
              Equations
              • =
              @[instance 100]
              instance Monoid.fg_of_finite {M : Type u_1} [Monoid M] [Finite M] :
              Equations
              • =
              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 {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] {P : Submonoid M} (h : P.FG) (e : M →* M') :
              (Submonoid.map e 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
              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
              @[simp]
              @[simp]
              theorem Monoid.fg_iff_submonoid_fg {M : Type u_1} [Monoid M] (N : Submonoid M) :
              Monoid.FG N N.FG
              theorem AddMonoid.fg_of_surjective {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] [AddMonoid.FG M] (f : M →+ M') (hf : Function.Surjective f) :
              theorem Monoid.fg_of_surjective {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] [Monoid.FG M] (f : M →* M') (hf : Function.Surjective f) :
              instance AddMonoid.fg_range {M : Type u_1} [AddMonoid M] {M' : Type u_3} [AddMonoid M'] [AddMonoid.FG M] (f : M →+ M') :
              Equations
              • =
              instance Monoid.fg_range {M : Type u_1} [Monoid M] {M' : Type u_3} [Monoid M'] [Monoid.FG M] (f : M →* M') :
              Equations
              • =
              theorem Submonoid.powers_fg {M : Type u_1} [Monoid M] (r : M) :
              Equations
              • =
              instance Monoid.powers_fg {M : Type u_1} [Monoid M] (r : M) :
              Equations
              • =
              Equations
              • =
              instance Monoid.closure_finset_fg {M : Type u_1} [Monoid M] (s : Finset M) :
              Equations
              • =
              Equations
              • =
              instance Monoid.closure_finite_fg {M : Type u_1} [Monoid M] (s : Set M) [Finite s] :
              Equations
              • =

              Groups and subgroups #

              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
                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
                  abbrev AddSubgroup.fg_iff.match_1 {G : Type u_1} [AddGroup G] (P : AddSubgroup G) (motive : P.FGProp) :
                  ∀ (x : P.FG), (∀ (S : Finset G) (hS : AddSubgroup.closure S = P), motive )motive x
                  Equations
                  • =
                  Instances For
                    abbrev AddSubgroup.fg_iff.match_2 {G : Type u_1} [AddGroup G] (P : AddSubgroup G) (motive : (∃ (S : Set G), AddSubgroup.closure S = P S.Finite)Prop) :
                    ∀ (x : ∃ (S : Set G), AddSubgroup.closure S = P S.Finite), (∀ (S : Set G) (hS : AddSubgroup.closure S = P) (hf : S.Finite), motive )motive x
                    Equations
                    • =
                    Instances For
                      theorem AddSubgroup.fg_iff {G : Type u_3} [AddGroup G] (P : AddSubgroup G) :
                      P.FG ∃ (S : Set G), AddSubgroup.closure S = P S.Finite

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

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

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

                      theorem AddSubgroup.fg_iff_addSubmonoid_fg {G : Type u_3} [AddGroup G] (P : AddSubgroup G) :
                      P.FG P.FG

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

                      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.

                      theorem Subgroup.fg_iff_add_fg {G : Type u_3} [Group G] (P : Subgroup G) :
                      P.FG (Subgroup.toAddSubgroup P).FG
                      theorem AddSubgroup.fg_iff_mul_fg {H : Type u_4} [AddGroup H] (P : AddSubgroup H) :
                      P.FG (AddSubgroup.toSubgroup P).FG
                      class Group.FG (G : Type u_3) [Group G] :

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

                      Instances
                        theorem Group.FG.out {G : Type u_3} [Group G] [self : Group.FG G] :
                        .FG
                        class AddGroup.FG (H : Type u_4) [AddGroup H] :

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

                        Instances
                          theorem AddGroup.FG.out {H : Type u_4} [AddGroup H] [self : AddGroup.FG H] :
                          .FG
                          theorem Group.fg_def {G : Type u_3} [Group G] :
                          theorem AddGroup.fg_iff {G : Type u_3} [AddGroup G] :
                          AddGroup.FG G ∃ (S : Set G), AddSubgroup.closure S = S.Finite

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

                          theorem Group.fg_iff {G : Type u_3} [Group G] :
                          Group.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] :
                          AddGroup.FG G ∃ (n : ) (S : Finset G), S.card = n AddSubgroup.closure S =
                          abbrev AddGroup.fg_iff'.match_1 {G : Type u_1} [AddGroup G] (motive : .FGProp) :
                          ∀ (x : .FG), (∀ (S : Finset G) (hS : AddSubgroup.closure S = ), motive )motive x
                          Equations
                          • =
                          Instances For
                            abbrev AddGroup.fg_iff'.match_2 {G : Type u_1} [AddGroup G] (motive : (∃ (n : ) (S : Finset G), S.card = n AddSubgroup.closure S = )Prop) :
                            ∀ (x : ∃ (n : ) (S : Finset G), S.card = n AddSubgroup.closure S = ), (∀ (_n : ) (S : Finset G) (_hn : S.card = _n) (hS : AddSubgroup.closure S = ), motive )motive x
                            Equations
                            • =
                            Instances For
                              theorem Group.fg_iff' {G : Type u_3} [Group G] :
                              Group.FG G ∃ (n : ) (S : Finset G), S.card = n Subgroup.closure S =

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

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

                              @[simp]
                              theorem AddGroup.fg_iff_addSubgroup_fg {G : Type u_3} [AddGroup G] (H : AddSubgroup G) :
                              AddGroup.FG H H.FG
                              @[simp]
                              theorem Group.fg_iff_subgroup_fg {G : Type u_3} [Group G] (H : Subgroup G) :
                              Group.FG H H.FG
                              Equations
                              • =
                              Equations
                              • =
                              @[instance 100]
                              instance AddGroup.fg_of_finite {G : Type u_3} [AddGroup G] [Finite G] :
                              Equations
                              • =
                              @[instance 100]
                              instance Group.fg_of_finite {G : Type u_3} [Group G] [Finite G] :
                              Equations
                              • =
                              theorem AddGroup.fg_of_surjective {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [hG : AddGroup.FG G] {f : G →+ G'} (hf : Function.Surjective f) :
                              theorem Group.fg_of_surjective {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [hG : Group.FG G] {f : G →* G'} (hf : Function.Surjective f) :
                              instance AddGroup.fg_range {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [AddGroup.FG G] (f : G →+ G') :
                              AddGroup.FG f.range
                              Equations
                              • =
                              instance Group.fg_range {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] (f : G →* G') :
                              Group.FG f.range
                              Equations
                              • =
                              Equations
                              • =
                              instance Group.closure_finset_fg {G : Type u_3} [Group G] (s : Finset G) :
                              Equations
                              • =
                              instance AddGroup.closure_finite_fg {G : Type u_3} [AddGroup G] (s : Set G) [Finite s] :
                              Equations
                              • =
                              instance Group.closure_finite_fg {G : Type u_3} [Group G] (s : Set G) [Finite s] :
                              Equations
                              • =
                              theorem AddGroup.rank.proof_1 (G : Type u_1) [AddGroup G] [h : AddGroup.FG G] :
                              ∃ (n : ) (S : Finset G), S.card = n AddSubgroup.closure S =
                              noncomputable def AddGroup.rank (G : Type u_3) [AddGroup G] [h : AddGroup.FG G] :

                              The minimum number of generators of an additive group

                              Equations
                              Instances For
                                noncomputable def Group.rank (G : Type u_3) [Group G] [h : Group.FG G] :

                                The minimum number of generators of a group.

                                Equations
                                Instances For
                                  theorem AddGroup.rank_spec (G : Type u_3) [AddGroup G] [h : AddGroup.FG G] :
                                  ∃ (S : Finset G), S.card = AddGroup.rank G AddSubgroup.closure S =
                                  theorem Group.rank_spec (G : Type u_3) [Group G] [h : Group.FG G] :
                                  ∃ (S : Finset G), S.card = Group.rank G Subgroup.closure S =
                                  theorem AddGroup.rank_le (G : Type u_3) [AddGroup G] [h : AddGroup.FG G] {S : Finset G} (hS : AddSubgroup.closure S = ) :
                                  theorem Group.rank_le (G : Type u_3) [Group G] [h : Group.FG G] {S : Finset G} (hS : Subgroup.closure S = ) :
                                  Group.rank G S.card
                                  theorem Group.rank_le_of_surjective {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] [Group.FG G'] (f : G →* G') (hf : Function.Surjective f) :
                                  theorem AddGroup.rank_range_le {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [AddGroup.FG G] {f : G →+ G'} :
                                  theorem Group.rank_range_le {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] {f : G →* G'} :
                                  theorem AddGroup.rank_congr {G : Type u_3} [AddGroup G] {G' : Type u_5} [AddGroup G'] [AddGroup.FG G] [AddGroup.FG G'] (f : G ≃+ G') :
                                  theorem Group.rank_congr {G : Type u_3} [Group G] {G' : Type u_5} [Group G'] [Group.FG G] [Group.FG G'] (f : G ≃* G') :
                                  theorem AddSubgroup.rank_congr {G : Type u_3} [AddGroup G] {H : AddSubgroup G} {K : AddSubgroup G} [AddGroup.FG H] [AddGroup.FG K] (h : H = K) :
                                  theorem Subgroup.rank_congr {G : Type u_3} [Group G] {H : Subgroup G} {K : Subgroup G} [Group.FG H] [Group.FG K] (h : H = K) :
                                  instance QuotientAddGroup.fg {G : Type u_3} [AddGroup G] [AddGroup.FG G] (N : AddSubgroup G) [N.Normal] :
                                  Equations
                                  • =
                                  instance QuotientGroup.fg {G : Type u_3} [Group G] [Group.FG G] (N : Subgroup G) [N.Normal] :
                                  Equations
                                  • =