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

      Construct a bundled GrpCat from the underlying type and typeclass.

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

        Construct a bundled AddGrpCat from the underlying type and typeclass.

        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 {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.

            • 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
              @[reducible, inline]
              abbrev GrpCat.Hom.hom {X Y : GrpCat} (f : X.Hom Y) :
              X →* Y

              Turn a morphism in GrpCat back into a MonoidHom.

              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.

                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.

                  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.

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

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

                      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.ext_iff {X Y : GrpCat} {f g : X Y} :
                        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) :
                        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 GrpCat.hom_ext_iff {X Y : GrpCat} {f g : X Y} :
                        f = g Hom.hom f = Hom.hom g
                        theorem AddGrpCat.hom_ext_iff {X Y : AddGrpCat} {f g : X Y} :
                        f = g Hom.hom f = Hom.hom g
                        @[simp]
                        theorem GrpCat.hom_ofHom {R S : Type u} [Group R] [Group S] (f : R →* S) :
                        Hom.hom (ofHom f) = f
                        @[simp]
                        theorem AddGrpCat.hom_ofHom {R S : Type u} [AddGroup R] [AddGroup S] (f : R →+ S) :
                        Hom.hom (ofHom f) = f
                        @[simp]
                        theorem GrpCat.ofHom_hom {X Y : GrpCat} (f : X Y) :
                        ofHom (Hom.hom f) = f
                        @[simp]
                        theorem AddGrpCat.ofHom_hom {X Y : AddGrpCat} (f : X Y) :
                        ofHom (Hom.hom f) = f
                        @[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) :
                        @[implicit_reducible]
                        instance GrpCat.instInhabited :
                        Inhabited GrpCat
                        @[implicit_reducible]
                        @[implicit_reducible]
                        @[implicit_reducible]
                        @[implicit_reducible]
                        instance GrpCat.instOneHom (G H : GrpCat) :
                        One (G H)
                        @[implicit_reducible]
                        instance AddGrpCat.instZeroHom (G H : AddGrpCat) :
                        Zero (G H)
                        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.

                        Instances For

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

                          Instances For

                            Universe lift functor for groups.

                            Instances For

                              Universe lift functor for additive groups.

                              Instances For
                                @[simp]
                                theorem GrpCat.uliftFunctor_obj (X : GrpCat) :
                                uliftFunctor.obj X = of (ULift.{u, v} X)
                                @[simp]
                                theorem AddGrpCat.uliftFunctor_obj (X : AddGrpCat) :
                                uliftFunctor.obj X = of (ULift.{u, v} X)
                                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.

                                    Instances For
                                      @[implicit_reducible]
                                      @[implicit_reducible]
                                      @[reducible, inline]

                                      Construct a bundled CommGrpCat from the underlying type and typeclass.

                                      Instances For
                                        @[reducible, inline]

                                        Construct a bundled AddCommGrpCat from the underlying type and typeclass.

                                        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_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.

                                            • hom' : A →* B

                                              The underlying monoid homomorphism.

                                            Instances For
                                              theorem CommGrpCat.Hom.ext {A B : CommGrpCat} {x y : A.Hom B} (hom' : x.hom' = y.hom') :
                                              x = y
                                              theorem CommGrpCat.Hom.ext_iff {A B : CommGrpCat} {x y : A.Hom B} :
                                              x = y x.hom' = y.hom'
                                              @[reducible, inline]
                                              abbrev CommGrpCat.Hom.hom {X Y : CommGrpCat} (f : X.Hom Y) :
                                              X →* Y

                                              Turn a morphism in CommGrpCat back into a MonoidHom.

                                              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.

                                                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.

                                                  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.

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

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

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

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

                                                        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 AddCommGrpCat.ext {X Y : AddCommGrpCat} {f g : X Y} (w : ∀ (x : X), (CategoryTheory.ConcreteCategory.hom f) x = (CategoryTheory.ConcreteCategory.hom g) x) :
                                                          f = g
                                                          @[implicit_reducible]
                                                          @[implicit_reducible]
                                                          theorem CommGrpCat.coe_of (R : Type u) [CommGroup R] :
                                                          (of R) = R
                                                          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} :
                                                          f = g Hom.hom f = Hom.hom g
                                                          theorem CommGrpCat.hom_ext_iff {X Y : CommGrpCat} {f g : X Y} :
                                                          f = g Hom.hom f = Hom.hom g
                                                          @[simp]
                                                          theorem CommGrpCat.hom_ofHom {X Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) :
                                                          Hom.hom (ofHom f) = f
                                                          @[simp]
                                                          theorem AddCommGrpCat.hom_ofHom {X Y : Type u} [AddCommGroup X] [AddCommGroup Y] (f : X →+ Y) :
                                                          Hom.hom (ofHom f) = f
                                                          @[simp]
                                                          theorem CommGrpCat.ofHom_hom {X Y : CommGrpCat} (f : X Y) :
                                                          ofHom (Hom.hom f) = f
                                                          @[simp]
                                                          theorem AddCommGrpCat.ofHom_hom {X Y : AddCommGrpCat} (f : X Y) :
                                                          ofHom (Hom.hom f) = f
                                                          @[simp]
                                                          theorem CommGrpCat.ofHom_comp {X Y Z : Type u} [CommGroup X] [CommGroup Y] [CommGroup Z] (f : X →* Y) (g : Y →* Z) :
                                                          @[implicit_reducible]

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

                                                          Instances For

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

                                                            Instances For
                                                              @[implicit_reducible]
                                                              instance CommGrpCat.instOneHom (G H : CommGrpCat) :
                                                              One (G H)
                                                              @[implicit_reducible]
                                                              instance AddCommGrpCat.instZeroHom (G H : AddCommGrpCat) :
                                                              Zero (G H)
                                                              theorem CommGrpCat.ofHom_injective {X Y : Type u} [CommGroup X] [CommGroup Y] :
                                                              Function.Injective fun (f : X →* Y) => ofHom f
                                                              theorem AddCommGrpCat.ofHom_injective {X Y : Type u} [AddCommGroup X] [AddCommGroup Y] :
                                                              Function.Injective fun (f : X →+ Y) => ofHom f

                                                              Universe lift functor for commutative groups.

                                                              Instances For

                                                                Universe lift functor for additive commutative groups.

                                                                Instances For
                                                                  @[simp]
                                                                  theorem AddCommGrpCat.uliftFunctor_obj (X : AddCommGrpCat) :
                                                                  uliftFunctor.obj X = of (ULift.{u, v} X)
                                                                  @[simp]
                                                                  theorem CommGrpCat.uliftFunctor_obj (X : CommGrpCat) :
                                                                  uliftFunctor.obj X = of (ULift.{u, v} X)
                                                                  def AddCommGrpCat.asHom {G : AddCommGrpCat} (g : G) :
                                                                  of G

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

                                                                  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.

                                                                    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.

                                                                      Instances For
                                                                        def MulEquiv.toCommGrpIso {X Y : CommGrpCat} (e : X ≃* Y) :
                                                                        X Y

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

                                                                        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.

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

                                                                            Build a MulEquiv from an isomorphism in the category GrpCat.

                                                                            Instances For

                                                                              Build an addEquiv from an isomorphism in the category AddGroup

                                                                              Instances For

                                                                                Build a MulEquiv from an isomorphism in the category CommGroup.

                                                                                Instances For

                                                                                  Build an AddEquiv from an isomorphism in the category AddCommGroup.

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

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

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

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

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

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

                                                                                        Instances For

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

                                                                                          Instances For

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

                                                                                            Instances For

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

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

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

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

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

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

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

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

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

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

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

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

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

                                                                                                          Instances For