Documentation

Mathlib.GroupTheory.Generators

Group generators as data #

Main definitions #

Main results #

Implementation notes #

References #

Tags #

group generators, generating set, finitely generated

structure AddGroup.Generators (G : Type u_5) [AddGroup G] (ι : Type u_6) :
Type (max u_5 u_6)

The generators of an additive group are given by a generating family indexed by ι and an assignment val : ι → G such that AddSubgroup.closure (Set.range val) = ⊤.

  • val : ι → G

    The generating family itself: val i is the element of G indexed by i : ι.

  • closure_eq_top : AddSubgroup.closure (Set.range self.val) = ⊤

    The additive subgroup closure of the generators is the whole group.

Instances For
    structure Group.Generators (G : Type u_5) [Group G] (ι : Type u_6) :
    Type (max u_5 u_6)

    The generators of a group are given by a generating family indexed by ι and an assignment val : ι → G such that Subgroup.closure (Set.range val) = ⊤.

    • val : ι → G

      The generating family itself: val i is the element of G indexed by i : ι.

    • closure_eq_top : Subgroup.closure (Set.range self.val) = ⊤

      The subgroup closure of the generators is the whole group.

    Instances For
      @[reducible, inline]
      abbrev Group.Generators.lift {G : Type u_1} {ι : Type u_3} [Group G] (P : Generators G ι) :

      The canonical surjection from the free group on the generators to G.

      Equations
      Instances For
        @[reducible, inline]
        abbrev AddGroup.Generators.lift {G : Type u_1} {ι : Type u_3} [AddGroup G] (P : Generators G ι) :

        The canonical surjection from the free additive group on the generators to G.

        Equations
        Instances For
          theorem Group.Generators.lift_surjective {G : Type u_1} {ι : Type u_3} [Group G] (P : Generators G ι) :
          @[deprecated Group.Generators.lift_surjective (since := "2026-08-21")]
          theorem Group.Generators.lift_val_surjective {G : Type u_1} {ι : Type u_3} [Group G] (P : Generators G ι) :

          Alias of Group.Generators.lift_surjective.

          @[simp]
          theorem Group.Generators.range_lift_eq_top {G : Type u_1} {ι : Type u_3} [Group G] (P : Generators G ι) :
          @[simp]
          theorem AddGroup.Generators.range_lift_eq_top {G : Type u_1} {ι : Type u_3} [AddGroup G] (P : Generators G ι) :
          theorem Group.Generators.hom_ext {G : Type u_1} {ι : Type u_3} [Group G] (P : Generators G ι) {M : Type u_5} [Monoid M] (f g : G →* M) (h : ∀ (i : ι), f (P.val i) = g (P.val i)) :
          f = g

          If two homomorphisms coincide on the elements of a generating family, then they are equal.

          theorem AddGroup.Generators.hom_ext {G : Type u_1} {ι : Type u_3} [AddGroup G] (P : Generators G ι) {M : Type u_5} [AddMonoid M] (f g : G →+ M) (h : ∀ (i : ι), f (P.val i) = g (P.val i)) :
          f = g

          If two additive homomorphisms coincide on the elements of a generating family, then they are equal.

          def Group.Generators.ofSet {G : Type u_1} [Group G] {S : Set G} (h : Subgroup.closure S = ⊤) :
          Generators G ↑S

          The generating family obtained using a generating set S : Set G.

          Equations
          Instances For
            def AddGroup.Generators.ofSet {G : Type u_1} [AddGroup G] {S : Set G} (h : AddSubgroup.closure S = ⊤) :
            Generators G ↑S

            The generating family obtained using a generating set S : Set G.

            Equations
            Instances For
              @[simp]
              theorem Group.Generators.ofSet_val {G : Type u_1} [Group G] {S : Set G} (hS : Subgroup.closure S = ⊤) :
              @[simp]
              def Group.Generators.ofFreeGroupHom {G : Type u_1} {ι : Type u_3} [Group G] (φ : FreeGroup ι →* G) (hφ : Function.Surjective ⇑φ) :

              The generating family given by the canonical surjection from FreeGroup ι.

              Equations
              Instances For
                def AddGroup.Generators.ofFreeAddGroupHom {G : Type u_1} {ι : Type u_3} [AddGroup G] (φ : FreeAddGroup ι →+ G) (hφ : Function.Surjective ⇑φ) :

                The generating family given by the canonical surjection from FreeAddGroup ι.

                Equations
                Instances For
                  @[simp]
                  theorem Group.Generators.ofFreeGroupHom_val {G : Type u_1} {ι : Type u_3} [Group G] (φ : FreeGroup ι →* G) (hφ : Function.Surjective ⇑φ) :
                  @[simp]
                  @[simp]
                  theorem Group.Generators.ofFreeGroupHom_lift {G : Type u_1} {ι : Type u_3} [Group G] (φ : FreeGroup ι →* G) (hφ : Function.Surjective ⇑φ) :
                  (ofFreeGroupHom φ hφ).lift = φ

                  The canonical surjection attached to ofFreeGroupHom φ hφ is φ.

                  @[simp]
                  theorem AddGroup.Generators.ofFreeAddGroupHom_lift {G : Type u_1} {ι : Type u_3} [AddGroup G] (φ : FreeAddGroup ι →+ G) (hφ : Function.Surjective ⇑φ) :

                  The canonical surjection attached to ofFreeAddGroupHom φ hφ is φ.

                  def Group.Generators.map {G : Type u_1} {H : Type u_2} {ι : Type u_3} [Group G] [Group H] (P : Generators G ι) (f : G →* H) (hf : Function.Surjective ⇑f) :

                  The transport of a generating family along a surjective homomorphism.

                  Equations
                  • P.map f hf = { val := ⇑f ∘ P.val, closure_eq_top := ⋯ }
                  Instances For
                    def AddGroup.Generators.map {G : Type u_1} {H : Type u_2} {ι : Type u_3} [AddGroup G] [AddGroup H] (P : Generators G ι) (f : G →+ H) (hf : Function.Surjective ⇑f) :

                    The transport of a generating family along a surjective additive homomorphism.

                    Equations
                    • P.map f hf = { val := ⇑f ∘ P.val, closure_eq_top := ⋯ }
                    Instances For
                      @[simp]
                      theorem Group.Generators.map_val {G : Type u_1} {H : Type u_2} {ι : Type u_3} [Group G] [Group H] (P : Generators G ι) (f : G →* H) (hf : Function.Surjective ⇑f) :
                      (P.map f hf).val = ⇑f ∘ P.val
                      @[simp]
                      theorem AddGroup.Generators.map_val {G : Type u_1} {H : Type u_2} {ι : Type u_3} [AddGroup G] [AddGroup H] (P : Generators G ι) (f : G →+ H) (hf : Function.Surjective ⇑f) :
                      (P.map f hf).val = ⇑f ∘ P.val
                      def Group.Generators.reindex {G : Type u_1} {ι : Type u_3} {ι' : Type u_4} [Group G] (P : Generators G ι) {e : ι' → ι} (he : Function.Surjective e) :

                      The transport of a generating family along a surjection of index types.

                      Equations
                      Instances For
                        def AddGroup.Generators.reindex {G : Type u_1} {ι : Type u_3} {ι' : Type u_4} [AddGroup G] (P : Generators G ι) {e : ι' → ι} (he : Function.Surjective e) :

                        The transport of a generating family along a surjection of index types.

                        Equations
                        Instances For
                          @[simp]
                          theorem Group.Generators.reindex_val {G : Type u_1} {ι : Type u_3} {ι' : Type u_4} [Group G] (P : Generators G ι) {e : ι' → ι} (he : Function.Surjective e) :
                          (P.reindex he).val = P.val ∘ e
                          @[simp]
                          theorem AddGroup.Generators.reindex_val {G : Type u_1} {ι : Type u_3} {ι' : Type u_4} [AddGroup G] (P : Generators G ι) {e : ι' → ι} (he : Function.Surjective e) :
                          (P.reindex he).val = P.val ∘ e
                          theorem Group.Generators.fg {G : Type u_1} {ι : Type u_3} [Group G] [Finite ι] (P : Generators G ι) :
                          FG G

                          If G has a finite generating family, then G is finitely generated.

                          theorem AddGroup.Generators.fg {G : Type u_1} {ι : Type u_3} [AddGroup G] [Finite ι] (P : Generators G ι) :
                          FG G

                          If G has a finite generating family, then G is finitely generated.

                          theorem Group.fg_iff_nonempty_finite_generators {G : Type u_1} [Group G] :
                          FG G ↔ ∃ (n : ℕ), Nonempty (Generators G (Fin n))

                          A group is finitely generated if and only if it admits a finite generating family.

                          An additive group is finitely generated if and only if it admits a finite generating family.