Documentation

Mathlib.Algebra.Category.Grp.Basic

Category instances for Group, AddGroup, CommGroup, and AddCommGroup. #

We introduce the bundled categories:

along with the relevant forgetful functors between them, and to the bundled monoid categories.

structure AddGrpCat :
Type (u + 1)

The category of additive groups and group morphisms.

Instances For
    structure GrpCat :
    Type (u + 1)

    The category of groups and group morphisms.

    • carrier : Type u

      The underlying type.

    • str : Group ↑self
    Instances For
      @[instance_reducible]
      Equations
      @[reducible, inline]
      abbrev GrpCat.of (M : Type u) [Group M] :

      Construct a bundled GrpCat from the underlying type and typeclass.

      Equations
      • ↧M = { carrier := M, str := inst✝ }
      Instances For
        @[reducible, inline]
        abbrev AddGrpCat.of (M : Type u) [AddGroup M] :

        Construct a bundled AddGrpCat from the underlying type and typeclass.

        Equations
        • ↧M = { carrier := M, str := inst✝ }
        Instances For
          structure AddGrpCat.Hom (A B : AddGrpCat) :

          The type of morphisms in AddGrpCat R.

          • _mkInternal :: (
            • hom' : ↑A →+ ↑B

              The underlying monoid homomorphism.

          • )
          Instances For
            theorem AddGrpCat.Hom.ext {A B : AddGrpCat} {x y : A.Hom B} (hom' : x.hom' = y.hom') :
            x = y
            theorem AddGrpCat.Hom.ext_iff {A B : AddGrpCat} {x y : A.Hom B} :
            x = y ↔ x.hom' = y.hom'
            structure GrpCat.Hom (A B : GrpCat) :

            The type of morphisms in GrpCat R.

            • _mkInternal :: (
              • hom' : ↑A →* ↑B

                The underlying monoid homomorphism.

            • )
            Instances For
              theorem GrpCat.Hom.ext_iff {A B : GrpCat} {x y : A.Hom B} :
              x = y ↔ x.hom' = y.hom'
              theorem GrpCat.Hom.ext {A B : GrpCat} {x y : A.Hom B} (hom' : x.hom' = y.hom') :
              x = y
              @[instance_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[instance_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[instance_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[instance_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[reducible, inline]
              abbrev GrpCat.Hom.hom {X Y : GrpCat} (f : X.Hom Y) :
              ↑X →* ↑Y

              Turn a morphism in GrpCat back into a MonoidHom.

              Equations
              Instances For
                @[reducible, inline]
                abbrev AddGrpCat.Hom.hom {X Y : AddGrpCat} (f : X.Hom Y) :
                ↑X →+ ↑Y

                Turn a morphism in AddGrpCat back into an AddMonoidHom.

                Equations
                Instances For
                  @[reducible, inline]
                  abbrev GrpCat.ofHom {X Y : Type u} [Group X] [Group Y] (f : X →* Y) :
                  ↧X ⟶ ↧Y

                  Typecheck a MonoidHom as a morphism in GrpCat.

                  Equations
                  Instances For
                    @[reducible, inline]
                    abbrev AddGrpCat.ofHom {X Y : Type u} [AddGroup X] [AddGroup Y] (f : X →+ Y) :
                    ↧X ⟶ ↧Y

                    Typecheck an AddMonoidHom as a morphism in AddGrpCat.

                    Equations
                    Instances For
                      def GrpCat.Hom.Simps.hom (X Y : GrpCat) (f : X.Hom Y) :
                      ↑X →* ↑Y

                      Use the ConcreteCategory.hom projection for @[simps] lemmas.

                      Equations
                      Instances For

                        The results below duplicate the ConcreteCategory simp lemmas, but we can keep them for dsimp.

                        theorem GrpCat.ext {X Y : GrpCat} {f g : X ⟶ Y} (w : ∀ (x : ↑X), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) x) :
                        f = g
                        theorem AddGrpCat.ext {X Y : AddGrpCat} {f g : X ⟶ Y} (w : ∀ (x : ↑X), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) x) :
                        f = g
                        theorem GrpCat.coe_of (R : Type u) [Group R] :
                        ↑↧R = R
                        theorem AddGrpCat.coe_of (R : Type u) [AddGroup R] :
                        ↑↧R = R
                        @[simp]
                        theorem GrpCat.hom_comp {X Y T : GrpCat} (f : X ⟶ Y) (g : Y ⟶ T) :
                        @[simp]
                        theorem AddGrpCat.hom_comp {X Y T : AddGrpCat} (f : X ⟶ Y) (g : Y ⟶ T) :
                        theorem GrpCat.hom_ext {X Y : GrpCat} {f g : X ⟶ Y} (hf : Hom.hom f = Hom.hom g) :
                        f = g
                        theorem AddGrpCat.hom_ext {X Y : AddGrpCat} {f g : X ⟶ Y} (hf : Hom.hom f = Hom.hom g) :
                        f = g
                        theorem AddGrpCat.hom_ext_iff {X Y : AddGrpCat} {f g : X ⟶ Y} :
                        theorem GrpCat.hom_ext_iff {X Y : GrpCat} {f g : X ⟶ Y} :
                        @[simp]
                        theorem GrpCat.hom_ofHom {R S : Type u} [Group R] [Group S] (f : R →* S) :
                        @[simp]
                        theorem AddGrpCat.hom_ofHom {R S : Type u} [AddGroup R] [AddGroup S] (f : R →+ S) :
                        @[simp]
                        theorem GrpCat.ofHom_hom {X Y : GrpCat} (f : X ⟶ Y) :
                        @[simp]
                        theorem AddGrpCat.ofHom_hom {X Y : AddGrpCat} (f : X ⟶ Y) :
                        @[simp]
                        theorem GrpCat.ofHom_comp {X Y Z : Type u} [Group X] [Group Y] [Group Z] (f : X →* Y) (g : Y →* Z) :
                        @[simp]
                        theorem AddGrpCat.ofHom_comp {X Y Z : Type u} [AddGroup X] [AddGroup Y] [AddGroup Z] (f : X →+ Y) (g : Y →+ Z) :
                        theorem GrpCat.ofHom_apply {X Y : Type u} [Group X] [Group Y] (f : X →* Y) (x : X) :
                        theorem AddGrpCat.ofHom_apply {X Y : Type u} [AddGroup X] [AddGroup Y] (f : X →+ Y) (x : X) :
                        @[instance_reducible]
                        Equations
                        @[instance_reducible]
                        Equations
                        @[instance_reducible]
                        Equations
                        • One or more equations did not get rendered due to their size.
                        @[instance_reducible]
                        Equations
                        • One or more equations did not get rendered due to their size.
                        @[instance_reducible]
                        instance GrpCat.instOneHom (G H : GrpCat) :
                        One (G ⟶ H)
                        Equations
                        @[instance_reducible]
                        instance AddGrpCat.instZeroHom (G H : AddGrpCat) :
                        Zero (G ⟶ H)
                        Equations
                        @[simp]
                        theorem GrpCat.one_apply (G H : GrpCat) (g : ↑G) :
                        theorem GrpCat.ofHom_injective {X Y : Type u} [Group X] [Group Y] :
                        Function.Injective fun (f : X →* Y) => ofHom f
                        theorem AddGrpCat.ofHom_injective {X Y : Type u} [AddGroup X] [AddGroup Y] :
                        Function.Injective fun (f : X →+ Y) => ofHom f

                        The forgetful functor from groups to monoids is fully faithful.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For

                          The forgetful functor from additive groups to additive monoids is fully faithful.

                          Equations
                          • One or more equations did not get rendered due to their size.
                          Instances For
                            @[reducible, inline, deprecated AddGrpCat.fullyFaithfulForget₂ToAddMonCat (since := "2026-10-13")]

                            Deprecated alias for AddGrpCat.fullyFaithfulForget₂ToAddMonCat.

                            Equations
                            Instances For

                              Universe lift functor for groups.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                Universe lift functor for additive groups.

                                Equations
                                • One or more equations did not get rendered due to their size.
                                Instances For
                                  structure AddCommGrpCat :
                                  Type (u + 1)

                                  The category of additive groups and group morphisms.

                                  Instances For
                                    structure CommGrpCat :
                                    Type (u + 1)

                                    The category of groups and group morphisms.

                                    Instances For
                                      @[reducible, inline]
                                      abbrev Ab :
                                      Type (u_1 + 1)

                                      Ab is an abbreviation for AddCommGrpCat, for the sake of mathematicians' sanity.

                                      Equations
                                      Instances For
                                        @[reducible, inline]

                                        Construct a bundled CommGrpCat from the underlying type and typeclass.

                                        Equations
                                        • ↧M = { carrier := M, str := inst✝ }
                                        Instances For
                                          @[reducible, inline]

                                          Construct a bundled AddCommGrpCat from the underlying type and typeclass.

                                          Equations
                                          • ↧M = { carrier := M, str := inst✝ }
                                          Instances For
                                            structure AddCommGrpCat.Hom (A B : AddCommGrpCat) :

                                            The type of morphisms in AddCommGrpCat R.

                                            • _mkInternal :: (
                                              • hom' : ↑A →+ ↑B

                                                The underlying monoid homomorphism.

                                            • )
                                            Instances For
                                              theorem AddCommGrpCat.Hom.ext_iff {A B : AddCommGrpCat} {x y : A.Hom B} :
                                              x = y ↔ x.hom' = y.hom'
                                              theorem AddCommGrpCat.Hom.ext {A B : AddCommGrpCat} {x y : A.Hom B} (hom' : x.hom' = y.hom') :
                                              x = y
                                              structure CommGrpCat.Hom (A B : CommGrpCat) :

                                              The type of morphisms in CommGrpCat R.

                                              • _mkInternal :: (
                                                • hom' : ↑A →* ↑B

                                                  The underlying monoid homomorphism.

                                              • )
                                              Instances For
                                                theorem CommGrpCat.Hom.ext_iff {A B : CommGrpCat} {x y : A.Hom B} :
                                                x = y ↔ x.hom' = y.hom'
                                                theorem CommGrpCat.Hom.ext {A B : CommGrpCat} {x y : A.Hom B} (hom' : x.hom' = y.hom') :
                                                x = y
                                                @[instance_reducible]
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                @[instance_reducible]
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                @[instance_reducible]
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                @[instance_reducible]
                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                @[reducible, inline]
                                                abbrev CommGrpCat.Hom.hom {X Y : CommGrpCat} (f : X.Hom Y) :
                                                ↑X →* ↑Y

                                                Turn a morphism in CommGrpCat back into a MonoidHom.

                                                Equations
                                                Instances For
                                                  @[reducible, inline]
                                                  abbrev AddCommGrpCat.Hom.hom {X Y : AddCommGrpCat} (f : X.Hom Y) :
                                                  ↑X →+ ↑Y

                                                  Turn a morphism in AddCommGrpCat back into an AddMonoidHom.

                                                  Equations
                                                  Instances For
                                                    @[reducible, inline]
                                                    abbrev CommGrpCat.ofHom {X Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) :
                                                    ↧X ⟶ ↧Y

                                                    Typecheck a MonoidHom as a morphism in CommGrpCat.

                                                    Equations
                                                    Instances For
                                                      @[reducible, inline]
                                                      abbrev AddCommGrpCat.ofHom {X Y : Type u} [AddCommGroup X] [AddCommGroup Y] (f : X →+ Y) :
                                                      ↧X ⟶ ↧Y

                                                      Typecheck an AddMonoidHom as a morphism in AddCommGrpCat.

                                                      Equations
                                                      Instances For
                                                        def CommGrpCat.Hom.Simps.hom (X Y : CommGrpCat) (f : X.Hom Y) :
                                                        ↑X →* ↑Y

                                                        Use the ConcreteCategory.hom projection for @[simps] lemmas.

                                                        Equations
                                                        Instances For
                                                          def AddCommGrpCat.Hom.Simps.hom (X Y : AddCommGrpCat) (f : X.Hom Y) :
                                                          ↑X →+ ↑Y

                                                          Use the ConcreteCategory.hom projection for @[simps] lemmas.

                                                          Equations
                                                          Instances For

                                                            The results below duplicate the ConcreteCategory simp lemmas, but we can keep them for dsimp.

                                                            theorem CommGrpCat.ext {X Y : CommGrpCat} {f g : X ⟶ Y} (w : ∀ (x : ↑X), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) x) :
                                                            f = g
                                                            theorem CommGrpCat.coe_of (R : Type u) [CommGroup R] :
                                                            ↑↧R = R
                                                            theorem AddCommGrpCat.coe_of (R : Type u) [AddCommGroup R] :
                                                            ↑↧R = R
                                                            @[simp]
                                                            theorem CommGrpCat.hom_ext {X Y : CommGrpCat} {f g : X ⟶ Y} (hf : Hom.hom f = Hom.hom g) :
                                                            f = g
                                                            theorem AddCommGrpCat.hom_ext {X Y : AddCommGrpCat} {f g : X ⟶ Y} (hf : Hom.hom f = Hom.hom g) :
                                                            f = g
                                                            theorem AddCommGrpCat.hom_ext_iff {X Y : AddCommGrpCat} {f g : X ⟶ Y} :
                                                            theorem CommGrpCat.hom_ext_iff {X Y : CommGrpCat} {f g : X ⟶ Y} :
                                                            @[simp]
                                                            theorem CommGrpCat.hom_ofHom {X Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) :
                                                            @[simp]
                                                            theorem AddCommGrpCat.hom_ofHom {X Y : Type u} [AddCommGroup X] [AddCommGroup Y] (f : X →+ Y) :
                                                            @[simp]
                                                            theorem CommGrpCat.ofHom_hom {X Y : CommGrpCat} (f : X ⟶ Y) :
                                                            @[simp]
                                                            theorem AddCommGrpCat.ofHom_hom {X Y : AddCommGrpCat} (f : X ⟶ Y) :
                                                            @[simp]
                                                            theorem CommGrpCat.ofHom_comp {X Y Z : Type u} [CommGroup X] [CommGroup Y] [CommGroup Z] (f : X →* Y) (g : Y →* Z) :
                                                            theorem CommGrpCat.ofHom_apply {X Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) (x : X) :
                                                            @[instance_reducible]
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            @[instance_reducible]
                                                            Equations
                                                            • One or more equations did not get rendered due to their size.

                                                            The forgetful functor from commutative groups to groups is fully faithful.

                                                            Equations
                                                            • One or more equations did not get rendered due to their size.
                                                            Instances For

                                                              The forgetful functor from additive commutative groups to additive groups is fully faithful.

                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              Instances For
                                                                @[instance_reducible]
                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                @[instance_reducible]
                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                @[instance_reducible]
                                                                instance CommGrpCat.instOneHom (G H : CommGrpCat) :
                                                                One (G ⟶ H)
                                                                Equations
                                                                @[instance_reducible]
                                                                Equations

                                                                Universe lift functor for commutative groups.

                                                                Equations
                                                                • One or more equations did not get rendered due to their size.
                                                                Instances For

                                                                  Universe lift functor for additive commutative groups.

                                                                  Equations
                                                                  • One or more equations did not get rendered due to their size.
                                                                  Instances For
                                                                    def AddCommGrpCat.asHom {G : AddCommGrpCat} (g : ↑G) :
                                                                    ↧ℤ ⟶ G

                                                                    Any element of an abelian group gives a unique morphism from ℤ sending 1 to that element.

                                                                    Equations
                                                                    Instances For
                                                                      @[simp]
                                                                      theorem AddCommGrpCat.asHom_hom_apply {G : AddCommGrpCat} (g : ↑G) (n : ℤ) :
                                                                      (Hom.hom (asHom g)) n = n • g
                                                                      def MulEquiv.toGrpIso {X Y : GrpCat} (e : ↑X ≃* ↑Y) :
                                                                      X ≅ Y

                                                                      Build an isomorphism in the category GrpCat from a MulEquiv between Groups.

                                                                      Equations
                                                                      Instances For
                                                                        def AddEquiv.toAddGrpIso {X Y : AddGrpCat} (e : ↑X ≃+ ↑Y) :
                                                                        X ≅ Y

                                                                        Build an isomorphism in the category AddGrpCat from an AddEquiv between AddGroups.

                                                                        Equations
                                                                        Instances For
                                                                          @[simp]
                                                                          theorem MulEquiv.toGrpIso_hom {X Y : GrpCat} (e : ↑X ≃* ↑Y) :
                                                                          @[simp]
                                                                          def MulEquiv.toCommGrpIso {X Y : CommGrpCat} (e : ↑X ≃* ↑Y) :
                                                                          X ≅ Y

                                                                          Build an isomorphism in the category CommGrpCat from a MulEquiv between CommGroups.

                                                                          Equations
                                                                          Instances For
                                                                            def AddEquiv.toAddCommGrpIso {X Y : AddCommGrpCat} (e : ↑X ≃+ ↑Y) :
                                                                            X ≅ Y

                                                                            Build an isomorphism in the category AddCommGrpCat from an AddEquiv between AddCommGroups.

                                                                            Equations
                                                                            Instances For
                                                                              def CategoryTheory.Iso.groupIsoToMulEquiv {X Y : GrpCat} (i : X ≅ Y) :
                                                                              ↑X ≃* ↑Y

                                                                              Build a MulEquiv from an isomorphism in the category GrpCat.

                                                                              Equations
                                                                              Instances For

                                                                                Build an addEquiv from an isomorphism in the category AddGrpCat

                                                                                Equations
                                                                                Instances For

                                                                                  Build a MulEquiv from an isomorphism in the category CommGrpCat.

                                                                                  Equations
                                                                                  Instances For

                                                                                    Build an AddEquiv from an isomorphism in the category AddCommGrpCat.

                                                                                    Equations
                                                                                    Instances For
                                                                                      def mulEquivIsoGroupIso {X Y : GrpCat} :
                                                                                      ↑X ≃* ↑Y ≅ X ≅ Y

                                                                                      multiplicative equivalences between Groups are the same as (isomorphic to) isomorphisms in GrpCat

                                                                                      Equations
                                                                                      Instances For
                                                                                        def addEquivIsoAddGroupIso {X Y : AddGrpCat} :
                                                                                        ↑X ≃+ ↑Y ≅ X ≅ Y

                                                                                        Additive equivalences between AddGroups are the same as (isomorphic to) isomorphisms in AddGrpCat.

                                                                                        Equations
                                                                                        Instances For
                                                                                          def mulEquivIsoCommGroupIso {X Y : CommGrpCat} :
                                                                                          ↑X ≃* ↑Y ≅ X ≅ Y

                                                                                          Multiplicative equivalences between CommGroups are the same as (isomorphic to) isomorphisms in CommGrpCat.

                                                                                          Equations
                                                                                          Instances For

                                                                                            Additive equivalences between AddCommGroups are the same as (isomorphic to) isomorphisms in AddCommGrpCat.

                                                                                            Equations
                                                                                            • One or more equations did not get rendered due to their size.
                                                                                            Instances For
                                                                                              def CategoryTheory.Aut.isoPerm {α : Type u} :
                                                                                              ↧(Aut α) ≅ ↧(Equiv.Perm α)

                                                                                              The (bundled) group of automorphisms of a type is isomorphic to the (bundled) group of permutations.

                                                                                              Equations
                                                                                              • One or more equations did not get rendered due to their size.
                                                                                              Instances For

                                                                                                The (unbundled) group of automorphisms of a type is MulEquiv to the (unbundled) group of permutations.

                                                                                                Equations
                                                                                                Instances For
                                                                                                  @[reducible, inline]
                                                                                                  abbrev GrpMax :
                                                                                                  Type ((max u1 u2) + 1)

                                                                                                  An alias for GrpCat.{max u v}, to deal around unification issues.

                                                                                                  Equations
                                                                                                  Instances For
                                                                                                    @[reducible, inline]
                                                                                                    abbrev GrpMaxAux :
                                                                                                    Type ((max u1 u2) + 1)

                                                                                                    An alias for AddGrpCat.{max u v}, to deal around unification issues.

                                                                                                    Equations
                                                                                                    Instances For
                                                                                                      @[reducible, inline]
                                                                                                      abbrev AddGrpMax :
                                                                                                      Type ((max u1 u2) + 1)

                                                                                                      An alias for AddGrpCat.{max u v}, to deal around unification issues.

                                                                                                      Equations
                                                                                                      Instances For
                                                                                                        @[reducible, inline]
                                                                                                        abbrev CommGrpMax :
                                                                                                        Type ((max u1 u2) + 1)

                                                                                                        An alias for CommGrpCat.{max u v}, to deal around unification issues.

                                                                                                        Equations
                                                                                                        Instances For
                                                                                                          @[reducible, inline]
                                                                                                          abbrev AddCommGrpMaxAux :
                                                                                                          Type ((max u1 u2) + 1)

                                                                                                          An alias for AddCommGrpCat.{max u v}, to deal around unification issues.

                                                                                                          Equations
                                                                                                          Instances For
                                                                                                            @[reducible, inline]
                                                                                                            abbrev AddCommGrpMax :
                                                                                                            Type ((max u1 u2) + 1)

                                                                                                            An alias for AddCommGrpCat.{max u v}, to deal around unification issues.

                                                                                                            Equations
                                                                                                            Instances For