Documentation

Mathlib.Algebra.Category.SemigroupCat.Basic

Category instances for Mul, Add, Semigroup and AddSemigroup #

We introduce the bundled categories:

This closely follows Mathlib.Algebra.Category.MonCat.Basic.

TODO #

def AddMagmaCat :
Type (u + 1)

The category of additive magmas and additive magma morphisms.

Instances For
    def MagmaCat :
    Type (u + 1)

    The category of magmas and magma morphisms.

    Instances For
      theorem AddMagmaCat.bundledHom.proof_3 {α : Type u_1} {β : Type u_1} {γ : Type u_1} (Iα : Add α) (Iβ : Add β) (Iγ : Add γ) (f : AddHom α β) (g : AddHom β γ) :
      g f = g f
      theorem AddMagmaCat.bundledHom.proof_2 {α : Type u_1} (I : Add α) :
      (AddHom.id α).toFun = id
      theorem AddMagmaCat.bundledHom.proof_1 :
      ∀ {α β : Type u_1} ( : Add α) ( : Add β), Function.Injective fun f => f
      instance MagmaCat.instMulHomClass (X : MagmaCat) (Y : MagmaCat) :
      MulHomClass (X Y) X Y

      Construct a bundled AddMagmaCat from the underlying type and typeclass.

      Instances For
        def MagmaCat.of (M : Type u) [Mul M] :

        Construct a bundled MagmaCat from the underlying type and typeclass.

        Instances For
          @[simp]
          theorem AddMagmaCat.coe_of (R : Type u) [Add R] :
          ↑(AddMagmaCat.of R) = R
          @[simp]
          theorem MagmaCat.coe_of (R : Type u) [Mul R] :
          ↑(MagmaCat.of R) = R
          @[simp]
          theorem AddMagmaCat.addEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [Add X] [Add Y] (e : X ≃+ Y) :
          e = e
          @[simp]
          theorem MagmaCat.mulEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [Mul X] [Mul Y] (e : X ≃* Y) :
          e = e
          def AddMagmaCat.ofHom {X : Type u} {Y : Type u} [Add X] [Add Y] (f : AddHom X Y) :

          Typecheck an AddHom as a morphism in AddMagmaCat.

          Instances For
            def MagmaCat.ofHom {X : Type u} {Y : Type u} [Mul X] [Mul Y] (f : X →ₙ* Y) :

            Typecheck a MulHom as a morphism in MagmaCat.

            Instances For
              theorem AddMagmaCat.ofHom_apply {X : Type u} {Y : Type u} [Add X] [Add Y] (f : AddHom X Y) (x : X) :
              ↑(AddMagmaCat.ofHom f) x = f x
              theorem MagmaCat.ofHom_apply {X : Type u} {Y : Type u} [Mul X] [Mul Y] (f : X →ₙ* Y) (x : X) :
              ↑(MagmaCat.ofHom f) x = f x
              def AddSemigroupCat :
              Type (u + 1)

              The category of additive semigroups and semigroup morphisms.

              Instances For
                def SemigroupCat :
                Type (u + 1)

                The category of semigroups and semigroup morphisms.

                Instances For

                  Construct a bundled AddSemigroupCat from the underlying type and typeclass.

                  Instances For

                    Construct a bundled SemigroupCat from the underlying type and typeclass.

                    Instances For
                      @[simp]
                      @[simp]
                      theorem SemigroupCat.coe_of (R : Type u) [Semigroup R] :
                      @[simp]
                      theorem AddSemigroupCat.addEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [AddSemigroup X] [AddSemigroup Y] (e : X ≃+ Y) :
                      e = e
                      @[simp]
                      theorem SemigroupCat.mulEquiv_coe_eq {X : Type u_1} {Y : Type u_1} [Semigroup X] [Semigroup Y] (e : X ≃* Y) :
                      e = e

                      Typecheck an AddHom as a morphism in AddSemigroupCat.

                      Instances For

                        Typecheck a MulHom as a morphism in SemigroupCat.

                        Instances For
                          theorem AddSemigroupCat.ofHom_apply {X : Type u} {Y : Type u} [AddSemigroup X] [AddSemigroup Y] (f : AddHom X Y) (x : X) :
                          ↑(AddSemigroupCat.ofHom f) x = f x
                          theorem SemigroupCat.ofHom_apply {X : Type u} {Y : Type u} [Semigroup X] [Semigroup Y] (f : X →ₙ* Y) (x : X) :
                          ↑(SemigroupCat.ofHom f) x = f x
                          def AddEquiv.toAddMagmaCatIso {X : Type u} {Y : Type u} [Add X] [Add Y] (e : X ≃+ Y) :

                          Build an isomorphism in the category AddMagmaCat from an AddEquiv between Adds.

                          Instances For
                            @[simp]
                            theorem MulEquiv.toMagmaCatIso_inv_apply {X : Type u} {Y : Type u} [Mul X] [Mul Y] (e : X ≃* Y) :
                            ∀ (a : Y), (MulEquiv.toMagmaCatIso e).inv a = Equiv.toFun (MulEquiv.symm e).toEquiv a
                            @[simp]
                            theorem MulEquiv.toMagmaCatIso_hom_apply {X : Type u} {Y : Type u} [Mul X] [Mul Y] (e : X ≃* Y) :
                            ∀ (a : X), (MulEquiv.toMagmaCatIso e).hom a = Equiv.toFun e.toEquiv a
                            @[simp]
                            theorem AddEquiv.toAddMagmaCatIso_inv_apply {X : Type u} {Y : Type u} [Add X] [Add Y] (e : X ≃+ Y) :
                            ∀ (a : Y), (AddEquiv.toAddMagmaCatIso e).inv a = Equiv.toFun (AddEquiv.symm e).toEquiv a
                            @[simp]
                            theorem AddEquiv.toAddMagmaCatIso_hom_apply {X : Type u} {Y : Type u} [Add X] [Add Y] (e : X ≃+ Y) :
                            ∀ (a : X), (AddEquiv.toAddMagmaCatIso e).hom a = Equiv.toFun e.toEquiv a
                            def MulEquiv.toMagmaCatIso {X : Type u} {Y : Type u} [Mul X] [Mul Y] (e : X ≃* Y) :

                            Build an isomorphism in the category MagmaCat from a MulEquiv between Muls.

                            Instances For

                              Build an isomorphism in the category AddSemigroup from an AddEquiv between AddSemigroups.

                              Instances For
                                @[simp]
                                theorem MulEquiv.toSemigroupCatIso_inv_apply {X : Type u} {Y : Type u} [Semigroup X] [Semigroup Y] (e : X ≃* Y) :
                                ∀ (a : Y), (MulEquiv.toSemigroupCatIso e).inv a = Equiv.toFun (MulEquiv.symm e).toEquiv a
                                @[simp]
                                theorem AddEquiv.toAddSemigroupCatIso_inv_apply {X : Type u} {Y : Type u} [AddSemigroup X] [AddSemigroup Y] (e : X ≃+ Y) :
                                ∀ (a : Y), (AddEquiv.toAddSemigroupCatIso e).inv a = Equiv.toFun (AddEquiv.symm e).toEquiv a
                                @[simp]
                                theorem MulEquiv.toSemigroupCatIso_hom_apply {X : Type u} {Y : Type u} [Semigroup X] [Semigroup Y] (e : X ≃* Y) :
                                ∀ (a : X), (MulEquiv.toSemigroupCatIso e).hom a = Equiv.toFun e.toEquiv a
                                @[simp]
                                theorem AddEquiv.toAddSemigroupCatIso_hom_apply {X : Type u} {Y : Type u} [AddSemigroup X] [AddSemigroup Y] (e : X ≃+ Y) :
                                ∀ (a : X), (AddEquiv.toAddSemigroupCatIso e).hom a = Equiv.toFun e.toEquiv a

                                Build an isomorphism in the category Semigroup from a MulEquiv between Semigroups.

                                Instances For

                                  Build an AddEquiv from an isomorphism in the category AddMagma.

                                  Instances For

                                    Build a MulEquiv from an isomorphism in the category Magma.

                                    Instances For

                                      Build an AddEquiv from an isomorphism in the category AddSemigroup.

                                      Instances For

                                        Build a MulEquiv from an isomorphism in the category Semigroup.

                                        Instances For

                                          additive equivalences between Adds are the same as (isomorphic to) isomorphisms in AddMagma

                                          Instances For
                                            def mulEquivIsoMagmaIso {X : Type u} {Y : Type u} [Mul X] [Mul Y] :

                                            multiplicative equivalences between Muls are the same as (isomorphic to) isomorphisms in Magma

                                            Instances For

                                              additive equivalences between AddSemigroups are the same as (isomorphic to) isomorphisms in AddSemigroup

                                              Instances For

                                                multiplicative equivalences between Semigroups are the same as (isomorphic to) isomorphisms in Semigroup

                                                Instances For

                                                  Once we've shown that the forgetful functors to type reflect isomorphisms, we automatically obtain that the forget₂ functors between our concrete categories reflect isomorphisms.