HepLean Documentation

Mathlib.Algebra.Category.Grp.Basic

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

We introduce the bundled categories:

def Grp :
Type (u + 1)

The category of groups and group morphisms.

Equations
Instances For
    def AddGrp :
    Type (u + 1)

    The category of additive groups and group morphisms

    Equations
    Instances For
      Equations
      • One or more equations did not get rendered due to their size.
      Equations
      Equations
      instance Grp.instGroupα (X : Grp) :
      Group X
      Equations
      • X.instGroupα = X.str
      instance AddGrp.instGroupα (X : AddGrp) :
      Equations
      • X.instGroupα = X.str
      instance Grp.instCoeFunHomForallαGroup {X Y : Grp} :
      CoeFun (X Y) fun (x : X Y) => XY
      Equations
      • Grp.instCoeFunHomForallαGroup = { coe := fun (f : X →* Y) => f }
      instance AddGrp.instCoeFunHomForallαAddGroup {X Y : AddGrp} :
      CoeFun (X Y) fun (x : X Y) => XY
      Equations
      • AddGrp.instCoeFunHomForallαAddGroup = { coe := fun (f : X →+ Y) => f }
      instance Grp.instFunLike (X Y : Grp) :
      FunLike (X Y) X Y
      Equations
      • X.instFunLike Y = inferInstance
      instance AddGrp.instFunLike (X Y : AddGrp) :
      FunLike (X Y) X Y
      Equations
      • X.instFunLike Y = inferInstance
      @[simp]
      @[simp]
      theorem Grp.coe_comp {X Y Z : Grp} {f : X Y} {g : Y Z} :
      @[simp]
      theorem AddGrp.coe_comp {X Y Z : AddGrp} {f : X Y} {g : Y Z} :
      theorem Grp.comp_def {X Y Z : Grp} {f : X Y} {g : Y Z} :
      @[simp]
      theorem Grp.forget_map {X Y : Grp} (f : X Y) :
      theorem AddGrp.ext {X Y : AddGrp} {f g : X Y} (w : ∀ (x : X), f x = g x) :
      f = g
      theorem Grp.ext {X Y : Grp} {f g : X Y} (w : ∀ (x : X), f x = g x) :
      f = g
      def Grp.of (X : Type u) [Group X] :

      Construct a bundled Group from the underlying type and typeclass.

      Equations
      Instances For
        def AddGrp.of (X : Type u) [AddGroup X] :

        Construct a bundled AddGroup from the underlying type and typeclass.

        Equations
        Instances For
          @[simp]
          theorem Grp.coe_of (R : Type u) [Group R] :
          (Grp.of R) = R
          @[simp]
          theorem AddGrp.coe_of (R : Type u) [AddGroup R] :
          (AddGrp.of R) = R
          @[simp]
          theorem Grp.coe_comp' {G H K : Type u_1} [Group G] [Group H] [Group K] (f : G →* H) (g : H →* K) :
          @[simp]
          theorem AddGrp.coe_comp' {G H K : Type u_1} [AddGroup G] [AddGroup H] [AddGroup K] (f : G →+ H) (g : H →+ K) :
          @[simp]
          theorem Grp.coe_id' {G : Type u_1} [Group G] :
          instance Grp.instOneHom (G H : Grp) :
          One (G H)
          Equations
          • G.instOneHom H = inferInstance
          instance AddGrp.instZeroHom (G H : AddGrp) :
          Zero (G H)
          Equations
          • G.instZeroHom H = inferInstance
          @[simp]
          theorem Grp.one_apply (G H : Grp) (g : G) :
          1 g = 1
          @[simp]
          theorem AddGrp.zero_apply (G H : AddGrp) (g : G) :
          0 g = 0
          def Grp.ofHom {X Y : Type u} [Group X] [Group Y] (f : X →* Y) :

          Typecheck a MonoidHom as a morphism in Grp.

          Equations
          Instances For
            def AddGrp.ofHom {X Y : Type u} [AddGroup X] [AddGroup Y] (f : X →+ Y) :

            Typecheck an AddMonoidHom as a morphism in AddGroup.

            Equations
            Instances For
              theorem Grp.ofHom_apply {X Y : Type u_1} [Group X] [Group Y] (f : X →* Y) (x : X) :
              (Grp.ofHom f) x = f x
              theorem AddGrp.ofHom_apply {X Y : Type u_1} [AddGroup X] [AddGroup Y] (f : X →+ Y) (x : X) :
              (AddGrp.ofHom f) x = f x
              instance Grp.ofUnique (G : Type u_1) [Group G] [i : Unique G] :
              Unique (Grp.of G)
              Equations
              instance AddGrp.ofUnique (G : Type u_1) [AddGroup G] [i : Unique G] :
              Equations

              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
                  @[simp]
                  theorem AddGrp.uliftFunctor_map {x✝ x✝¹ : AddGrp} (f : x✝ x✝¹) :
                  AddGrp.uliftFunctor.map f = AddGrp.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))
                  @[simp]
                  theorem Grp.uliftFunctor_map {x✝ x✝¹ : Grp} (f : x✝ x✝¹) :
                  Grp.uliftFunctor.map f = Grp.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
                  def CommGrp :
                  Type (u + 1)

                  The category of commutative groups and group morphisms.

                  Equations
                  Instances For
                    def AddCommGrp :
                    Type (u + 1)

                    The category of additive commutative groups and group morphisms.

                    Equations
                    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
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Equations
                        • One or more equations did not get rendered due to their size.
                        Equations
                        Equations
                        • X.commGroupInstance = X.str
                        Equations
                        • X.addCommGroupInstance = X.str
                        instance CommGrp.instCoeFunHomForallαCommGroup {X Y : CommGrp} :
                        CoeFun (X Y) fun (x : X Y) => XY
                        Equations
                        • CommGrp.instCoeFunHomForallαCommGroup = { coe := fun (f : X →* Y) => f }
                        instance AddCommGrp.instCoeFunHomForallαAddCommGroup {X Y : AddCommGrp} :
                        CoeFun (X Y) fun (x : X Y) => XY
                        Equations
                        • AddCommGrp.instCoeFunHomForallαAddCommGroup = { coe := fun (f : X →+ Y) => f }
                        instance CommGrp.instFunLike (X Y : CommGrp) :
                        FunLike (X Y) X Y
                        Equations
                        • X.instFunLike Y = inferInstance
                        instance AddCommGrp.instFunLike (X Y : AddCommGrp) :
                        FunLike (X Y) X Y
                        Equations
                        • X.instFunLike Y = inferInstance
                        @[simp]
                        theorem CommGrp.coe_comp {X Y Z : CommGrp} {f : X Y} {g : Y Z} :
                        @[simp]
                        theorem AddCommGrp.coe_comp {X Y Z : AddCommGrp} {f : X Y} {g : Y Z} :
                        @[simp]
                        theorem CommGrp.forget_map {X Y : CommGrp} (f : X Y) :
                        @[simp]
                        theorem AddCommGrp.forget_map {X Y : AddCommGrp} (f : X Y) :
                        theorem AddCommGrp.ext {X Y : AddCommGrp} {f g : X Y} (w : ∀ (x : X), f x = g x) :
                        f = g
                        theorem CommGrp.ext {X Y : CommGrp} {f g : X Y} (w : ∀ (x : X), f x = g x) :
                        f = g
                        def CommGrp.of (G : Type u) [CommGroup G] :

                        Construct a bundled CommGroup from the underlying type and typeclass.

                        Equations
                        Instances For

                          Construct a bundled AddCommGroup from the underlying type and typeclass.

                          Equations
                          Instances For
                            @[simp]
                            theorem CommGrp.coe_of (R : Type u) [CommGroup R] :
                            (CommGrp.of R) = R
                            @[simp]
                            theorem AddCommGrp.coe_of (R : Type u) [AddCommGroup R] :
                            (AddCommGrp.of R) = R
                            @[simp]
                            theorem CommGrp.coe_comp' {G H K : Type u_1} [CommGroup G] [CommGroup H] [CommGroup K] (f : G →* H) (g : H →* K) :
                            @[simp]
                            theorem AddCommGrp.coe_comp' {G H K : Type u_1} [AddCommGroup G] [AddCommGroup H] [AddCommGroup K] (f : G →+ H) (g : H →+ K) :
                            instance CommGrp.ofUnique (G : Type u_1) [CommGroup G] [i : Unique G] :
                            Equations
                            instance AddCommGrp.ofUnique (G : Type u_1) [AddCommGroup G] [i : Unique G] :
                            Equations
                            Equations
                            • One or more equations did not get rendered due to their size.
                            Equations
                            • One or more equations did not get rendered due to their size.
                            instance CommGrp.instOneHom (G H : CommGrp) :
                            One (G H)
                            Equations
                            • G.instOneHom H = inferInstance
                            instance AddCommGrp.instZeroHom (G H : AddCommGrp) :
                            Zero (G H)
                            Equations
                            • G.instZeroHom H = inferInstance
                            @[simp]
                            theorem CommGrp.one_apply (G H : CommGrp) (g : G) :
                            1 g = 1
                            @[simp]
                            theorem AddCommGrp.zero_apply (G H : AddCommGrp) (g : G) :
                            0 g = 0
                            def CommGrp.ofHom {X Y : Type u} [CommGroup X] [CommGroup Y] (f : X →* Y) :

                            Typecheck a MonoidHom as a morphism in CommGroup.

                            Equations
                            Instances For

                              Typecheck an AddMonoidHom as a morphism in AddCommGroup.

                              Equations
                              Instances For
                                @[simp]
                                theorem CommGrp.ofHom_apply {X Y : Type u_1} [CommGroup X] [CommGroup Y] (f : X →* Y) (x : X) :
                                (CommGrp.ofHom f) x = f x
                                @[simp]
                                theorem AddCommGrp.ofHom_apply {X Y : Type u_1} [AddCommGroup X] [AddCommGroup Y] (f : X →+ Y) (x : X) :

                                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
                                    @[simp]
                                    theorem CommGrp.uliftFunctor_map {x✝ x✝¹ : CommGrp} (f : x✝ x✝¹) :
                                    CommGrp.uliftFunctor.map f = CommGrp.ofHom (MulEquiv.ulift.symm.toMonoidHom.comp (MonoidHom.comp f MulEquiv.ulift.toMonoidHom))
                                    @[simp]
                                    theorem AddCommGrp.uliftFunctor_map {x✝ x✝¹ : AddCommGrp} (f : x✝ x✝¹) :
                                    AddCommGrp.uliftFunctor.map f = AddCommGrp.ofHom (AddEquiv.ulift.symm.toAddMonoidHom.comp (AddMonoidHom.comp f AddEquiv.ulift.toAddMonoidHom))

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

                                    Equations
                                    Instances For
                                      @[simp]
                                      theorem AddCommGrp.asHom_apply {G : AddCommGrp} (g : G) (i : ) :
                                      theorem AddCommGrp.int_hom_ext {G : AddCommGrp} (f g : AddCommGrp.of G) (w : f 1 = g 1) :
                                      f = g
                                      def MulEquiv.toGrpIso {X Y : Grp} (e : X ≃* Y) :
                                      X Y

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

                                      Equations
                                      • e.toGrpIso = { hom := e.toMonoidHom, inv := e.symm.toMonoidHom, hom_inv_id := , inv_hom_id := }
                                      Instances For
                                        def AddEquiv.toAddGrpIso {X Y : AddGrp} (e : X ≃+ Y) :
                                        X Y

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

                                        Equations
                                        • e.toAddGrpIso = { hom := e.toAddMonoidHom, inv := e.symm.toAddMonoidHom, hom_inv_id := , inv_hom_id := }
                                        Instances For
                                          @[simp]
                                          theorem MulEquiv.toGrpIso_hom {X Y : Grp} (e : X ≃* Y) :
                                          e.toGrpIso.hom = e.toMonoidHom
                                          @[simp]
                                          theorem AddEquiv.toAddGrpIso_hom {X Y : AddGrp} (e : X ≃+ Y) :
                                          e.toAddGrpIso.hom = e.toAddMonoidHom
                                          @[simp]
                                          theorem AddEquiv.toAddGrpIso_inv {X Y : AddGrp} (e : X ≃+ Y) :
                                          e.toAddGrpIso.inv = e.symm.toAddMonoidHom
                                          @[simp]
                                          theorem MulEquiv.toGrpIso_inv {X Y : Grp} (e : X ≃* Y) :
                                          e.toGrpIso.inv = e.symm.toMonoidHom
                                          def MulEquiv.toCommGrpIso {X Y : CommGrp} (e : X ≃* Y) :
                                          X Y

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

                                          Equations
                                          • e.toCommGrpIso = { hom := e.toMonoidHom, inv := e.symm.toMonoidHom, hom_inv_id := , inv_hom_id := }
                                          Instances For
                                            def AddEquiv.toAddCommGrpIso {X Y : AddCommGrp} (e : X ≃+ Y) :
                                            X Y

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

                                            Equations
                                            • e.toAddCommGrpIso = { hom := e.toAddMonoidHom, inv := e.symm.toAddMonoidHom, hom_inv_id := , inv_hom_id := }
                                            Instances For
                                              @[simp]
                                              theorem AddEquiv.toAddCommGrpIso_inv {X Y : AddCommGrp} (e : X ≃+ Y) :
                                              e.toAddCommGrpIso.inv = e.symm.toAddMonoidHom
                                              @[simp]
                                              theorem MulEquiv.toCommGrpIso_inv {X Y : CommGrp} (e : X ≃* Y) :
                                              e.toCommGrpIso.inv = e.symm.toMonoidHom
                                              @[simp]
                                              theorem AddEquiv.toAddCommGrpIso_hom {X Y : AddCommGrp} (e : X ≃+ Y) :
                                              e.toAddCommGrpIso.hom = e.toAddMonoidHom
                                              @[simp]
                                              theorem MulEquiv.toCommGrpIso_hom {X Y : CommGrp} (e : X ≃* Y) :
                                              e.toCommGrpIso.hom = e.toMonoidHom
                                              def CategoryTheory.Iso.groupIsoToMulEquiv {X Y : Grp} (i : X Y) :
                                              X ≃* Y

                                              Build a MulEquiv from an isomorphism in the category Grp.

                                              Equations
                                              Instances For
                                                def CategoryTheory.Iso.addGroupIsoToAddEquiv {X Y : AddGrp} (i : X Y) :
                                                X ≃+ Y

                                                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
                                                      @[simp]
                                                      theorem CategoryTheory.Iso.addCommGroupIsoToAddEquiv_apply {X Y : AddCommGrp} (i : X Y) (a : X) :
                                                      i.addCommGroupIsoToAddEquiv a = i.hom a
                                                      @[simp]
                                                      theorem CategoryTheory.Iso.commGroupIsoToMulEquiv_symm_apply {X Y : CommGrp} (i : X Y) (a : Y) :
                                                      i.commGroupIsoToMulEquiv.symm a = i.inv a
                                                      @[simp]
                                                      theorem CategoryTheory.Iso.addCommGroupIsoToAddEquiv_symm_apply {X Y : AddCommGrp} (i : X Y) (a : Y) :
                                                      i.addCommGroupIsoToAddEquiv.symm a = i.inv a
                                                      @[simp]
                                                      theorem CategoryTheory.Iso.commGroupIsoToMulEquiv_apply {X Y : CommGrp} (i : X Y) (a : X) :
                                                      i.commGroupIsoToMulEquiv a = i.hom a
                                                      def mulEquivIsoGroupIso {X Y : Grp} :
                                                      X ≃* Y X Y

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

                                                      Equations
                                                      • mulEquivIsoGroupIso = { hom := fun (e : X ≃* Y) => e.toGrpIso, inv := fun (i : X Y) => i.groupIsoToMulEquiv, hom_inv_id := , inv_hom_id := }
                                                      Instances For
                                                        def addEquivIsoAddGroupIso {X Y : AddGrp} :
                                                        X ≃+ Y X Y

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

                                                        Equations
                                                        • addEquivIsoAddGroupIso = { hom := fun (e : X ≃+ Y) => e.toAddGrpIso, inv := fun (i : X Y) => i.addGroupIsoToAddEquiv, hom_inv_id := , inv_hom_id := }
                                                        Instances For
                                                          def mulEquivIsoCommGroupIso {X Y : CommGrp} :
                                                          X ≃* Y X Y

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

                                                          Equations
                                                          • mulEquivIsoCommGroupIso = { hom := fun (e : X ≃* Y) => e.toCommGrpIso, inv := fun (i : X Y) => i.commGroupIsoToMulEquiv, hom_inv_id := , inv_hom_id := }
                                                          Instances For
                                                            def addEquivIsoAddCommGroupIso {X Y : AddCommGrp} :
                                                            X ≃+ Y X Y

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

                                                            Equations
                                                            • addEquivIsoAddCommGroupIso = { hom := fun (e : X ≃+ Y) => e.toAddCommGrpIso, inv := fun (i : X Y) => i.addCommGroupIsoToAddEquiv, hom_inv_id := , inv_hom_id := }
                                                            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
                                                                • CategoryTheory.Aut.mulEquivPerm = CategoryTheory.Aut.isoPerm.groupIsoToMulEquiv
                                                                Instances For
                                                                  @[reducible, inline]
                                                                  abbrev GrpMax :
                                                                  Type ((max u1 u2) + 1)

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

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

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

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

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

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

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

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

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

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

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

                                                                            Equations
                                                                            Instances For

                                                                              @[simp] lemmas for MonoidHom.comp and categorical identities.

                                                                              @[simp]
                                                                              theorem MonoidHom.comp_id_grp {G : Grp} {H : Type u} [Group H] (f : G →* H) :
                                                                              @[simp]
                                                                              theorem AddMonoidHom.comp_id_addGrp {G : AddGrp} {H : Type u} [AddGroup H] (f : G →+ H) :
                                                                              @[simp]
                                                                              @[simp]
                                                                              theorem MonoidHom.comp_id_commGrp {G : CommGrp} {H : Type u} [CommGroup H] (f : G →* H) :
                                                                              @[simp]