Documentation

Mathlib.CategoryTheory.Monoidal.Functor

(Lax) monoidal functors #

A lax monoidal functor F between monoidal categories C and D is a functor between the underlying categories equipped with morphisms

Similarly, we define the typeclass F.OplaxMonoidal. For these oplax monoidal functors, we have similar data η and δ, but with morphisms in the opposite direction.

A monoidal functor (F.Monoidal) is defined here as the combination of F.LaxMonoidal and F.OplaxMonoidal, with the additional conditions that ε/η and μ/δ are inverse isomorphisms.

We show that the composition of (lax) monoidal functors gives a (lax) monoidal functor.

See Mathlib/CategoryTheory/Monoidal/NaturalTransformation.lean for monoidal natural transformations.

We show in Mathlib.CategoryTheory.Monoidal.Mon_ that lax monoidal functors take monoid objects to monoid objects.

References #

See https://stacks.math.columbia.edu/tag/0FFL.

A functor F : C ⥤ D between monoidal categories is lax monoidal if it is equipped with morphisms ε : 𝟙_ D ⟶ F.obj (𝟙_ C) and μ X Y : F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y), satisfying the appropriate coherences.

Instances
    theorem CategoryTheory.Functor.LaxMonoidal.ext_iff {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} {F : Functor C D} {x y : F.LaxMonoidal} :
    x = y ε F = ε F μ F = μ F
    theorem CategoryTheory.Functor.LaxMonoidal.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} {F : Functor C D} {x y : F.LaxMonoidal} (ε : ε F = ε F) (μ : μ F = μ F) :
    x = y
    @[simp]
    theorem CategoryTheory.Functor.LaxMonoidal.μ_natural_right_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.LaxMonoidal] {X Y : C} (X' : C) (f : X Y) {Z : D} (h : F.obj (MonoidalCategoryStruct.tensorObj X' Y) Z) :
    @[simp]
    theorem CategoryTheory.Functor.LaxMonoidal.μ_natural_left_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.LaxMonoidal] {X Y : C} (f : X Y) (X' : C) {Z : D} (h : F.obj (MonoidalCategoryStruct.tensorObj Y X') Z) :
    @[implicit_reducible]
    def CategoryTheory.Functor.LaxMonoidal.ofTensorHom {C : Type u₁} [Category.{v₁, u₁} C] [MonoidalCategory C] {D : Type u₂} [Category.{v₂, u₂} D] [MonoidalCategory D] {F : Functor C D} (ε : MonoidalCategoryStruct.tensorUnit D F.obj (MonoidalCategoryStruct.tensorUnit C)) (μ : (X Y : C) → MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) F.obj (MonoidalCategoryStruct.tensorObj X Y)) (μ_natural : ∀ {X Y X' Y' : C} (f : X Y) (g : X' Y'), CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (F.map f) (F.map g)) (μ Y Y') = CategoryStruct.comp (μ X X') (F.map (MonoidalCategoryStruct.tensorHom f g)) := by cat_disch) (associativity : ∀ (X Y Z : C), CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (μ X Y) (CategoryStruct.id (F.obj Z))) (CategoryStruct.comp (μ (MonoidalCategoryStruct.tensorObj X Y) Z) (F.map (MonoidalCategoryStruct.associator X Y Z).hom)) = CategoryStruct.comp (MonoidalCategoryStruct.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (CategoryStruct.id (F.obj X)) (μ Y Z)) (μ X (MonoidalCategoryStruct.tensorObj Y Z))) := by cat_disch) (left_unitality : ∀ (X : C), (MonoidalCategoryStruct.leftUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom ε (CategoryStruct.id (F.obj X))) (CategoryStruct.comp (μ (MonoidalCategoryStruct.tensorUnit C) X) (F.map (MonoidalCategoryStruct.leftUnitor X).hom)) := by cat_disch) (right_unitality : ∀ (X : C), (MonoidalCategoryStruct.rightUnitor (F.obj X)).hom = CategoryStruct.comp (MonoidalCategoryStruct.tensorHom (CategoryStruct.id (F.obj X)) ε) (CategoryStruct.comp (μ X (MonoidalCategoryStruct.tensorUnit C)) (F.map (MonoidalCategoryStruct.rightUnitor X).hom)) := by cat_disch) :

    A constructor for lax monoidal functors whose axioms are described by tensorHom instead of whiskerLeft and whiskerRight.

    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.
      @[simp]
      theorem CategoryTheory.Functor.LaxMonoidal.comp_μ {C : Type u₁} [Category.{v₁, u₁} C] [MonoidalCategory C] {D : Type u₂} [Category.{v₂, u₂} D] [MonoidalCategory D] {E : Type u₃} [Category.{v₃, u₃} E] [MonoidalCategory E] (F : Functor C D) (G : Functor D E) [F.LaxMonoidal] [G.LaxMonoidal] (X Y : C) :
      μ (F.comp G) X Y = CategoryStruct.comp (μ G (F.obj X) (F.obj Y)) (G.map (μ F X Y))

      A functor F : C ⥤ D between monoidal categories is oplax monoidal if it is equipped with morphisms η : F.obj (𝟙_ C) ⟶ 𝟙 _D and δ X Y : F.obj (X ⊗ Y) ⟶ F.obj X ⊗ F.obj Y, satisfying the appropriate coherences.

      Instances
        theorem CategoryTheory.Functor.OplaxMonoidal.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} {F : Functor C D} {x y : F.OplaxMonoidal} (η : η F = η F) (δ : δ F = δ F) :
        x = y
        theorem CategoryTheory.Functor.OplaxMonoidal.ext_iff {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} {F : Functor C D} {x y : F.OplaxMonoidal} :
        x = y η F = η F δ F = δ F
        @[simp]
        theorem CategoryTheory.Functor.OplaxMonoidal.δ_natural_left_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.OplaxMonoidal] {X Y : C} (f : X Y) (X' : C) {Z : D} (h : MonoidalCategoryStruct.tensorObj (F.obj Y) (F.obj X') Z) :
        @[simp]
        theorem CategoryTheory.Functor.OplaxMonoidal.δ_natural_right_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.OplaxMonoidal] {X Y : C} (X' : C) (f : X Y) {Z : D} (h : MonoidalCategoryStruct.tensorObj (F.obj X') (F.obj Y) Z) :
        @[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.
        @[simp]
        theorem CategoryTheory.Functor.OplaxMonoidal.comp_δ {C : Type u₁} [Category.{v₁, u₁} C] [MonoidalCategory C] {D : Type u₂} [Category.{v₂, u₂} D] [MonoidalCategory D] {E : Type u₃} [Category.{v₃, u₃} E] [MonoidalCategory E] (F : Functor C D) (G : Functor D E) [F.OplaxMonoidal] [G.OplaxMonoidal] (X Y : C) :
        δ (F.comp G) X Y = CategoryStruct.comp (G.map (δ F X Y)) (δ G (F.obj X) (F.obj Y))

        A functor between monoidal categories is monoidal if it is lax and oplax monoidals, and both data give inverse isomorphisms.

        Instances
          theorem CategoryTheory.Functor.Monoidal.ext {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} {F : Functor C D} {x y : F.Monoidal} (ε : LaxMonoidal.ε F = LaxMonoidal.ε F) (μ : LaxMonoidal.μ F = LaxMonoidal.μ F) (η : OplaxMonoidal.η F = OplaxMonoidal.η F) (δ : OplaxMonoidal.δ F = OplaxMonoidal.δ F) :
          x = y
          @[simp]
          theorem CategoryTheory.Functor.Monoidal.δ_μ_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.Monoidal] (X Y : C) {Z : D} (h : F.obj (MonoidalCategoryStruct.tensorObj X Y) Z) :
          @[simp]
          @[simp]
          theorem CategoryTheory.Functor.Monoidal.μ_δ_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.Monoidal] (X Y : C) {Z : D} (h : MonoidalCategoryStruct.tensorObj (F.obj X) (F.obj Y) Z) :
          @[simp]
          theorem CategoryTheory.Functor.Monoidal.η_ε_assoc {C : Type u₁} {inst✝ : Category.{v₁, u₁} C} {inst✝¹ : MonoidalCategory C} {D : Type u₂} {inst✝² : Category.{v₂, u₂} D} {inst✝³ : MonoidalCategory D} (F : Functor C D) [self : F.Monoidal] {Z : D} (h : F.obj (MonoidalCategoryStruct.tensorUnit C) Z) :

          The isomorphism 𝟙_ D ≅ F.obj (𝟙_ C) when F is a monoidal functor.

          Equations
          Instances For

            The isomorphism F.obj X ⊗ F.obj Y ≅ F.obj (X ⊗ Y) when F is a monoidal functor.

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

              Structure which is a helper in order to show that a functor is monoidal. It consists of isomorphisms εIso and μIso such that the morphisms .hom induced by these isomorphisms satisfy the axioms of lax monoidal functors.

              Instances For
                @[implicit_reducible]

                The lax monoidal functor structure induced by a Functor.CoreMonoidal structure.

                Equations
                • h.toLaxMonoidal = { ε := h.εIso.hom, μ := fun (X Y : C) => (h.μIso X Y).hom, μ_natural_left := , μ_natural_right := , associativity := , left_unitality := , right_unitality := }
                Instances For
                  @[implicit_reducible]

                  The oplax monoidal functor structure induced by a Functor.CoreMonoidal structure.

                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[implicit_reducible]

                    The monoidal functor structure induced by a Functor.CoreMonoidal structure.

                    Equations
                    Instances For

                      The Functor.CoreMonoidal structure given by a lax monoidal functor such that ε and μ are isomorphisms.

                      Equations
                      • One or more equations did not get rendered due to their size.
                      Instances For

                        The Functor.CoreMonoidal structure given by an oplax monoidal functor such that η and δ are isomorphisms.

                        Equations
                        • One or more equations did not get rendered due to their size.
                        Instances For
                          @[implicit_reducible]

                          The Functor.Monoidal structure given by a lax monoidal functor such that ε and μ are isomorphisms.

                          Equations
                          Instances For
                            @[implicit_reducible]

                            The Functor.Monoidal structure given by an oplax monoidal functor such that η and δ are isomorphisms.

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

                              The functor C ⥤ D × E obtained from two lax monoidal functors is lax monoidal.

                              Equations
                              @[implicit_reducible]

                              The functor C ⥤ D × E obtained from two oplax monoidal functors is oplax monoidal.

                              Equations
                              @[implicit_reducible]

                              The functor C ⥤ D × E obtained from two monoidal functors is monoidal.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              @[implicit_reducible]

                              The right adjoint of an oplax monoidal functor is lax monoidal.

                              Equations
                              • One or more equations did not get rendered due to their size.
                              Instances For

                                When adj : F ⊣ G is an adjunction, with F oplax monoidal and G lax-monoidal, this typeclass expresses compatibilities between the adjunction and the (op)lax monoidal structures.

                                Instances
                                  instance CategoryTheory.Adjunction.isMonoidal_comp {C : Type u₁} [Category.{v₁, u₁} C] [MonoidalCategory C] {D : Type u₂} [Category.{v₂, u₂} D] [MonoidalCategory D] {E : Type u₃} [Category.{v₃, u₃} E] [MonoidalCategory E] {F : Functor C D} {G : Functor D C} (adj : F G) [F.OplaxMonoidal] [G.LaxMonoidal] [adj.IsMonoidal] {F' : Functor D E} {G' : Functor E D} (adj' : F' G') [F'.OplaxMonoidal] [G'.LaxMonoidal] [adj'.IsMonoidal] :
                                  (adj.comp adj').IsMonoidal
                                  @[implicit_reducible]

                                  If a monoidal functor F is an equivalence of categories then its inverse is also monoidal.

                                  Equations
                                  Instances For
                                    @[reducible, inline]

                                    An equivalence of categories involving monoidal functors is monoidal if the underlying adjunction satisfies certain compatibilities with respect to the monoidal functor data.

                                    Equations
                                    Instances For

                                      The obvious auto-equivalence of a monoidal category is monoidal.

                                      The inverse of a monoidal category equivalence is also a monoidal category equivalence.

                                      The composition of two monoidal category equivalences is monoidal.

                                      structure CategoryTheory.LaxMonoidalFunctor (C : Type u₁) [Category.{v₁, u₁} C] [MonoidalCategory C] (D : Type u₂) [Category.{v₂, u₂} D] [MonoidalCategory D] extends CategoryTheory.Functor C D :
                                      Type (max (max (max u₁ u₂) v₁) v₂)

                                      Bundled version of lax monoidal functors. This type is equipped with a category structure in CategoryTheory.Monoidal.NaturalTransformation.

                                      Instances For

                                        Auxiliary definition for Functor.Monoidal.transport

                                        Equations
                                        • One or more equations did not get rendered due to their size.
                                        Instances For
                                          @[implicit_reducible]

                                          Transport the structure of a monoidal functor along a natural isomorphism of functors.

                                          Equations
                                          Instances For
                                            @[implicit_reducible]

                                            Given a functor F and an equivalence of categories e such that e.inverse and e.functor ⋙ F are monoidal functors, F is monoidal as well.

                                            Equations
                                            Instances For
                                              @[implicit_reducible]

                                              Given a functor F and an equivalence of categories e such that e.functor and e.inverse ⋙ F are monoidal functors, F is monoidal as well.

                                              Equations
                                              Instances For
                                                @[implicit_reducible]

                                                Given a functor F and an equivalence of categories e such that e.functor and F ⋙ e.inverse are monoidal functors, F is monoidal as well.

                                                Equations
                                                • One or more equations did not get rendered due to their size.
                                                Instances For
                                                  @[implicit_reducible]

                                                  Given a functor F and an equivalence of categories e such that e.inverse and F ⋙ e.functor are monoidal functors, F is monoidal as well.

                                                  Equations
                                                  Instances For