Documentation

Mathlib.CategoryTheory.Monoidal.Cartesian.Mon_

Yoneda embedding of Mon C #

We show that monoid objects in Cartesian monoidal categories are exactly those whose yoneda presheaf is a presheaf of monoids, by constructing the yoneda embedding Mon C β₯€ Cα΅’α΅– β₯€ MonCat.{v} and showing that it is fully faithful and its (essential) image is the representable functors.

@[deprecated CategoryTheory.Mon.uniqueHomToTrivial (since := "2026-03-20")]

Alias of CategoryTheory.Mon.uniqueHomToTrivial.

Instances For

    Comm monoid objects are internal monoid objects #

    @[implicit_reducible]

    A commutative monoid object is a monoid object in the category of monoid objects.

    @[implicit_reducible]

    A commutative additive monoid object is an additive monoid object in the category of additive monoid objects.

    A commutative monoid object is a commutative monoid object in the category of monoid objects.

    A commutative additive monoid object is a commutative additive monoid object in the category of additive monoid objects.

    @[implicit_reducible]

    If X represents a presheaf of monoids, then X is a monoid object.

    Instances For
      @[implicit_reducible]

      If X represents a presheaf of additive monoids, then X is an additive monoid object.

      Instances For
        @[reducible, inline]

        If M is a monoid object, then Hom(X, M) has a monoid structure.

        Instances For
          @[reducible, inline]

          If M is an additive monoid object, then Hom(X, M) has an additive monoid structure.

          Instances For
            theorem CategoryTheory.Hom.mul_def {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X : C} [MonObj M] (f₁ fβ‚‚ : X ⟢ M) :
            f₁ * fβ‚‚ = CategoryStruct.comp (CartesianMonoidalCategory.lift f₁ fβ‚‚) MonObj.mul
            theorem CategoryTheory.Functor.map_mul {C : Type u_1} {D : Type u_2} [Category.{v, u_1} C] [CartesianMonoidalCategory C] [Category.{w, u_2} D] [CartesianMonoidalCategory D] {M X : C} [MonObj M] (F : Functor C D) [F.Monoidal] (f g : X ⟢ M) :
            F.map (f * g) = F.map f * F.map g
            @[simp]
            theorem CategoryTheory.Functor.homMonoidHom_apply {C : Type u_1} {D : Type u_2} [Category.{v, u_1} C] [CartesianMonoidalCategory C] [Category.{w, u_2} D] [CartesianMonoidalCategory D] {M X : C} [MonObj M] (F : Functor C D) [F.Monoidal] (a✝ : X ⟢ M) :
            F.homMonoidHom a✝ = F.map a✝

            Functor.map of a fully faithful monoidal functor as a MulEquiv.

            Instances For

              Functor.map of a fully faithful monoidal functor as a AddEquiv.

              Instances For
                @[reducible, inline]

                If M is a commutative monoid object, then Hom(X, M) has a commutative monoid structure.

                Instances For
                  @[reducible, inline]

                  If M is a commutative additive monoid object, then Hom(X, M) has a commutative additive monoid structure.

                  Instances For
                    @[simp]
                    theorem CategoryTheory.Mon.Hom.hom_pow {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] [BraidedCategory C] {M N : Mon C} [IsCommMonObj N.X] (f : M ⟢ N) (n : β„•) :
                    (f ^ n).hom = f.hom ^ n
                    @[simp]
                    theorem CategoryTheory.AddMon.Hom.hom_nsmul {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] [BraidedCategory C] {M N : AddMon C} [IsCommAddMonObj N.X] (f : M ⟢ N) (n : β„•) :
                    (n β€’ f).hom = n β€’ f.hom

                    If M is a monoid object, then Hom(-, M) is a presheaf of monoids.

                    Instances For

                      If M is an additive monoid object, then Hom(-, M) is a presheaf of additive monoids.

                      Instances For
                        @[simp]
                        theorem CategoryTheory.yonedaAddMonObj_map {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] (M : C) [AddMonObj M] {X Yβ‚‚ : Cα΅’α΅–} (Ο† : X ⟢ Yβ‚‚) :
                        (yonedaAddMonObj M).map Ο† = AddMonCat.ofHom { toFun := fun (x : Opposite.unop X ⟢ M) => CategoryStruct.comp Ο†.unop x, map_zero' := β‹―, map_add' := β‹― }
                        @[simp]
                        theorem CategoryTheory.yonedaMonObj_map {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] (M : C) [MonObj M] {X Yβ‚‚ : Cα΅’α΅–} (Ο† : X ⟢ Yβ‚‚) :
                        (yonedaMonObj M).map Ο† = MonCat.ofHom { toFun := fun (x : Opposite.unop X ⟢ M) => CategoryStruct.comp Ο†.unop x, map_one' := β‹―, map_mul' := β‹― }

                        If X represents a presheaf of monoids F, then Hom(-, X) is isomorphic to F as a presheaf of monoids.

                        Instances For

                          If X represents a presheaf of additive monoids F, then Hom(-, X) is isomorphic to F as a presheaf of additive monoids.

                          Instances For

                            The yoneda embedding of Mon C into presheaves of monoids.

                            Instances For

                              The yoneda embedding of AddMon C into presheaves of additive monoids.

                              Instances For
                                @[simp]
                                theorem CategoryTheory.yonedaMon_map_app {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : Mon C} (ψ : M ⟢ N) (Y : Cα΅’α΅–) :
                                (yonedaMon.map ψ).app Y = MonCat.ofHom { toFun := fun (x : Opposite.unop Y ⟢ M.X) => CategoryStruct.comp x ψ.hom, map_one' := β‹―, map_mul' := β‹― }
                                @[simp]
                                theorem CategoryTheory.yonedaAddMon_map_app {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : AddMon C} (ψ : M ⟢ N) (Y : Cα΅’α΅–) :
                                (yonedaAddMon.map ψ).app Y = AddMonCat.ofHom { toFun := fun (x : Opposite.unop Y ⟢ M.X) => CategoryStruct.comp x ψ.hom, map_zero' := β‹―, map_add' := β‹― }

                                If M is a monoid object, then Hom(-, M) as a presheaf of monoids is represented by M.

                                Instances For

                                  If M is an additive monoid object, then Hom(-, M) as a presheaf of additive monoids is represented by M.

                                  Instances For

                                    The yoneda embedding for Mon C is fully faithful.

                                    Instances For

                                      The yoneda embedding for AddMon C is fully faithful.

                                      Instances For
                                        theorem CategoryTheory.MonObj.mul_comp {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [MonObj M] [MonObj N] (f₁ fβ‚‚ : X ⟢ M) (g : M ⟢ N) [IsMonHom g] :
                                        CategoryStruct.comp (f₁ * fβ‚‚) g = CategoryStruct.comp f₁ g * CategoryStruct.comp fβ‚‚ g
                                        theorem CategoryTheory.AddMonObj.add_comp {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [AddMonObj M] [AddMonObj N] (f₁ fβ‚‚ : X ⟢ M) (g : M ⟢ N) [IsAddMonHom g] :
                                        CategoryStruct.comp (f₁ + fβ‚‚) g = CategoryStruct.comp f₁ g + CategoryStruct.comp fβ‚‚ g
                                        theorem CategoryTheory.AddMonObj.add_comp_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [AddMonObj M] [AddMonObj N] (f₁ fβ‚‚ : X ⟢ M) (g : M ⟢ N) [IsAddMonHom g] {Z : C} (h : N ⟢ Z) :
                                        theorem CategoryTheory.MonObj.mul_comp_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [MonObj M] [MonObj N] (f₁ fβ‚‚ : X ⟢ M) (g : M ⟢ N) [IsMonHom g] {Z : C} (h : N ⟢ Z) :
                                        theorem CategoryTheory.MonObj.pow_comp {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [MonObj M] [MonObj N] (f : X ⟢ M) (n : β„•) (g : M ⟢ N) [IsMonHom g] :
                                        theorem CategoryTheory.AddMonObj.nsmul_comp {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [AddMonObj M] [AddMonObj N] (f : X ⟢ M) (n : β„•) (g : M ⟢ N) [IsAddMonHom g] :
                                        CategoryStruct.comp (n β€’ f) g = n β€’ CategoryStruct.comp f g
                                        theorem CategoryTheory.AddMonObj.nsmul_comp_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N X : C} [AddMonObj M] [AddMonObj N] (f : X ⟢ M) (n : β„•) (g : M ⟢ N) [IsAddMonHom g] {Z : C} (h : N ⟢ Z) :
                                        theorem CategoryTheory.MonObj.comp_mul {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [MonObj M] (f : X ⟢ Y) (g₁ gβ‚‚ : Y ⟢ M) :
                                        CategoryStruct.comp f (g₁ * gβ‚‚) = CategoryStruct.comp f g₁ * CategoryStruct.comp f gβ‚‚
                                        theorem CategoryTheory.AddMonObj.comp_add {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [AddMonObj M] (f : X ⟢ Y) (g₁ gβ‚‚ : Y ⟢ M) :
                                        CategoryStruct.comp f (g₁ + gβ‚‚) = CategoryStruct.comp f g₁ + CategoryStruct.comp f gβ‚‚
                                        theorem CategoryTheory.AddMonObj.comp_add_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [AddMonObj M] (f : X ⟢ Y) (g₁ gβ‚‚ : Y ⟢ M) {Z : C} (h : M ⟢ Z) :
                                        theorem CategoryTheory.MonObj.comp_mul_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [MonObj M] (f : X ⟢ Y) (g₁ gβ‚‚ : Y ⟢ M) {Z : C} (h : M ⟢ Z) :
                                        theorem CategoryTheory.MonObj.comp_pow {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [MonObj M] (f : X ⟢ M) (n : β„•) (h : Y ⟢ X) :
                                        theorem CategoryTheory.AddMonObj.comp_nsmul {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [AddMonObj M] (f : X ⟢ M) (n : β„•) (h : Y ⟢ X) :
                                        CategoryStruct.comp h (n β€’ f) = n β€’ CategoryStruct.comp h f
                                        theorem CategoryTheory.MonObj.comp_pow_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [MonObj M] (f : X ⟢ M) (n : β„•) (h : Y ⟢ X) {Z : C} (h✝ : M ⟢ Z) :
                                        theorem CategoryTheory.AddMonObj.comp_nsmul_assoc {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M X Y : C} [AddMonObj M] (f : X ⟢ M) (n : β„•) (h : Y ⟢ X) {Z : C} (h✝ : M ⟢ Z) :
                                        CategoryStruct.comp h (CategoryStruct.comp (n β€’ f) h✝) = CategoryStruct.comp (n β€’ CategoryStruct.comp h f) h✝

                                        If M and N are isomorphic as monoid objects, then X ⟢ M and X ⟢ N are isomorphic monoids.

                                        Instances For

                                          If M and N are isomorphic as additive monoid objects, then X ⟢ M and X ⟢ N are isomorphic additive monoids.

                                          Instances For
                                            @[simp]
                                            theorem CategoryTheory.Hom.addEquivCongrRight_apply {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : C} [AddMonObj M] [AddMonObj N] (e : M β‰… N) [IsAddMonHom e.hom] (X : C) (a : ↑((yonedaAddMon.obj { X := M, addMon := inst✝ }).obj (Opposite.op X))) :
                                            (addEquivCongrRight e X) a = (AddMonCat.Hom.hom (AddMonCat.ofHom { toFun := fun (x : X ⟢ M) => CategoryStruct.comp x e.hom, map_zero' := β‹―, map_add' := β‹― })) a
                                            @[simp]
                                            theorem CategoryTheory.Hom.addEquivCongrRight_symm_apply {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : C} [AddMonObj M] [AddMonObj N] (e : M β‰… N) [IsAddMonHom e.hom] (X : C) (a : ↑((yonedaAddMon.obj { X := N, addMon := inst✝ }).obj (Opposite.op X))) :
                                            (addEquivCongrRight e X).symm a = (AddMonCat.Hom.hom (AddMonCat.ofHom { toFun := fun (x : X ⟢ N) => CategoryStruct.comp x e.inv, map_zero' := β‹―, map_add' := β‹― })) a
                                            @[simp]
                                            theorem CategoryTheory.Hom.mulEquivCongrRight_symm_apply {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : C} [MonObj M] [MonObj N] (e : M β‰… N) [IsMonHom e.hom] (X : C) (a : ↑((yonedaMon.obj { X := N, mon := inst✝ }).obj (Opposite.op X))) :
                                            (mulEquivCongrRight e X).symm a = (MonCat.Hom.hom (MonCat.ofHom { toFun := fun (x : X ⟢ N) => CategoryStruct.comp x e.inv, map_one' := β‹―, map_mul' := β‹― })) a
                                            @[simp]
                                            theorem CategoryTheory.Hom.mulEquivCongrRight_apply {C : Type u_1} [Category.{v, u_1} C] [CartesianMonoidalCategory C] {M N : C} [MonObj M] [MonObj N] (e : M β‰… N) [IsMonHom e.hom] (X : C) (a : ↑((yonedaMon.obj { X := M, mon := inst✝ }).obj (Opposite.op X))) :
                                            (mulEquivCongrRight e X) a = (MonCat.Hom.hom (MonCat.ofHom { toFun := fun (x : X ⟢ M) => CategoryStruct.comp x e.hom, map_one' := β‹―, map_mul' := β‹― })) a

                                            A monoid object M is commutative if and only if X ⟢ M is commutative for all X.