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

    the unit morphism of a lax monoidal functor

    Equations
    Instances For
      def CategoryTheory.Functor.LaxMonoidal.ofTensorHom {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] {F : CategoryTheory.Functor C D} (ε' : 𝟙_ D F.obj (𝟙_ C)) (μ' : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (F.obj X) (F.obj Y) F.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)) (μ'_natural : ∀ {X Y X' Y' : C} (f : X Y) (g : X' Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (F.map f) (F.map g)) (μ' Y Y') = CategoryTheory.CategoryStruct.comp (μ' X X') (F.map (CategoryTheory.MonoidalCategory.tensorHom f g)) := by aesop_cat) (associativity' : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (μ' X Y) (CategoryTheory.CategoryStruct.id (F.obj Z))) (CategoryTheory.CategoryStruct.comp (μ' (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) (μ' Y Z)) (μ' X (CategoryTheory.MonoidalCategory.tensorObj Y Z))) := by aesop_cat) (left_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom ε' (CategoryTheory.CategoryStruct.id (F.obj X))) (CategoryTheory.CategoryStruct.comp (μ' (𝟙_ C) X) (F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom)) := by aesop_cat) (right_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) ε') (CategoryTheory.CategoryStruct.comp (μ' X (𝟙_ C)) (F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom)) := by aesop_cat) :
      F.LaxMonoidal

      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
        theorem CategoryTheory.Functor.LaxMonoidal.ofTensorHom_ε {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] {F : CategoryTheory.Functor C D} (ε' : 𝟙_ D F.obj (𝟙_ C)) (μ' : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (F.obj X) (F.obj Y) F.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)) (μ'_natural : ∀ {X Y X' Y' : C} (f : X Y) (g : X' Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (F.map f) (F.map g)) (μ' Y Y') = CategoryTheory.CategoryStruct.comp (μ' X X') (F.map (CategoryTheory.MonoidalCategory.tensorHom f g)) := by aesop_cat) (associativity' : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (μ' X Y) (CategoryTheory.CategoryStruct.id (F.obj Z))) (CategoryTheory.CategoryStruct.comp (μ' (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) (μ' Y Z)) (μ' X (CategoryTheory.MonoidalCategory.tensorObj Y Z))) := by aesop_cat) (left_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom ε' (CategoryTheory.CategoryStruct.id (F.obj X))) (CategoryTheory.CategoryStruct.comp (μ' (𝟙_ C) X) (F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom)) := by aesop_cat) (right_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) ε') (CategoryTheory.CategoryStruct.comp (μ' X (𝟙_ C)) (F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom)) := by aesop_cat) :
        theorem CategoryTheory.Functor.LaxMonoidal.ofTensorHom_μ {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] {F : CategoryTheory.Functor C D} (ε' : 𝟙_ D F.obj (𝟙_ C)) (μ' : (X Y : C) → CategoryTheory.MonoidalCategory.tensorObj (F.obj X) (F.obj Y) F.obj (CategoryTheory.MonoidalCategory.tensorObj X Y)) (μ'_natural : ∀ {X Y X' Y' : C} (f : X Y) (g : X' Y'), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (F.map f) (F.map g)) (μ' Y Y') = CategoryTheory.CategoryStruct.comp (μ' X X') (F.map (CategoryTheory.MonoidalCategory.tensorHom f g)) := by aesop_cat) (associativity' : ∀ (X Y Z : C), CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (μ' X Y) (CategoryTheory.CategoryStruct.id (F.obj Z))) (CategoryTheory.CategoryStruct.comp (μ' (CategoryTheory.MonoidalCategory.tensorObj X Y) Z) (F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom)) = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom (CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) (μ' Y Z)) (μ' X (CategoryTheory.MonoidalCategory.tensorObj Y Z))) := by aesop_cat) (left_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.leftUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom ε' (CategoryTheory.CategoryStruct.id (F.obj X))) (CategoryTheory.CategoryStruct.comp (μ' (𝟙_ C) X) (F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom)) := by aesop_cat) (right_unitality' : ∀ (X : C), (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom = CategoryTheory.CategoryStruct.comp (CategoryTheory.MonoidalCategory.tensorHom (CategoryTheory.CategoryStruct.id (F.obj X)) ε') (CategoryTheory.CategoryStruct.comp (μ' X (𝟙_ C)) (F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom)) := by aesop_cat) :
        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.

        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

          the counit morphism of a lax monoidal functor

          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.

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

            Instances

              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

                  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

                    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

                      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

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

                        Equations
                        Instances For
                          @[simp]
                          @[simp]
                          theorem CategoryTheory.Functor.CoreMonoidal.toMonoidal_toOplaxMonoidal {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] {F : CategoryTheory.Functor C D} (h : F.CoreMonoidal) :
                          CategoryTheory.Functor.Monoidal.toOplaxMonoidal = h.toOplaxMonoidal

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

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

                              Equations

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

                              Equations

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

                              Equations

                              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 monoidal, this typeclass expresses compatibilities between the adjunction and the (op)lax monoidal structures.

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

                                  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
                                    • e.IsMonoidal = e.toAdjunction.IsMonoidal
                                    Instances For
                                      theorem CategoryTheory.Equivalence.counitIso_inv_app_tensor_comp_functor_map_δ_inverse {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (e : C D) [e.functor.Monoidal] [e.inverse.Monoidal] [e.IsMonoidal] (X Y : C) :
                                      CategoryTheory.CategoryStruct.comp (e.counitIso.inv.app (CategoryTheory.MonoidalCategory.tensorObj (e.functor.obj X) (e.functor.obj Y))) (e.functor.map (CategoryTheory.Functor.OplaxMonoidal.δ e.inverse (e.functor.obj X) (e.functor.obj Y))) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ e.functor X Y) (e.functor.map (CategoryTheory.MonoidalCategory.tensorHom (e.unitIso.hom.app X) (e.unitIso.hom.app Y)))
                                      theorem CategoryTheory.Equivalence.counitIso_inv_app_tensor_comp_functor_map_δ_inverse_assoc {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (e : C D) [e.functor.Monoidal] [e.inverse.Monoidal] [e.IsMonoidal] (X Y : C) {Z : D} (h : e.functor.obj (CategoryTheory.MonoidalCategory.tensorObj (e.inverse.obj (e.functor.obj X)) (e.inverse.obj (e.functor.obj Y))) Z) :
                                      CategoryTheory.CategoryStruct.comp (e.counitIso.inv.app (CategoryTheory.MonoidalCategory.tensorObj (e.functor.obj X) (e.functor.obj Y))) (CategoryTheory.CategoryStruct.comp (e.functor.map (CategoryTheory.Functor.OplaxMonoidal.δ e.inverse (e.functor.obj X) (e.functor.obj Y))) h) = CategoryTheory.CategoryStruct.comp (CategoryTheory.Functor.LaxMonoidal.μ e.functor X Y) (CategoryTheory.CategoryStruct.comp (e.functor.map (CategoryTheory.MonoidalCategory.tensorHom (e.unitIso.hom.app X) (e.unitIso.hom.app Y))) h)
                                      instance CategoryTheory.Equivalence.instMonoidalFunctorRefl {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] :
                                      CategoryTheory.Equivalence.refl.functor.Monoidal
                                      Equations
                                      instance CategoryTheory.Equivalence.instMonoidalInverseRefl {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] :
                                      CategoryTheory.Equivalence.refl.inverse.Monoidal
                                      Equations

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

                                      instance CategoryTheory.Equivalence.isMonoidal_symm {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (e : C D) [e.functor.Monoidal] [e.inverse.Monoidal] [e.IsMonoidal] :
                                      e.symm.IsMonoidal

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

                                      Equations
                                      • e.instMonoidalFunctorTrans e' = inferInstanceAs (e.functor.comp e'.functor).Monoidal
                                      Equations
                                      • e.instMonoidalInverseTrans e' = inferInstanceAs (e'.inverse.comp e.inverse).Monoidal
                                      instance CategoryTheory.Equivalence.isMonoidal_trans {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] {E : Type u₃} [CategoryTheory.Category.{v₃, u₃} E] [CategoryTheory.MonoidalCategory E] (e : C D) [e.functor.Monoidal] [e.inverse.Monoidal] [e.IsMonoidal] (e' : D E) [e'.functor.Monoidal] [e'.inverse.Monoidal] [e'.IsMonoidal] :
                                      (e.trans e').IsMonoidal

                                      The composition of two monoidal category equivalences is monoidal.

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

                                      Instances For