l3lab/ntp-mathlib huggingface dataset:
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗
            g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗
            g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.355981
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.355981 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.id_comp g, tensor_comp]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.356338
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.356338 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.id_comp g, tensor_comp]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.356664
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.356664 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.id_comp g, tensor_comp]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.357014
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.357014 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.id_comp g, tensor_comp]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.357400
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.357400 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.id_comp g, tensor_comp]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ) ≫
        (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
rw [← Category.assoc]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
symm
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
iterate 2
    trans
    rw [← Category.assoc]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.358052
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.358052 =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.assoc]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ)) ≫
      ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
trans
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    trans
    

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ)) ≫
      ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ?m.358315
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.358315 =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙_ C ⊗ ᘁZ ⟶ ᘁX

Next tactic:
rw [← Category.assoc]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    trans
    rw [← Category.assoc]
  

Proof state:
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (((η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ)) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom =
    ((η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
        (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
            ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
              (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
                ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
          𝟙 ᘁZ)) ≫
      (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

Next tactic:
apply eq_whisker
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    trans
    rw [← Category.assoc]
  apply eq_whisker
  

Proof state:
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ)) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) =
    (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
          ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
            (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
        𝟙 ᘁZ)

Next tactic:
repeat'
    -- Porting note: why do we need to fill in the implicit `C` here, and below?
    rw [← @comp_tensor_id C]
/-- The composition of left adjoint mates is the adjoint mate of the composition. -/
@[reassoc]
theorem comp_leftAdjointMate {X Y Z : C} [HasLeftDual X] [HasLeftDual Y] [HasLeftDual Z] {f : X ⟶ Y}
    {g : Y ⟶ Z} : (ᘁf ≫ g) = (ᘁg) ≫ ᘁf := by
  rw [leftAdjointMate_comp]
  simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
    Category.assoc]
  symm
  iterate 5
    trans
    rw [← Category.id_comp g, tensor_comp]
  rw [← Category.assoc]
  symm
  iterate 2
    trans
    rw [← Category.assoc]
  apply eq_whisker
  repeat'
    -- Porting note: why do we need to fill in the implicit `C` here, and below?
    

Proof state:
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ)) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) =
    (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫
      (((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
          ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
            (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
        𝟙 ᘁZ)

Next tactic:
rw [← @comp_tensor_id C]