Theorem: CategoryTheory.comp_leftAdjointMate
File: Mathlib/CategoryTheory/Monoidal/Rigid/Basic.lean

tactic: rw [leftAdjointMate_comp]
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (ᘁf ≫ g) = (ᘁg) ≫ ᘁf

tactic: simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id,
  Category.assoc]
state_before: C : Type u₁
inst✝⁴ : Category C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (ᘁf ≫ g) =
    (λ_ ᘁZ).inv ≫ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫ (((ᘁf) ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

tactic: symm
state_before: C : Type u₁
inst✝⁴ : Category 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 ≫ (η_ (ᘁ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

tactic: iterate 5
  trans
  rw [← Category.id_comp g, tensor_comp]
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: rw [← Category.assoc]
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: symm
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: iterate 2
  trans
  rw [← Category.assoc]
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: apply eq_whisker
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: repeat'
  rw [← @comp_tensor_id C]
state_before: case w
C : Type u₁
inst✝⁴ : Category 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)

tactic: congr 1
state_before: case w
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ =
    η_ (ᘁY) Y ≫
        ((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
          ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
            (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
      𝟙 ᘁZ

tactic: rw [← tensor_id_comp_id_tensor g (ρ_ (ᘁX)).hom, leftUnitor_inv_tensor_id, Category.assoc,
  Category.assoc, leftUnitor_inv_naturality_assoc, ← associator_inv_naturality_assoc, tensor_id,
  id_tensor_comp_tensor_id_assoc, ← associator_inv_naturality_assoc]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ g) =
    η_ (ᘁY) Y ≫
      ((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
        ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
          (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g)

tactic: slice_rhs 2 3 =>
  rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ (ᘁY) Y), tensor_comp]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ η_ (ᘁY) Y) ≫
        ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY ⊗ 𝟙 Y) ≫
          (α_ (ᘁX ⊗ Y) (ᘁY) Y).inv ≫
            ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: rw [← tensor_id_comp_id_tensor (η_ (ᘁY) Y), ← tensor_id]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      ((((((η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫ ((𝟙 ᘁX ⊗ f) ⊗ η_ (ᘁY) Y)) ≫ (α_ (ᘁX ⊗ Y) (ᘁY) Y).inv) ≫
              ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y)) ≫
            ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y)) ≫
          ((ρ_ ᘁX).hom ⊗ 𝟙 Y)) ≫
        (𝟙 ᘁX ⊗ g)

tactic: repeat' rw [@Category.assoc C]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      ((((((η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 (𝟙_ C)) ≫ ((𝟙 ᘁX ⊗ 𝟙 Y) ⊗ η_ (ᘁY) Y)) ≫ (α_ (ᘁX ⊗ Y) (ᘁY) Y).inv) ≫
              ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y)) ≫
            ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y)) ≫
          ((ρ_ ᘁX).hom ⊗ 𝟙 Y)) ≫
        (𝟙 ᘁX ⊗ g)

tactic: rw [pentagon_inv_hom_assoc, ← associator_inv_naturality_assoc, associator_naturality_assoc]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 (𝟙_ C)) ≫
          ((𝟙 ᘁX ⊗ 𝟙 Y) ⊗ η_ (ᘁY) Y) ≫
            (α_ (ᘁX ⊗ Y) (ᘁY) Y).inv ≫
              ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: slice_rhs 5 7 => rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation, id_tensor_comp]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 (𝟙_ C)) ≫
          (α_ (ᘁX) Y (𝟙_ C)).hom ≫
            (𝟙 ᘁX ⊗ 𝟙 Y ⊗ η_ (ᘁY) Y) ≫
              (𝟙 ᘁX ⊗ (α_ Y (ᘁY) Y).inv) ≫
                (𝟙 ᘁX ⊗ ε_ (ᘁY) Y ⊗ 𝟙 Y) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: rw [associator_naturality_assoc]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 (𝟙_ C)) ≫
          (α_ (ᘁX) Y (𝟙_ C)).hom ≫
            ((((𝟙 ᘁX ⊗ (ρ_ Y).hom) ≫ (𝟙 ᘁX ⊗ (λ_ Y).inv)) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y)) ≫ (𝟙 ᘁX ⊗ g)

tactic: slice_rhs 4 5 => rw [← tensor_comp, rightUnitor_naturality, tensor_comp]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        (α_ (ᘁX) X (𝟙_ C)).hom ≫
          (𝟙 ᘁX ⊗ f ⊗ 𝟙 (𝟙_ C)) ≫
            ((((𝟙 ᘁX ⊗ (ρ_ Y).hom) ≫ (𝟙 ᘁX ⊗ (λ_ Y).inv)) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y)) ≫ (𝟙 ᘁX ⊗ g)

tactic: repeat' rw [@Category.assoc C]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        (α_ (ᘁX) X (𝟙_ C)).hom ≫
          (((((𝟙 ᘁX ⊗ (ρ_ X).hom) ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ (λ_ Y).inv)) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv) ≫
              ((ρ_ ᘁX).hom ⊗ 𝟙 Y)) ≫
            (𝟙 ᘁX ⊗ g)

tactic: rw [triangle_assoc_comp_left_inv_assoc, ← rightUnitor_tensor_assoc,
  rightUnitor_naturality_assoc, ← unitors_equal, ← Category.assoc, ← Category.assoc]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        (α_ (ᘁX) X (𝟙_ C)).hom ≫
          (𝟙 ᘁX ⊗ (ρ_ X).hom) ≫
            (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ (λ_ Y).inv) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: simp
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ g) =
    ((λ_ tensorUnit').inv ≫ (λ_ (𝟙_ C)).hom) ≫
      η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f) ≫ ((ρ_ ᘁX).inv ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: trans
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: rw [← Category.id_comp g, tensor_comp]
state_before: C : Type u₁
inst✝⁴ : Category 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.303191

C : Type u₁
inst✝⁴ : Category C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.303191 =
    (η_ (ᘁX) X ⊗ 𝟙 ᘁZ) ≫
      ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁZ) ≫ ((𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom

C : Type u₁
inst✝⁴ : Category C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX

tactic: trans
state_before: C : Type u₁
inst✝⁴ : Category 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

tactic: rw [← Category.assoc]
state_before: C : Type u₁
inst✝⁴ : Category 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.303991

C : Type u₁
inst✝⁴ : Category C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.303991 =
    ((η_ (ᘁ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 C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasLeftDual X
inst✝¹ : HasLeftDual Y
inst✝ : HasLeftDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX

tactic: rw [← @comp_tensor_id C]
state_before: case w
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ g) ⊗ 𝟙 ᘁZ =
    η_ (ᘁY) Y ≫
        ((λ_ ᘁY).inv ⊗ 𝟙 Y) ≫
          ((η_ (ᘁX) X ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫
            (((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ⊗ 𝟙 Y) ≫ ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ g) ⊗
      𝟙 ᘁZ

tactic: rw [@Category.assoc C]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 (𝟙_ C)) ≫
          ((𝟙 ᘁX ⊗ 𝟙 Y) ⊗ η_ (ᘁY) Y) ≫
            (α_ (ᘁX ⊗ Y) (ᘁY) Y).inv ≫
              ((α_ (ᘁX) Y ᘁY).hom ⊗ 𝟙 Y) ≫ ((𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)

tactic: rw [@Category.assoc C]
state_before: case w.e_a
C : Type u₁
inst✝⁴ : Category 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 ≫ (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ g) =
    (λ_ tensorUnit').inv ≫
      (η_ (ᘁX) X ⊗ 𝟙 (𝟙_ C)) ≫
        (α_ (ᘁX) X (𝟙_ C)).hom ≫
          (𝟙 ᘁX ⊗ (ρ_ X).hom) ≫
            (𝟙 ᘁX ⊗ f) ≫ (𝟙 ᘁX ⊗ (λ_ Y).inv) ≫ (α_ (ᘁX) (𝟙_ C) Y).inv ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)