Documentation

Mathlib.CategoryTheory.Monoidal.PushoutProduct

Leibniz constructions associated to monoidal categories. #

In a monoidal category with pushouts, the pushout-product is the Leibniz functor associated to the tensor product. This is the bifunctor of arrow categories that sends f : A ⟶ B and g : X ⟶ Y to the canonical map from the pushout of f ◁ X and A ▷ g to B ⊗ Y, induced by the following diagram:

  A ⊗ X --> B ⊗ X
     |          |
     v          v
  A ⊗ Y --> B ⊗ Y

In a monoidal closed category with pullbacks, the pullback-hom is the the Leibniz functor associated to the internal hom. This is the bifunctor of arrow categories that sends f : A ⟶ B and g : X ⟶ Y to the canonical map from B ⟹ X to the pullback of (ihom A).map g : A ⟹ X ⟶ A ⟹ Y and (pre f).app Y : B ⟹ Y ⟶ A ⟹ Y, induced by the following diagram:

  B ⟹ X --> A ⟹ X
     |          |
     v          v
  B ⟹ Y --> A ⟹ Y

In Mathlib.CategoryTheory.Monoidal.Arrow, these constructions are used to define a monoidal (closed) structure on arrow categories.

@[reducible, inline]

The Leibniz functor associated to the tensor product on a monoidal category. This is the bifunctor of arrow categories that sends f : A ⟶ B and g : X ⟶ Y to the canonical map from the pushout of f ◁ X and A ▷ g to B ⊗ Y, induced by the following diagram:

  A ⊗ X --> B ⊗ X
     |          |
     v          v
  A ⊗ Y --> B ⊗ Y
Equations
Instances For

    Notation for the pushout-product of morphisms.

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

      The Leibniz functor associated to the internal hom on a monoidal closed category. This is the bifunctor of arrow categories that sends f : A ⟶ B and g : X ⟶ Y to the canonical map from B ⟹ X to the pullback of (ihom A).map g : A ⟹ X ⟶ A ⟹ Y and (pre f).app Y : B ⟹ Y ⟶ A ⟹ Y, induced by the following diagram:

        B ⟹ X --> A ⟹ X
           |          |
           v          v
        B ⟹ Y --> A ⟹ Y
      
      Equations
      Instances For

        Notation for the pullback-hom of morphisms.

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

          Left-whiskering the pushout-product of X₁ and X₂ with W : C is isomorphic to the pushout-product of W ◁ X₁ and X₂.

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

            Right-whiskering the pushout-product of X₁ and X₂ with W : C is isomorphic to the pushout-product of X₁ and X₂ ▷ W.

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

              The pushout-product is associative: (X₁ □ X₂) □ X₃ ≅ X₁ □ X₂ □ X₃.

              Equations
              • One or more equations did not get rendered due to their size.
              Instances For
                @[simp]
                theorem CategoryTheory.MonoidalCategory.Arrow.PushoutProduct.associator_hom_left {C : Type u} [Category.{v, u} C] [Limits.HasPushouts C] [MonoidalCategory C] (X₁ X₂ X₃ : Arrow C) [Limits.PreservesColimit (Limits.span (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) (tensorRight X₃.left)] [Limits.PreservesColimit (Limits.span (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) (tensorRight X₃.right)] [Limits.PreservesColimit (Limits.span (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom)) (tensorLeft X₁.left)] [Limits.PreservesColimit (Limits.span (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom)) (tensorLeft X₁.right)] :
                (associator X₁ X₂ X₃).hom.left = Limits.pushout.desc (CategoryStruct.comp (MonoidalCategoryStruct.associator X₁.right X₂.right X₃.left).hom (CategoryStruct.comp (whiskerLeft X₁.right (Limits.pushout.inl (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom))) (Limits.pushout.inl (whiskerRight X₁.hom (Limits.pushout (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom))) (whiskerLeft X₁.left (.desc (whiskerLeft X₂.right X₃.hom) (whiskerRight X₂.hom X₃.right) ))))) (CategoryStruct.comp .isoPushout.hom (Limits.colimit.desc (Limits.span (whiskerRight (whiskerRight X₁.hom X₂.left) X₃.right) (whiskerRight (whiskerLeft X₁.left X₂.hom) X₃.right)) ((Limits.Cocone.precompose (Limits.spanExt (MonoidalCategoryStruct.associator X₁.left X₂.left X₃.right) (MonoidalCategoryStruct.associator X₁.right X₂.left X₃.right) (MonoidalCategoryStruct.associator X₁.left X₂.right X₃.right) ).hom).obj (Limits.PushoutCocone.mk (CategoryStruct.comp (whiskerLeft X₁.right (Limits.pushout.inr (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom))) (Limits.pushout.inl (whiskerRight X₁.hom (Limits.pushout (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom))) (whiskerLeft X₁.left (.desc (whiskerLeft X₂.right X₃.hom) (whiskerRight X₂.hom X₃.right) )))) (Limits.pushout.inr (whiskerRight X₁.hom (Limits.pushout (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom))) (whiskerLeft X₁.left (.desc (whiskerLeft X₂.right X₃.hom) (whiskerRight X₂.hom X₃.right) ))) ))))
                @[simp]
                theorem CategoryTheory.MonoidalCategory.Arrow.PushoutProduct.associator_inv_left {C : Type u} [Category.{v, u} C] [Limits.HasPushouts C] [MonoidalCategory C] (X₁ X₂ X₃ : Arrow C) [Limits.PreservesColimit (Limits.span (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) (tensorRight X₃.left)] [Limits.PreservesColimit (Limits.span (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) (tensorRight X₃.right)] [Limits.PreservesColimit (Limits.span (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom)) (tensorLeft X₁.left)] [Limits.PreservesColimit (Limits.span (whiskerRight X₂.hom X₃.left) (whiskerLeft X₂.left X₃.hom)) (tensorLeft X₁.right)] :
                (associator X₁ X₂ X₃).inv.left = Limits.pushout.desc (CategoryStruct.comp .isoPushout.hom (Limits.colimit.desc (Limits.span (whiskerLeft X₁.right (whiskerRight X₂.hom X₃.left)) (whiskerLeft X₁.right (whiskerLeft X₂.left X₃.hom))) ((Limits.Cocone.precompose (Limits.spanExt (MonoidalCategoryStruct.associator X₁.right X₂.left X₃.left).symm (MonoidalCategoryStruct.associator X₁.right X₂.right X₃.left).symm (MonoidalCategoryStruct.associator X₁.right X₂.left X₃.right).symm ).hom).obj (Limits.PushoutCocone.mk (Limits.pushout.inl (whiskerRight (.desc (whiskerLeft X₁.right X₂.hom) (whiskerRight X₁.hom X₂.right) ) X₃.left) (whiskerLeft (Limits.pushout (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) X₃.hom)) (CategoryStruct.comp (whiskerRight (Limits.pushout.inl (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) X₃.right) (Limits.pushout.inr (whiskerRight (.desc (whiskerLeft X₁.right X₂.hom) (whiskerRight X₁.hom X₂.right) ) X₃.left) (whiskerLeft (Limits.pushout (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) X₃.hom))) )))) (CategoryStruct.comp (MonoidalCategoryStruct.associator X₁.left X₂.right X₃.right).inv (CategoryStruct.comp (whiskerRight (Limits.pushout.inr (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) X₃.right) (Limits.pushout.inr (whiskerRight (.desc (whiskerLeft X₁.right X₂.hom) (whiskerRight X₁.hom X₂.right) ) X₃.left) (whiskerLeft (Limits.pushout (whiskerRight X₁.hom X₂.left) (whiskerLeft X₁.left X₂.hom)) X₃.hom))))

                The pushout-product is commutative: X₁ □ X₂ ≅ X₂ □ X₁.

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

                  If C is a CCC with pushouts and an initial object, then X □ (⊥_ C ⟶ 𝟙_ C) ≅ X.

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

                    If C is a braided CCC with pushouts and an initial object, then (⊥_ C ⟶ 𝟙_ C) □ X ≅ X.

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