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
      @[implicit_reducible]
      Equations
      @[reducible, inline]
      abbrev GrpCat.of (M : Type u) [Group M] :

      Construct a bundled GrpCat from the underlying type and typeclass.

      Equations
      Instances For
        @[reducible, inline]
        abbrev AddGrpCat.of (M : Type u) [AddGroup M] :

        Construct a bundled AddGrpCat from the underlying type and typeclass.

        Equations
        Instances For
          structure AddGrpCat.Hom (A B : AddGrpCat) :

          The type of morphisms in AddGrpCat R.

          • hom' : A →+ B

            The underlying monoid homomorphism.

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

            The type of morphisms in GrpCat R.

            • 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
              @[implicit_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[implicit_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[implicit_reducible]
              Equations
              • One or more equations did not get rendered due to their size.
              @[implicit_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) :
                  of X of 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) :
                    of X of 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.

                        @[deprecated CategoryTheory.ConcreteCategory.forget_map_eq_ofHom (since := "2026-02-10")]
                        theorem GrpCat.forget_map {C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] {FC : outParam (CCType u_2)} {CC : outParam (CType w)} [outParam ((X Y : C) → FunLike (FC X Y) (CC X) (CC Y))] [CategoryTheory.ConcreteCategory C FC] {X Y : C} (f : X Y) :

                        Alias of CategoryTheory.ConcreteCategory.forget_map_eq_ofHom.

                        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] :
                        (of R) = R
                        theorem AddGrpCat.coe_of (R : Type u) [AddGroup R] :
                        (of 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) :
                        @[implicit_reducible]
                        Equations
                        • One or more equations did not get rendered due to their size.
                        @[implicit_reducible]
                        Equations
                        • One or more equations did not get rendered due to their size.
                        @[implicit_reducible]
                        instance GrpCat.instOneHom (G H : GrpCat) :
                        One (G H)
                        Equations
                        @[implicit_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

                            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 AddCommGroup, for the sake of mathematicians' sanity.

                                    Equations
                                    Instances For
                                      @[reducible, inline]

                                      Construct a bundled CommGrpCat from the underlying type and typeclass.

                                      Equations
                                      Instances For
                                        @[reducible, inline]

                                        Construct a bundled AddCommGrpCat from the underlying type and typeclass.

                                        Equations
                                        Instances For
                                          structure AddCommGrpCat.Hom (A B : AddCommGrpCat) :

                                          The type of morphisms in AddCommGrpCat R.

                                          • hom' : A →+ B

                                            The underlying monoid homomorphism.

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

                                            The type of morphisms in CommGrpCat R.

                                            • 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
                                              @[implicit_reducible]
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              @[implicit_reducible]
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              @[implicit_reducible]
                                              Equations
                                              • One or more equations did not get rendered due to their size.
                                              @[implicit_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) :
                                                  of X of 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) :
                                                    of X of 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.

                                                          @[deprecated CategoryTheory.ConcreteCategory.forget_map_eq_ofHom (since := "2026-02-10")]
                                                          theorem CommGrpCat.forget_map {C : Type u_1} [CategoryTheory.Category.{v_1, u_1} C] {FC : outParam (CCType u_2)} {CC : outParam (CType w)} [outParam ((X Y : C) → FunLike (FC X Y) (CC X) (CC Y))] [CategoryTheory.ConcreteCategory C FC] {X Y : C} (f : X Y) :

                                                          Alias of CategoryTheory.ConcreteCategory.forget_map_eq_ofHom.

                                                          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] :
                                                          (of R) = R
                                                          theorem AddCommGrpCat.coe_of (R : Type u) [AddCommGroup R] :
                                                          (of 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 CommGrpCat.hom_ext_iff {X Y : CommGrpCat} {f g : X Y} :
                                                          theorem AddCommGrpCat.hom_ext_iff {X Y : AddCommGrpCat} {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) :
                                                          @[implicit_reducible]
                                                          Equations
                                                          • One or more equations did not get rendered due to their size.
                                                          @[implicit_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
                                                              @[implicit_reducible]
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              @[implicit_reducible]
                                                              Equations
                                                              • One or more equations did not get rendered due to their size.
                                                              @[implicit_reducible]
                                                              instance CommGrpCat.instOneHom (G H : CommGrpCat) :
                                                              One (G H)
                                                              Equations
                                                              @[implicit_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) :

                                                                  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 AddGroup 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 AddGroup

                                                                              Equations
                                                                              Instances For

                                                                                Build a MulEquiv from an isomorphism in the category CommGroup.

                                                                                Equations
                                                                                Instances For

                                                                                  Build an AddEquiv from an isomorphism in the category AddCommGroup.

                                                                                  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

                                                                                            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