File: Mathlib/CategoryTheory/Monoidal/NaturalTransformation.lean

full_name: CategoryTheory.MonoidalNatTrans.tensor
code: /-- A monoidal natural transformation is a natural transformation between (lax) monoidal functors
additionally satisfying:
`F.μ X Y ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ X Y`
-/
@[ext]
structure MonoidalNatTrans (F G : LaxMonoidalFunctor C D) extends
  NatTrans F.toFunctor G.toFunctor where
  /-- The unit condition for a monoidal natural transformation. -/
  unit : F.ε ≫ app (𝟙_ C) = G.ε := by aesop_cat
  /-- The tensor condition for a monoidal natural transformation. -/
  tensor : ∀ X Y, F.μ _ _ ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ _ _ := by aesop_cat
goal: F.μ X Y ≫ self.app (CategoryTheory.MonoidalCategory.tensorObj X Y) =
  CategoryTheory.MonoidalCategory.tensorHom (self.app X) (self.app Y) ≫ G.μ X Y

full_name: CategoryTheory.MonoidalNatTrans
code: /-- A monoidal natural transformation is a natural transformation between (lax) monoidal functors
additionally satisfying:
`F.μ X Y ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ X Y`
-/
@[ext]
structure MonoidalNatTrans (F G : LaxMonoidalFunctor C D) extends
  NatTrans F.toFunctor G.toFunctor where
  /-- The unit condition for a monoidal natural transformation. -/
  unit : F.ε ≫ app (𝟙_ C) = G.ε := by aesop_cat
  /-- The tensor condition for a monoidal natural transformation. -/
  tensor : ∀ X Y, F.μ _ _ ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ _ _ := by aesop_cat
goal: Type (max u₁ v₂)

full_name: CategoryTheory.MonoidalNatTrans.unit
code: /-- A monoidal natural transformation is a natural transformation between (lax) monoidal functors
additionally satisfying:
`F.μ X Y ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ X Y`
-/
@[ext]
structure MonoidalNatTrans (F G : LaxMonoidalFunctor C D) extends
  NatTrans F.toFunctor G.toFunctor where
  /-- The unit condition for a monoidal natural transformation. -/
  unit : F.ε ≫ app (𝟙_ C) = G.ε := by aesop_cat
  /-- The tensor condition for a monoidal natural transformation. -/
  tensor : ∀ X Y, F.μ _ _ ≫ app (X ⊗ Y) = (app X ⊗ app Y) ≫ G.μ _ _ := by aesop_cat
goal: F.ε ≫ self.app (𝟙_ C) = G.ε

full_name: CategoryTheory.MonoidalNatTrans.id
code: /-- The identity monoidal natural transformation. -/
@[simps!]
def id (F : LaxMonoidalFunctor C D) : MonoidalNatTrans F F 
goal: CategoryTheory.MonoidalNatTrans F F

full_name: CategoryTheory.MonoidalNatTrans.id_toNatTrans_app
code: /-- The identity monoidal natural transformation. -/
@[simps!]
def id (F : LaxMonoidalFunctor C D) : MonoidalNatTrans F F 
goal: (CategoryTheory.MonoidalNatTrans.id F).app X = 𝟙 (F.obj X)

full_name: CategoryTheory.MonoidalNatTrans.instInhabited
code: instance (F : LaxMonoidalFunctor C D) : Inhabited (MonoidalNatTrans F F) 
goal: Inhabited (CategoryTheory.MonoidalNatTrans F F)

full_name: CategoryTheory.MonoidalNatTrans.vcomp_toNatTrans_app
code: /-- Vertical composition of monoidal natural transformations. -/
@[simps!]
def vcomp {F G H : LaxMonoidalFunctor C D} (α : MonoidalNatTrans F G) (β : MonoidalNatTrans G H) :
    MonoidalNatTrans F H 
goal: (α.vcomp β).app X = α.app X ≫ β.app X

full_name: CategoryTheory.MonoidalNatTrans.vcomp
code: /-- Vertical composition of monoidal natural transformations. -/
@[simps!]
def vcomp {F G H : LaxMonoidalFunctor C D} (α : MonoidalNatTrans F G) (β : MonoidalNatTrans G H) :
    MonoidalNatTrans F H 
goal: CategoryTheory.MonoidalNatTrans F H

full_name: CategoryTheory.MonoidalNatTrans.categoryLaxMonoidalFunctor
code: instance categoryLaxMonoidalFunctor : Category (LaxMonoidalFunctor C D) 
goal: CategoryTheory.Category.{max u₁ v₂, max (max (max u₂ u₁) v₂) v₁} (CategoryTheory.LaxMonoidalFunctor C D)

full_name: CategoryTheory.MonoidalNatTrans.comp_toNatTrans_lax
code: @[simp]
theorem comp_toNatTrans_lax {F G H : LaxMonoidalFunctor C D} {α : F ⟶ G} {β : G ⟶ H} :
    (α ≫ β).toNatTrans = @CategoryStruct.comp (C ⥤ D) _ _ _ _ α.toNatTrans β.toNatTrans 
goal: (α ≫ β).toNatTrans = α.toNatTrans ≫ β.toNatTrans

full_name: CategoryTheory.MonoidalNatTrans.categoryMonoidalFunctor
code: instance categoryMonoidalFunctor : Category (MonoidalFunctor C D) 
goal: CategoryTheory.Category.{max u₁ v₂, max (max (max u₂ u₁) v₂) v₁} (CategoryTheory.MonoidalFunctor C D)

full_name: CategoryTheory.MonoidalNatTrans.ext'
code: @[ext]
lemma ext' {F G : LaxMonoidalFunctor C D} {α β : F ⟶ G} (w : ∀ X : C, α.app X = β.app X) : α = β 
goal: α = β

full_name: CategoryTheory.MonoidalNatTrans.comp_toNatTrans
code: @[simp]
theorem comp_toNatTrans {F G H : MonoidalFunctor C D} {α : F ⟶ G} {β : G ⟶ H} :
    (α ≫ β).toNatTrans = @CategoryStruct.comp (C ⥤ D) _ _ _ _ α.toNatTrans β.toNatTrans 
goal: (α ≫ β).toNatTrans = α.toNatTrans ≫ β.toNatTrans

full_name: CategoryTheory.MonoidalNatTrans.hcomp
code: /-- Horizontal composition of monoidal natural transformations. -/
@[simps]
def hcomp {F G : LaxMonoidalFunctor C D} {H K : LaxMonoidalFunctor D E} (α : MonoidalNatTrans F G)
    (β : MonoidalNatTrans H K) : MonoidalNatTrans (F ⊗⋙ H) (G ⊗⋙ K) 
goal: CategoryTheory.MonoidalNatTrans (F ⊗⋙ H) (G ⊗⋙ K)

full_name: CategoryTheory.MonoidalNatTrans.hcomp_toNatTrans
code: /-- Horizontal composition of monoidal natural transformations. -/
@[simps]
def hcomp {F G : LaxMonoidalFunctor C D} {H K : LaxMonoidalFunctor D E} (α : MonoidalNatTrans F G)
    (β : MonoidalNatTrans H K) : MonoidalNatTrans (F ⊗⋙ H) (G ⊗⋙ K) 
goal: (α.hcomp β).toNatTrans = α.toNatTrans ◫ β.toNatTrans

full_name: CategoryTheory.MonoidalNatTrans.prod_toNatTrans_app
code: /-- The cartesian product of two monoidal natural transformations is monoidal. -/
@[simps]
def prod {F G : LaxMonoidalFunctor C D} {H K : LaxMonoidalFunctor C E} (α : MonoidalNatTrans F G)
    (β : MonoidalNatTrans H K) : MonoidalNatTrans (F.prod' H) (G.prod' K) 
goal: (α.prod β).app X = (α.app X, β.app X)

full_name: CategoryTheory.MonoidalNatTrans.prod
code: /-- The cartesian product of two monoidal natural transformations is monoidal. -/
@[simps]
def prod {F G : LaxMonoidalFunctor C D} {H K : LaxMonoidalFunctor C E} (α : MonoidalNatTrans F G)
    (β : MonoidalNatTrans H K) : MonoidalNatTrans (F.prod' H) (G.prod' K) 
goal: CategoryTheory.MonoidalNatTrans (F.prod' H) (G.prod' K)

full_name: CategoryTheory.MonoidalNatIso.ofComponents
code: /-- Construct a monoidal natural isomorphism from object level isomorphisms,
and the monoidal naturality in the forward direction. -/
def ofComponents (app : ∀ X : C, F.obj X ≅ G.obj X)
    (naturality' :
      ∀ {X Y : C} (f : X ⟶ Y), F.map f ≫ (app Y).hom = (app X).hom ≫ G.map f := by aesop_cat)
    (unit' : F.ε ≫ (app (𝟙_ C)).hom = G.ε := by aesop_cat)
    (tensor' :
      ∀ X Y, F.μ X Y ≫ (app (X ⊗ Y)).hom = ((app X).hom ⊗ (app Y).hom) ≫ G.μ X Y := by aesop_cat) :
    F ≅ G 
goal: F ≅ G

full_name: CategoryTheory.MonoidalNatIso.ofComponents.hom_app
code: @[simp]
theorem ofComponents.hom_app (app : ∀ X : C, F.obj X ≅ G.obj X) (naturality) (unit) (tensor) (X) :
    (ofComponents app naturality unit tensor).hom.app X = (app X).hom 
goal: (CategoryTheory.MonoidalNatIso.ofComponents app naturality unit tensor).hom.app X = (app X).hom

full_name: CategoryTheory.MonoidalNatIso.ofComponents.inv_app
code: @[simp]
theorem ofComponents.inv_app (app : ∀ X : C, F.obj X ≅ G.obj X) (naturality) (unit) (tensor) (X) :
    (ofComponents app naturality unit tensor).inv.app X = (app X).inv 
goal: (CategoryTheory.MonoidalNatIso.ofComponents app naturality unit tensor).inv.app X = (app X).inv

full_name: CategoryTheory.MonoidalNatIso.isIso_of_isIso_app
code: instance isIso_of_isIso_app (α : F ⟶ G) [∀ X : C, IsIso (α.app X)] : IsIso α 
goal: CategoryTheory.IsIso α

full_name: CategoryTheory.monoidalUnit
code: /-- The unit of a adjunction can be upgraded to a monoidal natural transformation. -/
def monoidalUnit  :
    LaxMonoidalFunctor.id C ⟶ F.toLaxMonoidalFunctor ⊗⋙ (monoidalAdjoint F h) 
goal: CategoryTheory.LaxMonoidalFunctor.id C ⟶ F.toLaxMonoidalFunctor ⊗⋙ CategoryTheory.monoidalAdjoint F h

full_name: CategoryTheory.monoidalCounit
code: /-- The unit of a adjunction can be upgraded to a monoidal natural transformation. -/
@[simps]
def monoidalCounit :
    (monoidalAdjoint F h) ⊗⋙ F.toLaxMonoidalFunctor ⟶ LaxMonoidalFunctor.id D 
goal: CategoryTheory.monoidalAdjoint F h ⊗⋙ F.toLaxMonoidalFunctor ⟶ CategoryTheory.LaxMonoidalFunctor.id D

full_name: CategoryTheory.monoidalCounit_toNatTrans
code: /-- The unit of a adjunction can be upgraded to a monoidal natural transformation. -/
@[simps]
def monoidalCounit :
    (monoidalAdjoint F h) ⊗⋙ F.toLaxMonoidalFunctor ⟶ LaxMonoidalFunctor.id D 
goal: (CategoryTheory.monoidalCounit F h).toNatTrans = h.counit

full_name: CategoryTheory.instIsIsoLaxMonoidalFunctorMonoidalUnitOfIsEquivalence
code: instance [F.IsEquivalence] : IsIso (monoidalUnit F h) 
goal: CategoryTheory.IsIso (CategoryTheory.monoidalUnit F h)

full_name: CategoryTheory.instIsIsoLaxMonoidalFunctorMonoidalCounitOfIsEquivalence
code: instance [F.IsEquivalence] : IsIso (monoidalCounit F h) 
goal: CategoryTheory.IsIso (CategoryTheory.monoidalCounit F h)