ruc-ai4math/mathlib_handler_benchmark_410 huggingface dataset:
-- CategoryTheory.Pseudofunctor.categoryStruct_id
@[simps id comp]
instance Pseudofunctor.categoryStruct : CategoryStruct (Pseudofunctor B C) 
Arguments: (B : Type u₁) [CategoryTheory.Bicategory B] (C : Type u₂) [CategoryTheory.Bicategory C] (F : CategoryTheory.Pseudofunctor B C)
Goal: CategoryTheory.CategoryStruct.id F = CategoryTheory.StrongOplaxNatTrans.id F.toOplax
-- CategoryTheory.LaxMonoidalFunctor.right_unitality
structure LaxMonoidalFunctor extends C ⥤ D where
    ε : 𝟙_ D ⟶ obj (𝟙_ C)
    μ : ∀ X Y : C, obj X ⊗ obj Y ⟶ obj (X ⊗ Y)
  μ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      map f ▷ obj X' ≫ μ Y X' = μ X X' ≫ map (f ▷ X') := by
    aesop_cat
  μ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      obj X' ◁ map f ≫ μ X' Y = μ X' X ≫ map (X' ◁ f) := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      μ X Y ▷ obj Z ≫ μ (X ⊗ Y) Z ≫ map (α_ X Y Z).hom =
        (α_ (obj X) (obj Y) (obj Z)).hom ≫ obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z) := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).hom = ε ▷ obj X ≫ μ (𝟙_ C) X ≫ map (λ_ X).hom := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).hom = obj X ◁ ε ≫ μ X (𝟙_ C) ≫ map (ρ_ X).hom := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.LaxMonoidalFunctor C D) (X : C)
Goal: (CategoryTheory.MonoidalCategory.rightUnitor (self.obj X)).hom =
  CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) self.ε ≫
    self.μ X (𝟙_ C) ≫ self.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom
-- CategoryTheory.LaxMonoidalFunctor.μ_natural_right
structure LaxMonoidalFunctor extends C ⥤ D where
    ε : 𝟙_ D ⟶ obj (𝟙_ C)
    μ : ∀ X Y : C, obj X ⊗ obj Y ⟶ obj (X ⊗ Y)
  μ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      map f ▷ obj X' ≫ μ Y X' = μ X X' ≫ map (f ▷ X') := by
    aesop_cat
  μ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      obj X' ◁ map f ≫ μ X' Y = μ X' X ≫ map (X' ◁ f) := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      μ X Y ▷ obj Z ≫ μ (X ⊗ Y) Z ≫ map (α_ X Y Z).hom =
        (α_ (obj X) (obj Y) (obj Z)).hom ≫ obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z) := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).hom = ε ▷ obj X ≫ μ (𝟙_ C) X ≫ map (λ_ X).hom := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).hom = obj X ◁ ε ≫ μ X (𝟙_ C) ≫ map (ρ_ X).hom := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.LaxMonoidalFunctor C D) {X Y : C} (X' : C) (f : X ⟶ Y)
Goal: CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X') (self.map f) ≫ self.μ X' Y =
  self.μ X' X ≫ self.map (CategoryTheory.MonoidalCategory.whiskerLeft X' f)
-- CategoryTheory.LaxMonoidalFunctor.associativity
structure LaxMonoidalFunctor extends C ⥤ D where
    ε : 𝟙_ D ⟶ obj (𝟙_ C)
    μ : ∀ X Y : C, obj X ⊗ obj Y ⟶ obj (X ⊗ Y)
  μ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      map f ▷ obj X' ≫ μ Y X' = μ X X' ≫ map (f ▷ X') := by
    aesop_cat
  μ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      obj X' ◁ map f ≫ μ X' Y = μ X' X ≫ map (X' ◁ f) := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      μ X Y ▷ obj Z ≫ μ (X ⊗ Y) Z ≫ map (α_ X Y Z).hom =
        (α_ (obj X) (obj Y) (obj Z)).hom ≫ obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z) := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).hom = ε ▷ obj X ≫ μ (𝟙_ C) X ≫ map (λ_ X).hom := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).hom = obj X ◁ ε ≫ μ X (𝟙_ C) ≫ map (ρ_ X).hom := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.LaxMonoidalFunctor C D) (X Y Z : C)
Goal: CategoryTheory.MonoidalCategory.whiskerRight (self.μ X Y) (self.obj Z) ≫
    self.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
      self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom =
  (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom ≫
    CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.μ Y Z) ≫
      self.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z)
-- CategoryTheory.LaxMonoidalFunctor.left_unitality
structure LaxMonoidalFunctor extends C ⥤ D where
    ε : 𝟙_ D ⟶ obj (𝟙_ C)
    μ : ∀ X Y : C, obj X ⊗ obj Y ⟶ obj (X ⊗ Y)
  μ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      map f ▷ obj X' ≫ μ Y X' = μ X X' ≫ map (f ▷ X') := by
    aesop_cat
  μ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      obj X' ◁ map f ≫ μ X' Y = μ X' X ≫ map (X' ◁ f) := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      μ X Y ▷ obj Z ≫ μ (X ⊗ Y) Z ≫ map (α_ X Y Z).hom =
        (α_ (obj X) (obj Y) (obj Z)).hom ≫ obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z) := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).hom = ε ▷ obj X ≫ μ (𝟙_ C) X ≫ map (λ_ X).hom := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).hom = obj X ◁ ε ≫ μ X (𝟙_ C) ≫ map (ρ_ X).hom := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.LaxMonoidalFunctor C D) (X : C)
Goal: (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).hom =
  CategoryTheory.MonoidalCategory.whiskerRight self.ε (self.obj X) ≫
    self.μ (𝟙_ C) X ≫ self.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom
-- CategoryTheory.LaxMonoidalFunctor.μ_natural_left
structure LaxMonoidalFunctor extends C ⥤ D where
    ε : 𝟙_ D ⟶ obj (𝟙_ C)
    μ : ∀ X Y : C, obj X ⊗ obj Y ⟶ obj (X ⊗ Y)
  μ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      map f ▷ obj X' ≫ μ Y X' = μ X X' ≫ map (f ▷ X') := by
    aesop_cat
  μ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      obj X' ◁ map f ≫ μ X' Y = μ X' X ≫ map (X' ◁ f) := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      μ X Y ▷ obj Z ≫ μ (X ⊗ Y) Z ≫ map (α_ X Y Z).hom =
        (α_ (obj X) (obj Y) (obj Z)).hom ≫ obj X ◁ μ Y Z ≫ μ X (Y ⊗ Z) := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).hom = ε ▷ obj X ≫ μ (𝟙_ C) X ≫ map (λ_ X).hom := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).hom = obj X ◁ ε ≫ μ X (𝟙_ C) ≫ map (ρ_ X).hom := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.LaxMonoidalFunctor C D) {X Y : C} (f : X ⟶ Y) (X' : C)
Goal: CategoryTheory.MonoidalCategory.whiskerRight (self.map f) (self.obj X') ≫ self.μ Y X' =
  self.μ X X' ≫ self.map (CategoryTheory.MonoidalCategory.whiskerRight f X')
-- CategoryTheory.LaxMonoidalFunctor.μ_natural
@[reassoc (attr := simp)]
theorem LaxMonoidalFunctor.μ_natural (F : LaxMonoidalFunctor C D) {X Y X' Y' : C}
    (f : X ⟶ Y) (g : X' ⟶ Y') :
      (F.map f ⊗ F.map g) ≫ F.μ Y Y' = F.μ X X' ≫ F.map (f ⊗ g) 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : CategoryTheory.LaxMonoidalFunctor C D) {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y')
Goal: CategoryTheory.MonoidalCategory.tensorHom (F.map f) (F.map g) ≫ F.μ Y Y' =
  F.μ X X' ≫ F.map (CategoryTheory.MonoidalCategory.tensorHom f g)
-- CategoryTheory.LaxMonoidalFunctor.ofTensorHom_μ
@[simps]
def LaxMonoidalFunctor.ofTensorHom (F : C ⥤ D)
    /- unit morphism -/
    (ε : 𝟙_ D ⟶ F.obj (𝟙_ C))
    /- tensorator -/
    (μ : ∀ X Y : C, F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y))
    (μ_natural :
      ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'),
        (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g) := by
      aesop_cat)
    /- associativity of the tensorator -/
    (associativity :
      ∀ X Y Z : C,
        (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
          (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z) := by
      aesop_cat)
    /- unitality -/
    (left_unitality :
      ∀ X : C, (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom := by
        aesop_cat)
    (right_unitality :
      ∀ X : C, (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom := by
        aesop_cat) :
        LaxMonoidalFunctor C D 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : 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.MonoidalCategory.tensorHom (F.map f) (F.map g) ≫ μ Y Y' =
      μ X X' ≫ F.map (CategoryTheory.MonoidalCategory.tensorHom f g) := by
  aesop_cat) (associativity :
  ∀ (X Y Z : C),
    CategoryTheory.MonoidalCategory.tensorHom (μ X Y) (𝟙 (F.obj Z)) ≫
        μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
          F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom =
      (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom ≫
        CategoryTheory.MonoidalCategory.tensorHom (𝟙 (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.MonoidalCategory.tensorHom ε (𝟙 (F.obj X)) ≫
        μ (𝟙_ C) X ≫ F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom := by
  aesop_cat) (right_unitality :
  ∀ (X : C),
    (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom =
      CategoryTheory.MonoidalCategory.tensorHom (𝟙 (F.obj X)) ε ≫
        μ X (𝟙_ C) ≫ F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom := by
  aesop_cat) (X Y : C)
Goal: (CategoryTheory.LaxMonoidalFunctor.ofTensorHom F ε μ μ_natural associativity left_unitality right_unitality).μ X Y =
  μ X Y
-- CategoryTheory.LaxMonoidalFunctor.ofTensorHom_toFunctor_map
@[simps]
def LaxMonoidalFunctor.ofTensorHom (F : C ⥤ D)
    /- unit morphism -/
    (ε : 𝟙_ D ⟶ F.obj (𝟙_ C))
    /- tensorator -/
    (μ : ∀ X Y : C, F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y))
    (μ_natural :
      ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'),
        (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g) := by
      aesop_cat)
    /- associativity of the tensorator -/
    (associativity :
      ∀ X Y Z : C,
        (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
          (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z) := by
      aesop_cat)
    /- unitality -/
    (left_unitality :
      ∀ X : C, (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom := by
        aesop_cat)
    (right_unitality :
      ∀ X : C, (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom := by
        aesop_cat) :
        LaxMonoidalFunctor C D 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : 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.MonoidalCategory.tensorHom (F.map f) (F.map g) ≫ μ Y Y' =
      μ X X' ≫ F.map (CategoryTheory.MonoidalCategory.tensorHom f g) := by
  aesop_cat) (associativity :
  ∀ (X Y Z : C),
    CategoryTheory.MonoidalCategory.tensorHom (μ X Y) (𝟙 (F.obj Z)) ≫
        μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
          F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom =
      (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom ≫
        CategoryTheory.MonoidalCategory.tensorHom (𝟙 (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.MonoidalCategory.tensorHom ε (𝟙 (F.obj X)) ≫
        μ (𝟙_ C) X ≫ F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom := by
  aesop_cat) (right_unitality :
  ∀ (X : C),
    (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom =
      CategoryTheory.MonoidalCategory.tensorHom (𝟙 (F.obj X)) ε ≫
        μ X (𝟙_ C) ≫ F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom := by
  aesop_cat)
Goal: ∀ {X Y : C} (a : X ⟶ Y),
  (CategoryTheory.LaxMonoidalFunctor.ofTensorHom F ε μ μ_natural associativity left_unitality right_unitality).map a =
    F.map a
-- CategoryTheory.LaxMonoidalFunctor.ofTensorHom_ε
@[simps]
def LaxMonoidalFunctor.ofTensorHom (F : C ⥤ D)
    /- unit morphism -/
    (ε : 𝟙_ D ⟶ F.obj (𝟙_ C))
    /- tensorator -/
    (μ : ∀ X Y : C, F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y))
    (μ_natural :
      ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'),
        (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g) := by
      aesop_cat)
    /- associativity of the tensorator -/
    (associativity :
      ∀ X Y Z : C,
        (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
          (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z) := by
      aesop_cat)
    /- unitality -/
    (left_unitality :
      ∀ X : C, (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom := by
        aesop_cat)
    (right_unitality :
      ∀ X : C, (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom := by
        aesop_cat) :
        LaxMonoidalFunctor C D 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : 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.MonoidalCategory.tensorHom (F.map f) (F.map g) ≫ μ Y Y' =
      μ X X' ≫ F.map (CategoryTheory.MonoidalCategory.tensorHom f g) := by
  aesop_cat) (associativity :
  ∀ (X Y Z : C),
    CategoryTheory.MonoidalCategory.tensorHom (μ X Y) (𝟙 (F.obj Z)) ≫
        μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
          F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom =
      (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom ≫
        CategoryTheory.MonoidalCategory.tensorHom (𝟙 (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.MonoidalCategory.tensorHom ε (𝟙 (F.obj X)) ≫
        μ (𝟙_ C) X ≫ F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom := by
  aesop_cat) (right_unitality :
  ∀ (X : C),
    (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom =
      CategoryTheory.MonoidalCategory.tensorHom (𝟙 (F.obj X)) ε ≫
        μ X (𝟙_ C) ≫ F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom := by
  aesop_cat)
Goal: (CategoryTheory.LaxMonoidalFunctor.ofTensorHom F ε μ μ_natural associativity left_unitality right_unitality).ε = ε
-- CategoryTheory.LaxMonoidalFunctor.ofTensorHom_toFunctor_obj
@[simps]
def LaxMonoidalFunctor.ofTensorHom (F : C ⥤ D)
    /- unit morphism -/
    (ε : 𝟙_ D ⟶ F.obj (𝟙_ C))
    /- tensorator -/
    (μ : ∀ X Y : C, F.obj X ⊗ F.obj Y ⟶ F.obj (X ⊗ Y))
    (μ_natural :
      ∀ {X Y X' Y' : C} (f : X ⟶ Y) (g : X' ⟶ Y'),
        (F.map f ⊗ F.map g) ≫ μ Y Y' = μ X X' ≫ F.map (f ⊗ g) := by
      aesop_cat)
    /- associativity of the tensorator -/
    (associativity :
      ∀ X Y Z : C,
        (μ X Y ⊗ 𝟙 (F.obj Z)) ≫ μ (X ⊗ Y) Z ≫ F.map (α_ X Y Z).hom =
          (α_ (F.obj X) (F.obj Y) (F.obj Z)).hom ≫ (𝟙 (F.obj X) ⊗ μ Y Z) ≫ μ X (Y ⊗ Z) := by
      aesop_cat)
    /- unitality -/
    (left_unitality :
      ∀ X : C, (λ_ (F.obj X)).hom = (ε ⊗ 𝟙 (F.obj X)) ≫ μ (𝟙_ C) X ≫ F.map (λ_ X).hom := by
        aesop_cat)
    (right_unitality :
      ∀ X : C, (ρ_ (F.obj X)).hom = (𝟙 (F.obj X) ⊗ ε) ≫ μ X (𝟙_ C) ≫ F.map (ρ_ X).hom := by
        aesop_cat) :
        LaxMonoidalFunctor C D 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : 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.MonoidalCategory.tensorHom (F.map f) (F.map g) ≫ μ Y Y' =
      μ X X' ≫ F.map (CategoryTheory.MonoidalCategory.tensorHom f g) := by
  aesop_cat) (associativity :
  ∀ (X Y Z : C),
    CategoryTheory.MonoidalCategory.tensorHom (μ X Y) (𝟙 (F.obj Z)) ≫
        μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
          F.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom =
      (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).hom ≫
        CategoryTheory.MonoidalCategory.tensorHom (𝟙 (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.MonoidalCategory.tensorHom ε (𝟙 (F.obj X)) ≫
        μ (𝟙_ C) X ≫ F.map (CategoryTheory.MonoidalCategory.leftUnitor X).hom := by
  aesop_cat) (right_unitality :
  ∀ (X : C),
    (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).hom =
      CategoryTheory.MonoidalCategory.tensorHom (𝟙 (F.obj X)) ε ≫
        μ X (𝟙_ C) ≫ F.map (CategoryTheory.MonoidalCategory.rightUnitor X).hom := by
  aesop_cat)
Goal: ∀ (a : C),
  (CategoryTheory.LaxMonoidalFunctor.ofTensorHom F ε μ μ_natural associativity left_unitality right_unitality).obj a =
    F.obj a
-- CategoryTheory.LaxMonoidalFunctor.left_unitality_inv
@[reassoc (attr := simp)]
theorem LaxMonoidalFunctor.left_unitality_inv (F : LaxMonoidalFunctor C D) (X : C) :
    (λ_ (F.obj X)).inv ≫ F.ε ▷ F.obj X ≫ F.μ (𝟙_ C) X = F.map (λ_ X).inv 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : CategoryTheory.LaxMonoidalFunctor C D) (X : C)
Goal: (CategoryTheory.MonoidalCategory.leftUnitor (F.obj X)).inv ≫
    CategoryTheory.MonoidalCategory.whiskerRight F.ε (F.obj X) ≫ F.μ (𝟙_ C) X =
  F.map (CategoryTheory.MonoidalCategory.leftUnitor X).inv
-- CategoryTheory.LaxMonoidalFunctor.right_unitality_inv
@[reassoc (attr := simp)]
theorem LaxMonoidalFunctor.right_unitality_inv (F : LaxMonoidalFunctor C D) (X : C) :
    (ρ_ (F.obj X)).inv ≫ F.obj X ◁ F.ε ≫ F.μ X (𝟙_ C) = F.map (ρ_ X).inv 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : CategoryTheory.LaxMonoidalFunctor C D) (X : C)
Goal: (CategoryTheory.MonoidalCategory.rightUnitor (F.obj X)).inv ≫
    CategoryTheory.MonoidalCategory.whiskerLeft (F.obj X) F.ε ≫ F.μ X (𝟙_ C) =
  F.map (CategoryTheory.MonoidalCategory.rightUnitor X).inv
-- CategoryTheory.LaxMonoidalFunctor.associativity_inv
@[reassoc (attr := simp)]
theorem LaxMonoidalFunctor.associativity_inv (F : LaxMonoidalFunctor C D) (X Y Z : C) :
    F.obj X ◁ F.μ Y Z ≫ F.μ X (Y ⊗ Z) ≫ F.map (α_ X Y Z).inv =
      (α_ (F.obj X) (F.obj Y) (F.obj Z)).inv ≫ F.μ X Y ▷ F.obj Z ≫ F.μ (X ⊗ Y) Z 
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (F : CategoryTheory.LaxMonoidalFunctor C D) (X Y Z : C)
Goal: CategoryTheory.MonoidalCategory.whiskerLeft (F.obj X) (F.μ Y Z) ≫
    F.μ X (CategoryTheory.MonoidalCategory.tensorObj Y Z) ≫
      F.map (CategoryTheory.MonoidalCategory.associator X Y Z).inv =
  (CategoryTheory.MonoidalCategory.associator (F.obj X) (F.obj Y) (F.obj Z)).inv ≫
    CategoryTheory.MonoidalCategory.whiskerRight (F.μ X Y) (F.obj Z) ≫
      F.μ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z
-- CategoryTheory.OplaxMonoidalFunctor.associativity
structure OplaxMonoidalFunctor extends C ⥤ D where
    η : obj (𝟙_ C) ⟶ 𝟙_ D
    δ : ∀ X Y : C, obj (X ⊗ Y) ⟶ obj X ⊗ obj Y
  δ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      δ X X' ≫ map f ▷ obj X' = map (f ▷ X') ≫ δ Y X' := by
    aesop_cat
  δ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      δ X' X ≫ obj X' ◁ map f = map (X' ◁ f) ≫ δ X' Y := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      δ (X ⊗ Y) Z ≫ δ X Y ▷ obj Z ≫ (α_ (obj X) (obj Y) (obj Z)).hom =
        map (α_ X Y Z).hom ≫ δ X (Y ⊗ Z) ≫ obj X ◁ δ Y Z := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).inv = map (λ_ X).inv ≫ δ (𝟙_ C) X ≫ η ▷ obj X := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).inv = map (ρ_ X).inv ≫ δ X (𝟙_ C) ≫ obj X ◁ η := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.OplaxMonoidalFunctor C D) (X Y Z : C)
Goal: self.δ (CategoryTheory.MonoidalCategory.tensorObj X Y) Z ≫
    CategoryTheory.MonoidalCategory.whiskerRight (self.δ X Y) (self.obj Z) ≫
      (CategoryTheory.MonoidalCategory.associator (self.obj X) (self.obj Y) (self.obj Z)).hom =
  self.map (CategoryTheory.MonoidalCategory.associator X Y Z).hom ≫
    self.δ X (CategoryTheory.MonoidalCategory.tensorObj Y Z) ≫
      CategoryTheory.MonoidalCategory.whiskerLeft (self.obj X) (self.δ Y Z)
-- CategoryTheory.OplaxMonoidalFunctor.left_unitality
structure OplaxMonoidalFunctor extends C ⥤ D where
    η : obj (𝟙_ C) ⟶ 𝟙_ D
    δ : ∀ X Y : C, obj (X ⊗ Y) ⟶ obj X ⊗ obj Y
  δ_natural_left :
    ∀ {X Y : C} (f : X ⟶ Y) (X' : C),
      δ X X' ≫ map f ▷ obj X' = map (f ▷ X') ≫ δ Y X' := by
    aesop_cat
  δ_natural_right :
    ∀ {X Y : C} (X' : C) (f : X ⟶ Y) ,
      δ X' X ≫ obj X' ◁ map f = map (X' ◁ f) ≫ δ X' Y := by
    aesop_cat
    associativity :
    ∀ X Y Z : C,
      δ (X ⊗ Y) Z ≫ δ X Y ▷ obj Z ≫ (α_ (obj X) (obj Y) (obj Z)).hom =
        map (α_ X Y Z).hom ≫ δ X (Y ⊗ Z) ≫ obj X ◁ δ Y Z := by
    aesop_cat
  -- unitality
  left_unitality : ∀ X : C, (λ_ (obj X)).inv = map (λ_ X).inv ≫ δ (𝟙_ C) X ≫ η ▷ obj X := by
    aesop_cat
  right_unitality : ∀ X : C, (ρ_ (obj X)).inv = map (ρ_ X).inv ≫ δ X (𝟙_ C) ≫ obj X ◁ η := by
    aesop_cat
Arguments: {C : Type u₁} [CategoryTheory.Category.{v₁, u₁} C] [CategoryTheory.MonoidalCategory C] {D : Type u₂} [CategoryTheory.Category.{v₂, u₂} D] [CategoryTheory.MonoidalCategory D] (self : CategoryTheory.OplaxMonoidalFunctor C D) (X : C)
Goal: (CategoryTheory.MonoidalCategory.leftUnitor (self.obj X)).inv =
  self.map (CategoryTheory.MonoidalCategory.leftUnitor X).inv ≫
    self.δ (𝟙_ C) X ≫ CategoryTheory.MonoidalCategory.whiskerRight self.η (self.obj X)