Documentation

Mathlib.CategoryTheory.Monoidal.Multifunctor

Constructing monoidal categories and monoidal functors from multifunctors #

This file first constructs monoidal category structures from a tensor bifunctor, associator and unitor natural isomorphisms, and pentagon and triangle identities expressed as equalities of natural transformations between quadrifunctors and bifunctors.

It then provides alternative constructors for (op/lax) monoidal functors, given tensorators μ : F - ⊗ F - ⟶ F (- ⊗ -) / δ : F (- ⊗ -) ⟶ F - ⊗ F - as natural transformations between bifunctors. The associativity conditions are equalities of natural transformations between trifunctors (F - ⊗ F -) ⊗ F - ⟶ F (- ⊗ (- ⊗ -)) / F ((- ⊗ -) ⊗ -) ⟶ F - ⊗ (F - ⊗ F -), and the unitality conditions are equalities of natural transformations between functors.

@[reducible, inline]

The source quadrifunctor of the two paths around the monoidal pentagon.

Equations
Instances For
    @[reducible, inline]

    The target quadrifunctor of the two paths around the monoidal pentagon.

    Equations
    Instances For
      def CategoryTheory.MonoidalCategory.ofBifunctor.Pentagon.firstMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) :
      source tensor ⟶ target tensor

      The three-associator path along the top and right of the monoidal pentagon.

      ((X₁ ⊗ X₂) ⊗ X₃) ⊗ X₄  ---->  (X₁ ⊗ (X₂ ⊗ X₃)) ⊗ X₄
                    |                              |
                    v                              v
         (X₁ ⊗ X₂) ⊗ (X₃ ⊗ X₄)       X₁ ⊗ ((X₂ ⊗ X₃) ⊗ X₄)
                    \                              |
                     \                             v
                      -----------------> X₁ ⊗ (X₂ ⊗ (X₃ ⊗ X₄))
      
      Equations
      • One or more equations did not get rendered due to their size.
      Instances For
        @[simp]
        theorem CategoryTheory.MonoidalCategory.ofBifunctor.Pentagon.firstMap_app_app_app_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (X X✝ X✝¹ X✝² : C) :
        ((((firstMap tensor associator).app X).app X✝).app X✝¹).app X✝² = CategoryStruct.comp ((tensor.map (((associator.hom.app X).app X✝).app X✝¹)).app X✝²) (CategoryStruct.comp (((associator.hom.app X).app ((tensor.obj X✝).obj X✝¹)).app X✝²) ((tensor.obj X).map (((associator.hom.app X✝).app X✝¹).app X✝²)))
        def CategoryTheory.MonoidalCategory.ofBifunctor.Pentagon.secondMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) :
        source tensor ⟶ target tensor

        The two-associator path along the left and bottom of the monoidal pentagon displayed in Pentagon.firstMap.

        Equations
        • One or more equations did not get rendered due to their size.
        Instances For
          @[simp]
          theorem CategoryTheory.MonoidalCategory.ofBifunctor.Pentagon.secondMap_app_app_app_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (X X✝ X✝¹ X✝² : C) :
          ((((secondMap tensor associator).app X).app X✝).app X✝¹).app X✝² = CategoryStruct.comp (((associator.hom.app ((tensor.obj X).obj X✝)).app X✝¹).app X✝²) (((associator.hom.app X).app X✝).app ((tensor.obj X✝¹).obj X✝²))
          @[reducible, inline]

          The source bifunctor of the two paths around the monoidal triangle.

          Equations
          Instances For
            @[reducible, inline]

            The intermediate bifunctor X Y ↦ X ⊗ (𝟙 ⊗ Y) in the monoidal triangle.

            Equations
            Instances For
              def CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.associatorMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) :
              source tensor unit ⟶ middle tensor unit

              The associator edge of the monoidal triangle.

              Equations
              Instances For
                @[simp]
                theorem CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.associatorMap_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (X : C) :
                (associatorMap tensor unit associator).app X = (associator.hom.app X).app unit
                def CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.leftUnitorMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (leftUnitor : tensor.obj unit ≅ Functor.id C) :
                middle tensor unit ⟶ tensor

                The left-unitor edge of the monoidal triangle.

                Equations
                • One or more equations did not get rendered due to their size.
                Instances For
                  @[simp]
                  theorem CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.leftUnitorMap_app_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (leftUnitor : tensor.obj unit ≅ Functor.id C) (X Y : C) :
                  ((leftUnitorMap tensor unit leftUnitor).app X).app Y = (tensor.obj X).map (leftUnitor.hom.app Y)
                  def CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.firstMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (leftUnitor : tensor.obj unit ≅ Functor.id C) :
                  source tensor unit ⟶ tensor

                  The path around the top and right of the monoidal triangle through the associator and left unitor.

                  (X₁ ⊗ 𝟙) ⊗ X₂  ---->  X₁ ⊗ (𝟙 ⊗ X₂)
                          \                       |
                           \                      v
                            -----------------> X₁ ⊗ X₂
                  
                  Equations
                  • One or more equations did not get rendered due to their size.
                  Instances For
                    @[simp]
                    theorem CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.firstMap_app_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (leftUnitor : tensor.obj unit ≅ Functor.id C) (X X✝ : C) :
                    ((firstMap tensor unit associator leftUnitor).app X).app X✝ = CategoryStruct.comp (((associator.hom.app X).app unit).app X✝) ((tensor.obj X).map (leftUnitor.hom.app X✝))
                    def CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.secondMap {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (rightUnitor : tensor.flip.obj unit ≅ Functor.id C) :
                    source tensor unit ⟶ tensor

                    The diagonal path in the monoidal triangle displayed in Triangle.firstMap, given by the right unitor.

                    Equations
                    • One or more equations did not get rendered due to their size.
                    Instances For
                      @[simp]
                      theorem CategoryTheory.MonoidalCategory.ofBifunctor.Triangle.secondMap_app_app {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (rightUnitor : tensor.flip.obj unit ≅ Functor.id C) (X Y : C) :
                      ((secondMap tensor unit rightUnitor).app X).app Y = (tensor.map (rightUnitor.hom.app X)).app Y
                      @[instance_reducible]
                      def CategoryTheory.MonoidalCategory.ofBifunctor {C : Type u_1} [Category.{v_1, u_1} C] (tensor : Functor C (Functor C C)) (unit : C) (associator : bifunctorComp₁₂ tensor tensor ≅ bifunctorComp₂₃ tensor tensor) (leftUnitor : tensor.obj unit ≅ Functor.id C) (rightUnitor : tensor.flip.obj unit ≅ Functor.id C) (pentagon : ofBifunctor.Pentagon.firstMap tensor associator = ofBifunctor.Pentagon.secondMap tensor associator) (triangle : ofBifunctor.Triangle.firstMap tensor unit associator leftUnitor = ofBifunctor.Triangle.secondMap tensor unit rightUnitor) :

                      Construct a monoidal category from a tensor bifunctor, associator and unitor natural isomorphisms, and pentagon and triangle identities between multifunctor transformations.

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

                        The bifunctor (F -) ⊗ -.

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

                          The bifunctor - ⊗ (F -).

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

                            The trifunctor (F - ⊗ F -) ⊗ F -.

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

                              The trifunctor F - ⊗ (F - ⊗ F -).

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

                                The natural isomorphism of bifunctors F - ⊗ F - ≅ F (- ⊗ -), given a monoidal functor F.

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

                                  The functor which associates to a functor F the bifunctor F - ⊗ F -.

                                  Equations
                                  • One or more equations did not get rendered due to their size.
                                  Instances For
                                    @[simp]
                                    theorem CategoryTheory.MonoidalCategory.curriedTensorPreFunctor_map_app_app {C : Type u_1} [Category.{v_1, u_1} C] {D : Type u_2} [Category.{v_2, u_2} D] [MonoidalCategory D] {F₁ F₂ : Functor C D} (f : F₁ ⟶ F₂) (X₁ X₂ : C) :
                                    ((curriedTensorPreFunctor.map f).app X₁).app X₂ = tensorHom (f.app X₁) (f.app X₂)

                                    Lax monoidal functors #

                                    Given a unit morphism ε : 𝟙_ D ⟶ F.obj (𝟙_ C)) and a tensorator μ : F - ⊗ F - ⟶ F (- ⊗ -) such that the diagrams below commute, we define CategoryTheory.Functor.LaxMonoidal.ofBifunctor : F.LaxMonoidal.

                                    Associativity hexagon #

                                          (F - ⊗ F -) ⊗ F -
                                            /           \
                                           v             v
                                    F (- ⊗ -) ⊗ F -    F - ⊗ (F - ⊗ F -)
                                           |             |
                                           v             v
                                    F ((- ⊗ -) ⊗ -)    F - ⊗ F (- ⊗ -)
                                            \            /
                                             v          v
                                           F (- ⊗ (- ⊗ -))
                                    

                                    Left unitality square #

                                    𝟙 ⊗ F - ⟶ F 𝟙 ⊗ F -
                                      |           |
                                      v           v
                                      F    ←   F (𝟙 ⊗ -)
                                    

                                    Right unitality square #

                                    F - ⊗ 𝟙 ⟶ F - ⊗ F 𝟙
                                      |           |
                                      v           v
                                      F   ←   F (- ⊗ 𝟙)
                                    

                                    The composition of the left maps in the associativity hexagon.

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

                                      The top right map in the associativity hexagon.

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

                                        The composition of the right maps in the associativity hexagon.

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

                                          F is lax monoidal given a unit morphism ε : 𝟙_ D ⟶ F.obj (𝟙_ C)) and a tensorator μ : F - ⊗ F - ⟶ F (- ⊗ -) as a natural transformation between bifunctors, satisfying the relevant compatibilities.

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

                                            Oplax monoidal functors #

                                            Given a counit morphism η : F.obj (𝟙_ C)) ⟶ 𝟙_ D and a tensorator δ : F (- ⊗ -) ⟶ F - ⊗ F - such that the diagrams below commute, we define CategoryTheory.Functor.OplaxMonoidal.ofBifunctor : F.OplaxMonoidal.

                                            Oplax associativity hexagon #

                                                  F ((- ⊗ -) ⊗ -)
                                                    /           \
                                                   v             v
                                            F (- ⊗ -) ⊗ F -      F (- ⊗ (- ⊗ -))
                                                   |                |
                                                   v                v
                                            (F - ⊗ F -) ⊗ F -    F - ⊗ F (- ⊗ -)
                                                    \            /
                                                     v          v
                                                   F - ⊗ (F - ⊗ F -)
                                            

                                            Oplax left unitality square #

                                              F   ⟶  F (𝟙 ⊗ -)
                                              |           |
                                              v           v
                                            𝟙 ⊗ F - ← F 𝟙 ⊗ F -
                                            

                                            Oplax right unitality square #

                                              F  ⟶   F (- ⊗ 𝟙)
                                              |           |
                                              v           v
                                            F - ⊗ 𝟙 ← F - ⊗ F 𝟙
                                            

                                            The bottom left map in the oplax associativity hexagon.

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

                                              The composition of the three left maps in the oplax associativity hexagon.

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

                                                The composition of the three right maps in the oplax associativity hexagon.

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

                                                  F is oplax monoidal given a counit morphism η : F.obj (𝟙_ C) ⟶ 𝟙_ D and a tensorator δ : F (- ⊗ -) ⟶ F - ⊗ F - as a natural transformation between bifunctors, satisfying the relevant compatibilities.

                                                  Equations
                                                  • One or more equations did not get rendered due to their size.
                                                  Instances For
                                                    @[instance_reducible]
                                                    def CategoryTheory.Functor.Monoidal.ofBifunctor {C : Type u_1} [Category.{v_1, u_1} C] [MonoidalCategory C] {D : Type u_2} [Category.{v_2, u_2} D] [MonoidalCategory D] {F : Functor C D} (ε : MonoidalCategoryStruct.tensorUnit D ⟶ F.obj (MonoidalCategoryStruct.tensorUnit C)) (μ : MonoidalCategory.curriedTensorPre F ⟶ MonoidalCategory.curriedTensorPost F) (associativity : LaxMonoidal.ofBifunctor.firstMap μ = LaxMonoidal.ofBifunctor.secondMap μ) (left_unitality : LaxMonoidal.ofBifunctor.leftMapₗ F = CategoryStruct.comp (LaxMonoidal.ofBifunctor.topMapₗ ε) (CategoryStruct.comp (μ.app (MonoidalCategoryStruct.tensorUnit C)) (LaxMonoidal.ofBifunctor.bottomMapₗ F))) (right_unitality : LaxMonoidal.ofBifunctor.leftMapᵣ F = CategoryStruct.comp (LaxMonoidal.ofBifunctor.topMapᵣ ε) (CategoryStruct.comp (((flipFunctor C C D).map μ).app (MonoidalCategoryStruct.tensorUnit C)) (LaxMonoidal.ofBifunctor.bottomMapᵣ F))) (η : F.obj (MonoidalCategoryStruct.tensorUnit C) ⟶ MonoidalCategoryStruct.tensorUnit D) (δ : MonoidalCategory.curriedTensorPost F ⟶ MonoidalCategory.curriedTensorPre F) (oplax_associativity : OplaxMonoidal.ofBifunctor.firstMap δ = OplaxMonoidal.ofBifunctor.secondMap δ) (oplax_left_unitality : OplaxMonoidal.ofBifunctor.leftMapₗ F = CategoryStruct.comp (OplaxMonoidal.ofBifunctor.topMapₗ F) (CategoryStruct.comp (δ.app (MonoidalCategoryStruct.tensorUnit C)) (OplaxMonoidal.ofBifunctor.bottomMapₗ η))) (oplax_right_unitality : OplaxMonoidal.ofBifunctor.leftMapᵣ F = CategoryStruct.comp (OplaxMonoidal.ofBifunctor.topMapᵣ F) (CategoryStruct.comp (((flipFunctor C C D).map δ).app (MonoidalCategoryStruct.tensorUnit C)) (OplaxMonoidal.ofBifunctor.bottomMapᵣ η))) (ε_η : CategoryStruct.comp ε η = CategoryStruct.id (MonoidalCategoryStruct.tensorUnit D)) (η_ε : CategoryStruct.comp η ε = CategoryStruct.id (F.obj (MonoidalCategoryStruct.tensorUnit C))) (μ_δ : CategoryStruct.comp μ δ = CategoryStruct.id (MonoidalCategory.curriedTensorPre F)) (δ_μ : CategoryStruct.comp δ μ = CategoryStruct.id (MonoidalCategory.curriedTensorPost F)) :

                                                    F is monoidal given a co/unit morphisms ε/η : 𝟙_ D ↔ F.obj (𝟙_ C) and tensorators μ / δ : F - ⊗ F - ↔ F (- ⊗ -) as natural transformations between bifunctors, satisfying the relevant compatibilities.

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

                                                      F is monoidal given a unit isomorphism ε : 𝟙_ D ≅ F.obj (𝟙_ C) and a tensorator isomorphism μ : F - ⊗ F - ≅ F (- ⊗ -) as a natural isomorphism between bifunctors, satisfying the relevant compatibilities.

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