[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
⊢ (𝟙 (𝟙_ C) ⊗ (ρ_ (𝟙_ C)).inv) ≫ (α_ (𝟙_ C) (𝟙_ C) (𝟙_ C)).inv ≫ ((ρ_ (𝟙_ C)).hom ⊗ 𝟙 (𝟙_ C)) =
    (ρ_ (𝟙_ C)).hom ≫ (λ_ (𝟙_ C)).inv
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
⊢ ((ρ_ (𝟙_ C)).inv ⊗ 𝟙 (𝟙_ C)) ≫ (α_ (𝟙_ C) (𝟙_ C) (𝟙_ C)).hom ≫ (𝟙 (𝟙_ C) ⊗ (ρ_ (𝟙_ C)).hom) =
    (λ_ (𝟙_ C)).hom ≫ (ρ_ (𝟙_ C)).inv
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X : C
inst✝ : HasRightDual X
⊢ 𝟙 Xᘁ = 𝟙 Xᘁ
[PROOFSTEP]
simp only [rightAdjointMate, MonoidalCategory.tensor_id, Category.id_comp, coevaluation_evaluation_assoc,
  Category.comp_id, Iso.inv_hom_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X : C
inst✝ : HasLeftDual X
⊢ (ᘁ𝟙 X) = 𝟙 ᘁX
[PROOFSTEP]
simp only [leftAdjointMate, MonoidalCategory.tensor_id, Category.id_comp, evaluation_coevaluation_assoc,
  Category.comp_id, Iso.inv_hom_id]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y Z : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
g : Xᘁ ⟶ Z
⊢ fᘁ ≫ g = (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ g) ≫ (α_ Yᘁ Y Z).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Z) ≫ (λ_ Z).hom
[PROOFSTEP]
dsimp only [rightAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y Z : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
g : Xᘁ ⟶ Z
⊢ ((ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫ g =
    (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ g) ≫ (α_ Yᘁ Y Z).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Z) ≫ (λ_ Z).hom
[PROOFSTEP]
rw [Category.assoc, Category.assoc, associator_inv_naturality_assoc, associator_inv_naturality_assoc, ←
  tensor_id_comp_id_tensor g, Category.assoc, Category.assoc, Category.assoc, Category.assoc,
  id_tensor_comp_tensor_id_assoc, ← leftUnitor_naturality, tensor_id_comp_id_tensor_assoc]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y Z : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
g : ᘁX ⟶ Z
⊢ (ᘁf) ≫ g = (λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((g ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ Z Y ᘁY).hom ≫ (𝟙 Z ⊗ ε_ (ᘁY) Y) ≫ (ρ_ Z).hom
[PROOFSTEP]
dsimp only [leftAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y Z : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
g : ᘁX ⟶ Z
⊢ ((λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom) ≫ g =
    (λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((g ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ Z Y ᘁY).hom ≫ (𝟙 Z ⊗ ε_ (ᘁY) Y) ≫ (ρ_ Z).hom
[PROOFSTEP]
rw [Category.assoc, Category.assoc, associator_naturality_assoc, associator_naturality_assoc, ←
  id_tensor_comp_tensor_id _ g, Category.assoc, Category.assoc, Category.assoc, Category.assoc,
  tensor_id_comp_id_tensor_assoc, ← rightUnitor_naturality, id_tensor_comp_tensor_id_assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (f ≫ g)ᘁ = gᘁ ≫ fᘁ
[PROOFSTEP]
rw [rightAdjointMate_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (f ≫ g)ᘁ = (ρ_ Zᘁ).inv ≫ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ fᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
simp only [rightAdjointMate, comp_tensor_id, Iso.cancel_iso_inv_left, id_tensor_comp, Category.assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          g ⊗ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
symm
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          g ⊗ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
iterate 5
  trans
  rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          g ⊗ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          g ⊗ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.275599
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.275599 =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (g ⊗ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (g ⊗ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.275921
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.275921 =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (g ⊗ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (g ⊗ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.276208
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.276208 =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.276519
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.276519 =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (g ⊗ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (g ⊗ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.276866
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.276866 =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom)) ≫
        (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
symm
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
iterate 2
  trans
  rw [← Category.assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.277444
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.277444 =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
trans
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ?m.277668
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ?m.277668 =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ Zᘁ ⊗ tensorUnit' ⟶ Xᘁ
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (((𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ)) ≫ (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    ((𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
        (𝟙 Zᘁ ⊗
          (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
              (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))) ≫
      (α_ Zᘁ Z Xᘁ).inv ≫ (ε_ Z Zᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
apply eq_whisker
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) =
    (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))
[PROOFSTEP]
repeat'
  -- Porting note: why do we need to fill in the implicit `C` here, and below?rw [← @id_tensor_comp C]
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ ((𝟙 Zᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Zᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) =
    (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))
[PROOFSTEP]
rw [← @id_tensor_comp C]
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (𝟙 Zᘁ ⊗ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (𝟙 Zᘁ ⊗ g ⊗ 𝟙 Xᘁ) =
    (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))
[PROOFSTEP]
rw [← @id_tensor_comp C]
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙 Zᘁ ⊗ (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (g ⊗ 𝟙 Xᘁ) =
    (𝟙 Zᘁ ⊗ η_ Y Yᘁ) ≫
      (𝟙 Zᘁ ⊗
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom))
[PROOFSTEP]
rw [← @id_tensor_comp C]
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙 Zᘁ ⊗ (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (g ⊗ 𝟙 Xᘁ) =
    𝟙 Zᘁ ⊗
      η_ Y Yᘁ ≫
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom)
[PROOFSTEP]
rw [← @id_tensor_comp C]
[GOAL]
case w
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ 𝟙 Zᘁ ⊗ (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (g ⊗ 𝟙 Xᘁ) =
    𝟙 Zᘁ ⊗
      η_ Y Yᘁ ≫
        (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
            (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom)
[PROOFSTEP]
congr 1
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (g ⊗ 𝟙 Xᘁ) =
    η_ Y Yᘁ ≫
      (𝟙 Y ⊗ (ρ_ Yᘁ).inv) ≫
        (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫
          (𝟙 Y ⊗ 𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (g ⊗ (λ_ Xᘁ).hom)
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id (λ_ (Xᘁ)).hom g, id_tensor_rightUnitor_inv, Category.assoc, Category.assoc,
  rightUnitor_inv_naturality_assoc, ← associator_naturality_assoc, tensor_id, tensor_id_comp_id_tensor_assoc, ←
  associator_naturality_assoc]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (η_ Y Yᘁ ⊗ η_ X Xᘁ) ≫
        ((𝟙 Y ⊗ 𝟙 Yᘁ) ⊗ f ⊗ 𝟙 Xᘁ) ≫
          (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
slice_rhs 2 3 => rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ Y (Yᘁ)), tensor_comp]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (η_ Y Yᘁ ⊗ η_ X Xᘁ) ≫ ((𝟙 Y ⊗ 𝟙 Yᘁ) ⊗ f ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ Y (Yᘁ)), tensor_comp]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (η_ Y Yᘁ ⊗ η_ X Xᘁ) ≫ ((𝟙 Y ⊗ 𝟙 Yᘁ) ⊗ f ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ Y (Yᘁ)), tensor_comp]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (η_ Y Yᘁ ⊗ η_ X Xᘁ) ≫ ((𝟙 Y ⊗ 𝟙 Yᘁ) ⊗ f ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ Y (Yᘁ)), tensor_comp]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      ((((((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (η_ Y Yᘁ ⊗ f ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv)) ≫
            (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ)) ≫
          (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫
        (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id _ (η_ Y (Yᘁ)), ← tensor_id]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      ((((((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫
              (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv)) ≫
            (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ)) ≫
          (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫
        (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
repeat' rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      ((((((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫
              (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv)) ≫
            (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ)) ≫
          (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫
        (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (((((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫
            (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv)) ≫
          (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ)) ≫
        (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      ((((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫
          (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv)) ≫
        (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫ (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom) ≫
        (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      ((𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫ (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫
        (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        ((𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫ (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ)) ≫
          (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom ≫ (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫
          (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ) ≫
            (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom ≫
              (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫
          (η_ Y Yᘁ ⊗ 𝟙 Y ⊗ 𝟙 Xᘁ) ≫
            (α_ Y Yᘁ (Y ⊗ Xᘁ)).hom ≫
              (𝟙 Y ⊗ (α_ Yᘁ Y Xᘁ).inv) ≫ (𝟙 Y ⊗ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [pentagon_hom_inv_assoc, ← associator_naturality_assoc, associator_inv_naturality_assoc]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫
          (α_ (𝟙_ C) Y Xᘁ).inv ≫
            ((η_ Y Yᘁ ⊗ 𝟙 Y) ⊗ 𝟙 Xᘁ) ≫
              ((α_ Y Yᘁ Y).hom ⊗ 𝟙 Xᘁ) ≫
                ((𝟙 Y ⊗ ε_ Y Yᘁ) ⊗ 𝟙 Xᘁ) ≫ (α_ Y (𝟙_ C) Xᘁ).hom ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
slice_rhs 5 7 => rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation, comp_tensor_id]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((η_ Y Yᘁ ⊗ 𝟙 Y) ⊗ 𝟙 Xᘁ) ≫ ((α_ Y Yᘁ Y).hom ⊗ 𝟙 Xᘁ) ≫ ((𝟙 Y ⊗ ε_ Y Yᘁ) ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) Y Xᘁ).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation, comp_tensor_id]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((η_ Y Yᘁ ⊗ 𝟙 Y) ⊗ 𝟙 Xᘁ) ≫ ((α_ Y Yᘁ Y).hom ⊗ 𝟙 Xᘁ) ≫ ((𝟙 Y ⊗ ε_ Y Yᘁ) ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) Y Xᘁ).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation, comp_tensor_id]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((η_ Y Yᘁ ⊗ 𝟙 Y) ⊗ 𝟙 Xᘁ) ≫ ((α_ Y Yᘁ Y).hom ⊗ 𝟙 Xᘁ) ≫ ((𝟙 Y ⊗ ε_ Y Yᘁ) ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) Y Xᘁ).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation, comp_tensor_id]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (𝟙 (𝟙_ C) ⊗ f ⊗ 𝟙 Xᘁ) ≫
          (α_ (𝟙_ C) Y Xᘁ).inv ≫
            (((((λ_ Y).hom ⊗ 𝟙 Xᘁ) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫ (α_ Y (𝟙_ C) Xᘁ).hom) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [associator_inv_naturality_assoc]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((𝟙 (𝟙_ C) ⊗ f) ⊗ 𝟙 Xᘁ) ≫
            (((((λ_ Y).hom ⊗ 𝟙 Xᘁ) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫ (α_ Y (𝟙_ C) Xᘁ).hom) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
slice_rhs 4 5 => rw [← tensor_comp, leftUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((𝟙 (𝟙_ C) ⊗ f) ⊗ 𝟙 Xᘁ) ≫ ((λ_ Y).hom ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ Y).inv ⊗ 𝟙 Xᘁ
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) X Xᘁ).inv
[PROOFSTEP]
rw [← tensor_comp, leftUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((𝟙 (𝟙_ C) ⊗ f) ⊗ 𝟙 Xᘁ) ≫ ((λ_ Y).hom ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ Y).inv ⊗ 𝟙 Xᘁ
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) X Xᘁ).inv
[PROOFSTEP]
rw [← tensor_comp, leftUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| ((𝟙 (𝟙_ C) ⊗ f) ⊗ 𝟙 Xᘁ) ≫ ((λ_ Y).hom ⊗ 𝟙 Xᘁ)
case a.a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ Y).inv ⊗ 𝟙 Xᘁ
case a.a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ Y (𝟙_ C) Xᘁ).hom
case a.a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 Y ⊗ (λ_ Xᘁ).hom
case a.a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| g ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (ρ_ tensorUnit').inv
case a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| 𝟙 (𝟙_ C) ⊗ η_ X Xᘁ
case a.a.a
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
| (α_ (𝟙_ C) X Xᘁ).inv
[PROOFSTEP]
rw [← tensor_comp, leftUnitor_naturality, tensor_comp]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((((((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫ (f ⊗ 𝟙 Xᘁ)) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫ (α_ Y (𝟙_ C) Xᘁ).hom) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫
            (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
repeat' rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((((((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫ (f ⊗ 𝟙 Xᘁ)) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫ (α_ Y (𝟙_ C) Xᘁ).hom) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom)) ≫
            (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          (((((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫ (f ⊗ 𝟙 Xᘁ)) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫ (α_ Y (𝟙_ C) Xᘁ).hom) ≫
            (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫ (f ⊗ 𝟙 Xᘁ)) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ)) ≫
            (α_ Y (𝟙_ C) Xᘁ).hom ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          (((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫ (f ⊗ 𝟙 Xᘁ)) ≫
            ((ρ_ Y).inv ⊗ 𝟙 Xᘁ) ≫ (α_ Y (𝟙_ C) Xᘁ).hom ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫
            (f ⊗ 𝟙 Xᘁ) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ) ≫ (α_ Y (𝟙_ C) Xᘁ).hom ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (g ⊗ 𝟙 Xᘁ) =
    (ρ_ tensorUnit').inv ≫
      (𝟙 (𝟙_ C) ⊗ η_ X Xᘁ) ≫
        (α_ (𝟙_ C) X Xᘁ).inv ≫
          ((λ_ X).hom ⊗ 𝟙 Xᘁ) ≫
            (f ⊗ 𝟙 Xᘁ) ≫ ((ρ_ Y).inv ⊗ 𝟙 Xᘁ) ≫ (α_ Y (𝟙_ C) Xᘁ).hom ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
rw [triangle_assoc_comp_right_inv_assoc, ← leftUnitor_tensor_assoc, leftUnitor_naturality_assoc, unitors_equal, ←
  Category.assoc, ← Category.assoc]
[GOAL]
case w.e_g
C : Type u₁
inst✝⁴ : Category.{v₁, u₁} C
inst✝³ : MonoidalCategory C
X Y Z : C
inst✝² : HasRightDual X
inst✝¹ : HasRightDual Y
inst✝ : HasRightDual Z
f : X ⟶ Y
g : Y ⟶ Z
⊢ (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (g ⊗ 𝟙 Xᘁ) =
    ((ρ_ tensorUnit').inv ≫ (ρ_ (𝟙_ C)).hom) ≫
      η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).inv) ≫ (𝟙 Y ⊗ (λ_ Xᘁ).hom) ≫ (g ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
simp
[GOAL]
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
⊢ (ᘁf ≫ g) = (ᘁg) ≫ ᘁf
[PROOFSTEP]
rw [leftAdjointMate_comp]
[GOAL]
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
⊢ (ᘁf ≫ g) =
    (λ_ ᘁZ).inv ≫ (η_ (ᘁY) Y ⊗ 𝟙 ᘁZ) ≫ (((ᘁf) ⊗ g) ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁX) Z ᘁZ).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁZ) Z) ≫ (ρ_ ᘁX).hom
[PROOFSTEP]
simp only [leftAdjointMate, id_tensor_comp, Iso.cancel_iso_inv_left, comp_tensor_id, Category.assoc]
[GOAL]
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 ≫ (η_ (ᘁ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
[PROOFSTEP]
symm
[GOAL]
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
[PROOFSTEP]
iterate 5
  trans
  rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.320227
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.320227 =
    (η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.320549
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.320549 =
    (η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.320836
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.320836 =
    (η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.321147
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.321147 =
    (η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.321494
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.321494 =
    (η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.id_comp g, tensor_comp]
[GOAL]
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
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
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
[PROOFSTEP]
symm
[GOAL]
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
[PROOFSTEP]
iterate 2
  trans
  rw [← Category.assoc]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.322070
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.322070 =
    ((η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
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
[PROOFSTEP]
trans
[GOAL]
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.322294
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.322294 =
    ((η_ (ᘁ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
⊢ tensorUnit' ⊗ ᘁZ ⟶ ᘁX
[PROOFSTEP]
rw [← Category.assoc]
[GOAL]
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
[PROOFSTEP]
apply eq_whisker
[GOAL]
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)
[PROOFSTEP]
repeat'
  -- Porting note: why do we need to fill in the implicit `C` here, and below?rw [← @comp_tensor_id C]
[GOAL]
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)
[PROOFSTEP]
rw [← @comp_tensor_id C]
[GOAL]
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [← @comp_tensor_id C]
[GOAL]
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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [← @comp_tensor_id C]
[GOAL]
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 ≫ (𝟙 ᘁ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
[PROOFSTEP]
rw [← @comp_tensor_id C]
[GOAL]
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 ≫ (𝟙 ᘁ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
[PROOFSTEP]
congr 1
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
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]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
slice_rhs 2 3 => rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ (ᘁY) Y), tensor_comp]
[GOAL]
case a.a.a.a.a.a
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 ⊗ η_ (ᘁY) Y) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY ⊗ 𝟙 Y)
case a.a.a.a.a.a
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 ⊗ Y) (ᘁY) Y).inv
case a.a.a.a.a
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) Y ᘁY).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y
case a.a.a
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).hom ⊗ 𝟙 Y
case a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ (ᘁY) Y), tensor_comp]
[GOAL]
case a.a.a.a.a.a
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 ⊗ η_ (ᘁY) Y) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY ⊗ 𝟙 Y)
case a.a.a.a.a.a
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 ⊗ Y) (ᘁY) Y).inv
case a.a.a.a.a
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) Y ᘁY).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y
case a.a.a
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).hom ⊗ 𝟙 Y
case a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ (ᘁY) Y), tensor_comp]
[GOAL]
case a.a.a.a.a.a
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 ⊗ η_ (ᘁY) Y) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY ⊗ 𝟙 Y)
case a.a.a.a.a.a
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 ⊗ Y) (ᘁY) Y).inv
case a.a.a.a.a
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) Y ᘁY).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ ε_ (ᘁY) Y) ⊗ 𝟙 Y
case a.a.a
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).hom ⊗ 𝟙 Y
case a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
[PROOFSTEP]
rw [← tensor_comp, tensor_id, Category.comp_id, ← Category.id_comp (η_ (ᘁY) Y), tensor_comp]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor (η_ (ᘁY) Y), ← tensor_id]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
repeat' rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [pentagon_inv_hom_assoc, ← associator_inv_naturality_assoc, associator_naturality_assoc]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
slice_rhs 5 7 => rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation, id_tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ 𝟙 Y ⊗ η_ (ᘁY) Y) ≫ (𝟙 ᘁX ⊗ (α_ Y (ᘁY) Y).inv) ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y ⊗ 𝟙 Y)
case a.a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 ⊗ f) ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
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) Y (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation, id_tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ 𝟙 Y ⊗ η_ (ᘁY) Y) ≫ (𝟙 ᘁX ⊗ (α_ Y (ᘁY) Y).inv) ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y ⊗ 𝟙 Y)
case a.a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 ⊗ f) ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
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) Y (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation, id_tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ 𝟙 Y ⊗ η_ (ᘁY) Y) ≫ (𝟙 ᘁX ⊗ (α_ Y (ᘁY) Y).inv) ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y ⊗ 𝟙 Y)
case a.a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 ⊗ f) ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
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) Y (𝟙_ C)).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation, id_tensor_comp]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [associator_naturality_assoc]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
slice_rhs 4 5 => rw [← tensor_comp, rightUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ f ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 ᘁX ⊗ (ρ_ Y).hom)
case a.a.a.a.a.a.a
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 ⊗ (λ_ Y).inv
case a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 (𝟙_ C)).hom
[PROOFSTEP]
rw [← tensor_comp, rightUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ f ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 ᘁX ⊗ (ρ_ Y).hom)
case a.a.a.a.a.a.a
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 ⊗ (λ_ Y).inv
case a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 (𝟙_ C)).hom
[PROOFSTEP]
rw [← tensor_comp, rightUnitor_naturality, tensor_comp]
[GOAL]
case a.a.a.a.a.a.a
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 ⊗ f ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 ᘁX ⊗ (ρ_ Y).hom)
case a.a.a.a.a.a.a
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 ⊗ (λ_ Y).inv
case a.a.a.a.a.a
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) (𝟙_ C) Y).inv
case a.a.a.a.a
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).hom ⊗ 𝟙 Y
case a.a.a.a
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 ⊗ g
case a
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
| (λ_ tensorUnit').inv
case a.a
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 ⊗ 𝟙 (𝟙_ C)
case a.a.a
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 (𝟙_ C)).hom
[PROOFSTEP]
rw [← tensor_comp, rightUnitor_naturality, tensor_comp]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
repeat' rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [@Category.assoc C]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁ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)
[PROOFSTEP]
rw [triangle_assoc_comp_left_inv_assoc, ← rightUnitor_tensor_assoc, rightUnitor_naturality_assoc, ← unitors_equal, ←
  Category.assoc, ← Category.assoc]
[GOAL]
case w.e_f
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 ≫ (𝟙 ᘁX ⊗ f)) ≫ (𝟙 ᘁX ⊗ g) =
    ((λ_ tensorUnit').inv ≫ (λ_ (𝟙_ C)).hom) ≫
      η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f) ≫ ((ρ_ ᘁX).inv ⊗ 𝟙 Y) ≫ ((ρ_ ᘁX).hom ⊗ 𝟙 Y) ≫ (𝟙 ᘁX ⊗ g)
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (fun f => (𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom)
      ((fun f => (λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ f)) f) =
    f
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (𝟙 Y' ⊗ (λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ f)) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
simp only [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ ((𝟙 Y' ⊗ (λ_ X).inv) ≫ (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (𝟙 Y' ⊗ 𝟙 Y ⊗ f)) ≫
      (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 4 5 => rw [associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫
        (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (((α_ Y' Y (Y' ⊗ X)).inv ≫ ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f)) ≫ (ε_ Y Y' ⊗ 𝟙 Z)) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 5 6 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (α_ Y' Y (Y' ⊗ X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (α_ Y' Y (Y' ⊗ X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (α_ Y Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (α_ Y' Y (Y' ⊗ X)).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫
        (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ ((ε_ Y Y' ⊗ 𝟙 (Y' ⊗ X)) ≫ (𝟙 (𝟙_ C) ⊗ f)) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 2 5 => simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Y' ⊗ X))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Y' ⊗ X))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y' ⊗ 𝟙 X) ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Y' ⊗ X))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
| 𝟙 Y' ⊗ (λ_ X).inv
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      ((((α_ Y' tensorUnit' X).inv ≫ ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ (α_ Y' (Y ⊗ Y') X).hom) ≫
            (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫
              (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X) ≫ (α_ (𝟙_ C) Y' X).hom) ≫
          (𝟙 (𝟙_ C) ⊗ f)) ≫
        (λ_ Z).hom =
    f
[PROOFSTEP]
have c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ _ _ _).inv ⊗ 𝟙 _
[GOAL]
case c
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
⊢ (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      ((((α_ Y' tensorUnit' X).inv ≫ ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ (α_ Y' (Y ⊗ Y') X).hom) ≫
            (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫
              (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X) ≫ (α_ (𝟙_ C) Y' X).hom) ≫
          (𝟙 (𝟙_ C) ⊗ f)) ≫
        (λ_ Z).hom =
    f
[PROOFSTEP]
pure_coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      ((((α_ Y' tensorUnit' X).inv ≫ ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ (α_ Y' (Y ⊗ Y') X).hom) ≫
            (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫
              (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X) ≫ (α_ (𝟙_ C) Y' X).hom) ≫
          (𝟙 (𝟙_ C) ⊗ f)) ≫
        (λ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 4 7 => rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X
[PROOFSTEP]
rw [c]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      (α_ Y' tensorUnit' X).inv ≫
        ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫
          (((((α_ Y' Y Y').inv ⊗ 𝟙 X) ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X)) ≫ (α_ (𝟙_ C) Y' X).hom) ≫ (𝟙 (𝟙_ C) ⊗ f)) ≫
            (λ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 3 5 => rw [← comp_tensor_id, ← comp_tensor_id, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ ((α_ Y' Y Y').inv ⊗ 𝟙 X) ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ ((α_ Y' Y Y').inv ⊗ 𝟙 X) ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| ((𝟙 Y' ⊗ η_ Y Y') ⊗ 𝟙 X) ≫ ((α_ Y' Y Y').inv ⊗ 𝟙 X) ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ⊗ 𝟙 X)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ (𝟙_ C) Y' X).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 (𝟙_ C) ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| 𝟙 Y' ⊗ (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
| (α_ Y' tensorUnit' X).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, coevaluation_evaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      (α_ Y' tensorUnit' X).inv ≫
        ((((ρ_ Y').hom ≫ (λ_ Y').inv ⊗ 𝟙 X) ≫ (α_ (𝟙_ C) Y' X).hom) ≫ (𝟙 (𝟙_ C) ⊗ f)) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
simp only [leftUnitor_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
c :
  (α_ Y' (Y ⊗ Y') X).hom ≫ (𝟙 Y' ⊗ (α_ Y Y' X).hom) ≫ (α_ Y' Y (Y' ⊗ X)).inv ≫ (α_ (Y' ⊗ Y) Y' X).inv =
    (α_ Y' Y Y').inv ⊗ 𝟙 X
⊢ (𝟙 Y' ⊗ (λ_ X).inv) ≫
      (α_ Y' tensorUnit' X).inv ≫
        ((((ρ_ Y').hom ≫ (λ_ Y').inv ⊗ 𝟙 X) ≫ (α_ (𝟙_ C) Y' X).hom) ≫ (λ_ (Y' ⊗ X)).hom ≫ f ≫ (λ_ Z).inv) ≫ (λ_ Z).hom =
    f
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (fun f => (λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ f))
      ((fun f => (𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom) f) =
    f
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ (𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom) =
    f
[PROOFSTEP]
simp only [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (λ_ X).inv ≫
      (η_ Y Y' ⊗ 𝟙 X) ≫
        (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ 𝟙 Y' ⊗ f) ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z) ≫ (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
slice_lhs 3 4 => rw [← associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ 𝟙 Y' ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| η_ Y Y' ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ 𝟙 Y' ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| η_ Y Y' ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ 𝟙 Y' ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| η_ Y Y' ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (λ_ X).inv ≫
      (η_ Y Y' ⊗ 𝟙 X) ≫
        (((((𝟙 Y ⊗ 𝟙 Y') ⊗ f) ≫ (α_ Y Y' (Y ⊗ Z)).hom) ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv)) ≫ (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z)) ≫
          (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 X) ≫ ((𝟙 Y ⊗ 𝟙 Y') ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' (Y ⊗ Z)).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 X) ≫ ((𝟙 Y ⊗ 𝟙 Y') ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' (Y ⊗ Z)).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 X) ≫ ((𝟙 Y ⊗ 𝟙 Y') ⊗ f)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (α_ Y Y' (Y ⊗ Z)).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (λ_ X).inv ≫
      (((((𝟙 tensorUnit' ⊗ f) ≫ (η_ Y Y' ⊗ 𝟙 (Y ⊗ Z))) ≫ (α_ Y Y' (Y ⊗ Z)).hom) ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv)) ≫
          (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z)) ≫
        (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
slice_lhs 3 6 => simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 (Y ⊗ Z)) ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 (Y ⊗ Z)) ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (η_ Y Y' ⊗ 𝟙 (Y ⊗ Z)) ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (𝟙 Y ⊗ ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
simp only [← tensor_id, associator_inv_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (λ_ X).inv ≫
      (𝟙 tensorUnit' ⊗ f) ≫
        (((α_ tensorUnit' Y Z).inv ≫ ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ (α_ (Y ⊗ Y') Y Z).hom) ≫
            (α_ Y Y' (Y ⊗ Z)).hom ≫
              (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z) ≫ (α_ Y (𝟙_ C) Z).hom) ≫
          (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
have c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv = (α_ _ _ _).hom ⊗ 𝟙 Z
[GOAL]
case c
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
⊢ (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
⊢ (λ_ X).inv ≫
      (𝟙 tensorUnit' ⊗ f) ≫
        (((α_ tensorUnit' Y Z).inv ≫ ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ (α_ (Y ⊗ Y') Y Z).hom) ≫
            (α_ Y Y' (Y ⊗ Z)).hom ≫
              (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z) ≫ (α_ Y (𝟙_ C) Z).hom) ≫
          (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
pure_coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
⊢ (λ_ X).inv ≫
      (𝟙 tensorUnit' ⊗ f) ≫
        (((α_ tensorUnit' Y Z).inv ≫ ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ (α_ (Y ⊗ Y') Y Z).hom) ≫
            (α_ Y Y' (Y ⊗ Z)).hom ≫
              (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z) ≫ (α_ Y (𝟙_ C) Z).hom) ≫
          (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
slice_lhs 5 8 => rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z
[PROOFSTEP]
rw [c]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
⊢ (λ_ X).inv ≫
      (𝟙 tensorUnit' ⊗ f) ≫
        (α_ tensorUnit' Y Z).inv ≫
          ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫
            ((((α_ Y Y' Y).hom ⊗ 𝟙 Z) ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z)) ≫ (α_ Y (𝟙_ C) Z).hom) ≫ (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
slice_lhs 4 6 => rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ ((α_ Y Y' Y).hom ⊗ 𝟙 Z) ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ ((α_ Y Y' Y).hom ⊗ 𝟙 Z) ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| ((η_ Y Y' ⊗ 𝟙 Y) ⊗ 𝟙 Z) ≫ ((α_ Y Y' Y).hom ⊗ 𝟙 Z) ≫ ((𝟙 Y ⊗ ε_ Y Y') ⊗ 𝟙 Z)
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ Y (𝟙_ C) Z).hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 Y ⊗ (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (λ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| 𝟙 tensorUnit' ⊗ f
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
| (α_ tensorUnit' Y Z).inv
[PROOFSTEP]
rw [← comp_tensor_id, ← comp_tensor_id, evaluation_coevaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
⊢ (λ_ X).inv ≫
      (𝟙 tensorUnit' ⊗ f) ≫
        (α_ tensorUnit' Y Z).inv ≫ (((λ_ Y).hom ≫ (ρ_ Y).inv ⊗ 𝟙 Z) ≫ (α_ Y (𝟙_ C) Z).hom) ≫ (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
simp only [leftUnitor_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
c :
  (α_ (Y ⊗ Y') Y Z).hom ≫ (α_ Y Y' (Y ⊗ Z)).hom ≫ (𝟙 Y ⊗ (α_ Y' Y Z).inv) ≫ (α_ Y (Y' ⊗ Y) Z).inv =
    (α_ Y Y' Y).hom ⊗ 𝟙 Z
⊢ (λ_ X).inv ≫
      ((λ_ X).hom ≫ f ≫ (λ_ (Y ⊗ Z)).inv) ≫
        (α_ tensorUnit' Y Z).inv ≫ (((λ_ Y).hom ≫ (ρ_ Y).inv ⊗ 𝟙 Z) ≫ (α_ Y (𝟙_ C) Z).hom) ≫ (𝟙 Y ⊗ (λ_ Z).hom) =
    f
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ (fun f => (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
      ((fun f => (ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ⊗ 𝟙 Y')) f) =
    f
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ ((ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
simp only [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ (((ρ_ X).inv ⊗ 𝟙 Y) ≫ ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y)) ≫
      (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 4 5 => rw [associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫
        ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (((α_ (X ⊗ Y) Y' Y).hom ≫ (f ⊗ 𝟙 Y' ⊗ 𝟙 Y)) ≫ (𝟙 Z ⊗ ε_ Y Y')) ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 5 6 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ (X ⊗ Y) Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ (X ⊗ Y) Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ X Y Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (α_ (X ⊗ Y) Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫
        ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ ((𝟙 (X ⊗ Y) ⊗ ε_ Y Y') ≫ (f ⊗ 𝟙 (𝟙_ C))) ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 2 5 => simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (𝟙 (X ⊗ Y) ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (𝟙 (X ⊗ Y) ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| ((𝟙 X ⊗ η_ Y Y') ⊗ 𝟙 Y) ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (𝟙 (X ⊗ Y) ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
| (ρ_ X).inv ⊗ 𝟙 Y
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      ((((α_ X tensorUnit' Y).hom ≫ (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ X (Y ⊗ Y') Y).inv) ≫
            ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫
              (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y') ≫ (α_ X Y (𝟙_ C)).inv) ≫
          (f ⊗ 𝟙 (𝟙_ C))) ≫
        (ρ_ Z).hom =
    f
[PROOFSTEP]
have c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom = 𝟙 _ ⊗ (α_ _ _ _).hom
[GOAL]
case c
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
⊢ (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      ((((α_ X tensorUnit' Y).hom ≫ (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ X (Y ⊗ Y') Y).inv) ≫
            ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫
              (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y') ≫ (α_ X Y (𝟙_ C)).inv) ≫
          (f ⊗ 𝟙 (𝟙_ C))) ≫
        (ρ_ Z).hom =
    f
[PROOFSTEP]
pure_coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      ((((α_ X tensorUnit' Y).hom ≫ (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ X (Y ⊗ Y') Y).inv) ≫
            ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫
              (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y') ≫ (α_ X Y (𝟙_ C)).inv) ≫
          (f ⊗ 𝟙 (𝟙_ C))) ≫
        (ρ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 4 7 => rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| 𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [c]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      (α_ X tensorUnit' Y).hom ≫
        (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫
          ((((𝟙 X ⊗ (α_ Y Y' Y).hom) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y')) ≫ (α_ X Y (𝟙_ C)).inv) ≫ (f ⊗ 𝟙 (𝟙_ C))) ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
slice_lhs 3 5 => rw [← id_tensor_comp, ← id_tensor_comp, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (𝟙 X ⊗ (α_ Y Y' Y).hom) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (𝟙 X ⊗ (α_ Y Y' Y).hom) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, evaluation_coevaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (𝟙 X ⊗ η_ Y Y' ⊗ 𝟙 Y) ≫ (𝟙 X ⊗ (α_ Y Y' Y).hom) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ ε_ Y Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X Y (𝟙_ C)).inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| f ⊗ 𝟙 (𝟙_ C)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (ρ_ X).inv ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
| (α_ X tensorUnit' Y).hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, evaluation_coevaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      (α_ X tensorUnit' Y).hom ≫
        (((𝟙 X ⊗ (λ_ Y).hom ≫ (ρ_ Y).inv) ≫ (α_ X Y (𝟙_ C)).inv) ≫ (f ⊗ 𝟙 (𝟙_ C))) ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
simp only [rightUnitor_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
c :
  (α_ X (Y ⊗ Y') Y).inv ≫ ((α_ X Y Y').inv ⊗ 𝟙 Y) ≫ (α_ (X ⊗ Y) Y' Y).hom ≫ (α_ X Y (Y' ⊗ Y)).hom =
    𝟙 X ⊗ (α_ Y Y' Y).hom
⊢ ((ρ_ X).inv ⊗ 𝟙 Y) ≫
      (α_ X tensorUnit' Y).hom ≫
        (((𝟙 X ⊗ (λ_ Y).hom ≫ (ρ_ Y).inv) ≫ (α_ X Y (𝟙_ C)).inv) ≫ (ρ_ (X ⊗ Y)).hom ≫ f ≫ (ρ_ Z).inv) ≫ (ρ_ Z).hom =
    f
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (fun f => (ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ⊗ 𝟙 Y'))
      ((fun f => (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom) f) =
    f
[PROOFSTEP]
dsimp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ ((f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
simp only [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (ρ_ X).inv ≫
      (𝟙 X ⊗ η_ Y Y') ≫
        (α_ X Y Y').inv ≫
          ((f ⊗ 𝟙 Y) ⊗ 𝟙 Y') ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y') ≫ ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
slice_lhs 3 4 => rw [← associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ X Y Y').inv ≫ ((f ⊗ 𝟙 Y) ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| 𝟙 X ⊗ η_ Y Y'
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ X Y Y').inv ≫ ((f ⊗ 𝟙 Y) ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| 𝟙 X ⊗ η_ Y Y'
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ X Y Y').inv ≫ ((f ⊗ 𝟙 Y) ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| 𝟙 X ⊗ η_ Y Y'
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (ρ_ X).inv ≫
      (𝟙 X ⊗ η_ Y Y') ≫
        ((((f ⊗ 𝟙 Y ⊗ 𝟙 Y') ≫ (α_ (Z ⊗ Y') Y Y').inv) ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y')) ≫ ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y')) ≫
          ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 X ⊗ η_ Y Y') ≫ (f ⊗ 𝟙 Y ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ (Z ⊗ Y') Y Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 X ⊗ η_ Y Y') ≫ (f ⊗ 𝟙 Y ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ (Z ⊗ Y') Y Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 X ⊗ η_ Y Y') ≫ (f ⊗ 𝟙 Y ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ (Z ⊗ Y') Y Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (α_ Z Y' Y).hom ⊗ 𝟙 Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (ρ_ X).inv ≫
      (((((f ⊗ 𝟙 tensorUnit') ≫ (𝟙 (Z ⊗ Y') ⊗ η_ Y Y')) ≫ (α_ (Z ⊗ Y') Y Y').inv) ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y')) ≫
          ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y')) ≫
        ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
slice_lhs 3 6 => simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 (Z ⊗ Y') ⊗ η_ Y Y') ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 (Z ⊗ Y') ⊗ η_ Y Y') ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (𝟙 (Z ⊗ Y') ⊗ η_ Y Y') ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ ((𝟙 Z ⊗ ε_ Y Y') ⊗ 𝟙 Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (ρ_ X).inv ≫
      (f ⊗ 𝟙 tensorUnit') ≫
        (((α_ Z Y' tensorUnit').hom ≫ (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Z Y' (Y ⊗ Y')).inv) ≫
            (α_ (Z ⊗ Y') Y Y').inv ≫
              ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y') ≫ (α_ Z (𝟙_ C) Y').inv) ≫
          ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
have c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 _ ⊗ (α_ _ _ _).inv
[GOAL]
case c
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
⊢ (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
⊢ (ρ_ X).inv ≫
      (f ⊗ 𝟙 tensorUnit') ≫
        (((α_ Z Y' tensorUnit').hom ≫ (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Z Y' (Y ⊗ Y')).inv) ≫
            (α_ (Z ⊗ Y') Y Y').inv ≫
              ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y') ≫ (α_ Z (𝟙_ C) Y').inv) ≫
          ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
pure_coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
⊢ (ρ_ X).inv ≫
      (f ⊗ 𝟙 tensorUnit') ≫
        (((α_ Z Y' tensorUnit').hom ≫ (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Z Y' (Y ⊗ Y')).inv) ≫
            (α_ (Z ⊗ Y') Y Y').inv ≫
              ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y') ≫ (α_ Z (𝟙_ C) Y').inv) ≫
          ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
slice_lhs 5 8 => rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [c]
[GOAL]
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom
case a.a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y'
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| 𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [c]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
⊢ (ρ_ X).inv ≫
      (f ⊗ 𝟙 tensorUnit') ≫
        (α_ Z Y' tensorUnit').hom ≫
          (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫
            (((𝟙 Z ⊗ (α_ Y' Y Y').inv) ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y')) ≫ (α_ Z (𝟙_ C) Y').inv) ≫ ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
slice_lhs 4 6 => rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (𝟙 Z ⊗ (α_ Y' Y Y').inv) ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (𝟙 Z ⊗ (α_ Y' Y Y').inv) ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation]
[GOAL]
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (𝟙 Z ⊗ 𝟙 Y' ⊗ η_ Y Y') ≫ (𝟙 Z ⊗ (α_ Y' Y Y').inv) ≫ (𝟙 Z ⊗ ε_ Y Y' ⊗ 𝟙 Y')
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z (𝟙_ C) Y').inv
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ Z).hom ⊗ 𝟙 Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (ρ_ X).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| f ⊗ 𝟙 tensorUnit'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
| (α_ Z Y' tensorUnit').hom
[PROOFSTEP]
rw [← id_tensor_comp, ← id_tensor_comp, coevaluation_evaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
⊢ (ρ_ X).inv ≫
      (f ⊗ 𝟙 tensorUnit') ≫
        (α_ Z Y' tensorUnit').hom ≫ ((𝟙 Z ⊗ (ρ_ Y').hom ≫ (λ_ Y').inv) ≫ (α_ Z (𝟙_ C) Y').inv) ≫ ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
simp only [rightUnitor_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
c :
  (α_ Z Y' (Y ⊗ Y')).inv ≫ (α_ (Z ⊗ Y') Y Y').inv ≫ ((α_ Z Y' Y).hom ⊗ 𝟙 Y') ≫ (α_ Z (Y' ⊗ Y) Y').hom =
    𝟙 Z ⊗ (α_ Y' Y Y').inv
⊢ (ρ_ X).inv ≫
      ((ρ_ X).hom ≫ f ≫ (ρ_ (Z ⊗ Y')).inv) ≫
        (α_ Z Y' tensorUnit').hom ≫ ((𝟙 Z ⊗ (ρ_ Y').hom ≫ (λ_ Y').inv) ≫ (α_ Z (𝟙_ C) Y').inv) ≫ ((ρ_ Z).hom ⊗ 𝟙 Y') =
    f
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
g : Z ⟶ Z'
⊢ ↑(tensorLeftHomEquiv X Y Y' Z') (f ≫ g) = ↑(tensorLeftHomEquiv X Y Y' Z) f ≫ (𝟙 Y ⊗ g)
[PROOFSTEP]
dsimp [tensorLeftHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : Y' ⊗ X ⟶ Z
g : Z ⟶ Z'
⊢ (λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ f ≫ g) =
    ((λ_ X).inv ≫ (η_ Y Y' ⊗ 𝟙 X) ≫ (α_ Y Y' X).hom ≫ (𝟙 Y ⊗ f)) ≫ (𝟙 Y ⊗ g)
[PROOFSTEP]
simp only [id_tensor_comp, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ X'
g : X' ⟶ Y ⊗ Z
⊢ ↑(tensorLeftHomEquiv X Y Y' Z).symm (f ≫ g) = (𝟙 Y' ⊗ f) ≫ ↑(tensorLeftHomEquiv X' Y Y' Z).symm g
[PROOFSTEP]
dsimp [tensorLeftHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ X'
g : X' ⟶ Y ⊗ Z
⊢ (𝟙 Y' ⊗ f ≫ g) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom =
    (𝟙 Y' ⊗ f) ≫ (𝟙 Y' ⊗ g) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom
[PROOFSTEP]
simp only [id_tensor_comp, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
g : Z ⟶ Z'
⊢ ↑(tensorRightHomEquiv X Y Y' Z') (f ≫ g) = ↑(tensorRightHomEquiv X Y Y' Z) f ≫ (g ⊗ 𝟙 Y')
[PROOFSTEP]
dsimp [tensorRightHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⊗ Y ⟶ Z
g : Z ⟶ Z'
⊢ (ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ≫ g ⊗ 𝟙 Y') =
    ((ρ_ X).inv ≫ (𝟙 X ⊗ η_ Y Y') ≫ (α_ X Y Y').inv ≫ (f ⊗ 𝟙 Y')) ≫ (g ⊗ 𝟙 Y')
[PROOFSTEP]
simp only [comp_tensor_id, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ X'
g : X' ⟶ Z ⊗ Y'
⊢ ↑(tensorRightHomEquiv X Y Y' Z).symm (f ≫ g) = (f ⊗ 𝟙 Y) ≫ ↑(tensorRightHomEquiv X' Y Y' Z).symm g
[PROOFSTEP]
dsimp [tensorRightHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : X ⟶ X'
g : X' ⟶ Z ⊗ Y'
⊢ (f ≫ g ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom =
    (f ⊗ 𝟙 Y) ≫ (g ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom
[PROOFSTEP]
simp only [comp_tensor_id, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ ↑(tensorLeftHomEquiv (X ⊗ X') Y Y' (Z ⊗ Z')).symm ((f ⊗ g) ≫ (α_ Y Z Z').hom) =
    (α_ Y' X X').inv ≫ (↑(tensorLeftHomEquiv X Y Y' Z).symm f ⊗ g)
[PROOFSTEP]
dsimp [tensorLeftHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ (𝟙 Y' ⊗ (f ⊗ g) ≫ (α_ Y Z Z').hom) ≫ (α_ Y' Y (Z ⊗ Z')).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')) ≫ (λ_ (Z ⊗ Z')).hom =
    (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
simp only [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ ((𝟙 Y' ⊗ f ⊗ g) ≫ (𝟙 Y' ⊗ (α_ Y Z Z').hom)) ≫ (α_ Y' Y (Z ⊗ Z')).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')) ≫ (λ_ (Z ⊗ Z')).hom =
    (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
simp only [associator_inv_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ (((α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ⊗ g) ≫ (α_ Y' (Y ⊗ Z) Z').hom) ≫ (𝟙 Y' ⊗ (α_ Y Z Z').hom)) ≫
      (α_ Y' Y (Z ⊗ Z')).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')) ≫ (λ_ (Z ⊗ Z')).hom =
    (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
slice_lhs 2 2 => rw [← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (𝟙 Y' ⊗ f) ⊗ g
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' (Y ⊗ Z) Z').hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| 𝟙 Y' ⊗ (α_ Y Z Z').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' Y (Z ⊗ Z')).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (λ_ (Z ⊗ Z')).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (𝟙 Y' ⊗ f) ⊗ g
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' (Y ⊗ Z) Z').hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| 𝟙 Y' ⊗ (α_ Y Z Z').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' Y (Z ⊗ Z')).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (λ_ (Z ⊗ Z')).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (𝟙 Y' ⊗ f) ⊗ g
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' (Y ⊗ Z) Z').hom
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| 𝟙 Y' ⊗ (α_ Y Z Z').hom
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' Y (Z ⊗ Z')).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (λ_ (Z ⊗ Z')).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ (α_ Y' X X').inv ≫
      ((((((𝟙 (Y' ⊗ X) ⊗ g) ≫ ((𝟙 Y' ⊗ f) ⊗ 𝟙 Z')) ≫ (α_ Y' (Y ⊗ Z) Z').hom) ≫ (𝟙 Y' ⊗ (α_ Y Z Z').hom)) ≫
            (α_ Y' Y (Z ⊗ Z')).inv) ≫
          (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z'))) ≫
        (λ_ (Z ⊗ Z')).hom =
    (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
conv_rhs => rw [← id_tensor_comp_tensor_id, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
| (α_ Y' X X').inv ≫ ((𝟙 Y' ⊗ f) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ g)
[PROOFSTEP]
rw [← id_tensor_comp_tensor_id, comp_tensor_id, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ (α_ Y' X X').inv ≫
      ((((((𝟙 (Y' ⊗ X) ⊗ g) ≫ ((𝟙 Y' ⊗ f) ⊗ 𝟙 Z')) ≫ (α_ Y' (Y ⊗ Z) Z').hom) ≫ (𝟙 Y' ⊗ (α_ Y Z Z').hom)) ≫
            (α_ Y' Y (Z ⊗ Z')).inv) ≫
          (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z'))) ≫
        (λ_ (Z ⊗ Z')).hom =
    (α_ Y' X X').inv ≫
      (𝟙 (Y' ⊗ X) ⊗ g) ≫ ((𝟙 Y' ⊗ f) ⊗ 𝟙 Z') ≫ ((α_ Y' Y Z).inv ⊗ 𝟙 Z') ≫ ((ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom ⊗ 𝟙 Z')
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Y ⊗ Z
g : X' ⟶ Z'
⊢ (𝟙 (Y' ⊗ X) ⊗ g) ≫
      (α_ Y' X Z').hom ≫
        (𝟙 Y' ⊗ f ⊗ 𝟙 Z') ≫
          (𝟙 Y' ⊗ (α_ Y Z Z').hom) ≫
            (α_ Y' Y (Z ⊗ Z')).inv ≫ (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')) ≫ (α_ (𝟙_ C) Z Z').inv ≫ ((λ_ Z).hom ⊗ 𝟙 Z') =
    (𝟙 (Y' ⊗ X) ⊗ g) ≫
      (α_ Y' X Z').hom ≫
        (𝟙 Y' ⊗ f ⊗ 𝟙 Z') ≫
          (α_ Y' (Y ⊗ Z) Z').inv ≫
            ((α_ Y' Y Z).inv ⊗ 𝟙 Z') ≫
              (α_ (Y' ⊗ Y) Z Z').hom ≫ (ε_ Y Y' ⊗ 𝟙 (Z ⊗ Z')) ≫ (α_ (𝟙_ C) Z Z').inv ≫ ((λ_ Z).hom ⊗ 𝟙 Z')
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ ↑(tensorRightHomEquiv (X' ⊗ X) Y Y' (Z' ⊗ Z)).symm ((g ⊗ f) ≫ (α_ Z' Z Y').inv) =
    (α_ X' X Y).hom ≫ (g ⊗ ↑(tensorRightHomEquiv X Y Y' Z).symm f)
[PROOFSTEP]
dsimp [tensorRightHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ ((g ⊗ f) ≫ (α_ Z' Z Y').inv ⊗ 𝟙 Y) ≫ (α_ (Z' ⊗ Z) Y' Y).hom ≫ (𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y') ≫ (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
simp only [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (((g ⊗ f) ⊗ 𝟙 Y) ≫ ((α_ Z' Z Y').inv ⊗ 𝟙 Y)) ≫ (α_ (Z' ⊗ Z) Y' Y).hom ≫ (𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y') ≫ (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
simp only [associator_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (((α_ X' X Y).hom ≫ (g ⊗ f ⊗ 𝟙 Y) ≫ (α_ Z' (Z ⊗ Y') Y).inv) ≫ ((α_ Z' Z Y').inv ⊗ 𝟙 Y)) ≫
      (α_ (Z' ⊗ Z) Y' Y).hom ≫ (𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y') ≫ (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
slice_lhs 2 2 => rw [← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| g ⊗ f ⊗ 𝟙 Y
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' (Z ⊗ Y') Y).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' Z Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ (Z' ⊗ Z) Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| 𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (ρ_ (Z' ⊗ Z)).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| g ⊗ f ⊗ 𝟙 Y
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' (Z ⊗ Y') Y).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' Z Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ (Z' ⊗ Z) Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| 𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (ρ_ (Z' ⊗ Z)).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| g ⊗ f ⊗ 𝟙 Y
case a.a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' (Z ⊗ Y') Y).inv
case a.a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ Z' Z Y').inv ⊗ 𝟙 Y
case a.a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ (Z' ⊗ Z) Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| 𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (ρ_ (Z' ⊗ Z)).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (α_ X' X Y).hom ≫
      ((((((g ⊗ 𝟙 (X ⊗ Y)) ≫ (𝟙 Z' ⊗ f ⊗ 𝟙 Y)) ≫ (α_ Z' (Z ⊗ Y') Y).inv) ≫ ((α_ Z' Z Y').inv ⊗ 𝟙 Y)) ≫
            (α_ (Z' ⊗ Z) Y' Y).hom) ≫
          (𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y')) ≫
        (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
conv_rhs => rw [← tensor_id_comp_id_tensor, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
| (α_ X' X Y).hom ≫ (g ⊗ (f ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
rw [← tensor_id_comp_id_tensor, id_tensor_comp, id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (α_ X' X Y).hom ≫
      ((((((g ⊗ 𝟙 (X ⊗ Y)) ≫ (𝟙 Z' ⊗ f ⊗ 𝟙 Y)) ≫ (α_ Z' (Z ⊗ Y') Y).inv) ≫ ((α_ Z' Z Y').inv ⊗ 𝟙 Y)) ≫
            (α_ (Z' ⊗ Z) Y' Y).hom) ≫
          (𝟙 (Z' ⊗ Z) ⊗ ε_ Y Y')) ≫
        (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫
      (g ⊗ 𝟙 (X ⊗ Y)) ≫ (𝟙 Z' ⊗ f ⊗ 𝟙 Y) ≫ (𝟙 Z' ⊗ (α_ Z Y' Y).hom) ≫ (𝟙 Z' ⊗ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
simp only [← tensor_id, associator_conjugation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (α_ X' X Y).hom ≫
      ((((((g ⊗ 𝟙 X ⊗ 𝟙 Y) ≫ (𝟙 Z' ⊗ f ⊗ 𝟙 Y)) ≫ (α_ Z' (Z ⊗ Y') Y).inv) ≫ ((α_ Z' Z Y').inv ⊗ 𝟙 Y)) ≫
            (α_ (Z' ⊗ Z) Y' Y).hom) ≫
          (α_ Z' Z (Y' ⊗ Y)).hom ≫ (𝟙 Z' ⊗ 𝟙 Z ⊗ ε_ Y Y') ≫ (α_ Z' Z (𝟙_ C)).inv) ≫
        (ρ_ (Z' ⊗ Z)).hom =
    (α_ X' X Y).hom ≫
      (g ⊗ 𝟙 X ⊗ 𝟙 Y) ≫ (𝟙 Z' ⊗ f ⊗ 𝟙 Y) ≫ (𝟙 Z' ⊗ (α_ Z Y' Y).hom) ≫ (𝟙 Z' ⊗ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom)
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y Y' Z Z' : C
inst✝ : ExactPairing Y Y'
f : X ⟶ Z ⊗ Y'
g : X' ⟶ Z'
⊢ (g ⊗ f ⊗ 𝟙 Y) ≫
      (α_ Z' (Z ⊗ Y') Y).inv ≫
        ((α_ Z' Z Y').inv ⊗ 𝟙 Y) ≫
          (α_ (Z' ⊗ Z) Y' Y).hom ≫ (α_ Z' Z (Y' ⊗ Y)).hom ≫ (𝟙 Z' ⊗ 𝟙 Z ⊗ ε_ Y Y') ≫ (𝟙 Z' ⊗ (ρ_ Z).hom) =
    (g ⊗ f ⊗ 𝟙 Y) ≫ (𝟙 Z' ⊗ (α_ Z Y' Y).hom) ≫ (𝟙 Z' ⊗ 𝟙 Z ⊗ ε_ Y Y') ≫ (𝟙 Z' ⊗ (ρ_ Z).hom)
[PROOFSTEP]
coherence
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ ↑(tensorLeftHomEquiv (𝟙_ C) Y Y' Z).symm (η_ Y Y' ≫ (𝟙 Y ⊗ f)) = (ρ_ Y').hom ≫ f
[PROOFSTEP]
dsimp [tensorLeftHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ (𝟙 Y' ⊗ η_ Y Y' ≫ (𝟙 Y ⊗ f)) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom = (ρ_ Y').hom ≫ f
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ ((𝟙 Y' ⊗ η_ Y Y') ≫ (𝟙 Y' ⊗ 𝟙 Y ⊗ f)) ≫ (α_ Y' Y Z).inv ≫ (ε_ Y Y' ⊗ 𝟙 Z) ≫ (λ_ Z).hom = (ρ_ Y').hom ≫ f
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ 𝟙 Y ⊗ f) ≫ (α_ Y' Y Z).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ε_ Y Y' ⊗ 𝟙 Z
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ (𝟙 Y' ⊗ η_ Y Y') ≫ (((α_ Y' Y Y').inv ≫ ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f)) ≫ (ε_ Y Y' ⊗ 𝟙 Z)) ≫ (λ_ Z).hom = (ρ_ Y').hom ≫ f
[PROOFSTEP]
slice_lhs 3 4 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (α_ Y' Y Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (α_ Y' Y Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| ((𝟙 Y' ⊗ 𝟙 Y) ⊗ f) ≫ (ε_ Y Y' ⊗ 𝟙 Z)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 Y' ⊗ η_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (α_ Y' Y Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ (𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Y' Y Y').inv ≫ ((ε_ Y Y' ⊗ 𝟙 Y') ≫ (𝟙 (𝟙_ C) ⊗ f)) ≫ (λ_ Z).hom = (ρ_ Y').hom ≫ f
[PROOFSTEP]
slice_lhs 1 3 => rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Y' Y Y').inv ≫ (ε_ Y Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Y' Y Y').inv ≫ (ε_ Y Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (𝟙 Y' ⊗ η_ Y Y') ≫ (α_ Y' Y Y').inv ≫ (ε_ Y Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| 𝟙 (𝟙_ C) ⊗ f
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
| (λ_ Z).hom
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y' ⟶ Z
⊢ (((ρ_ Y').hom ≫ (λ_ Y').inv) ≫ (𝟙 (𝟙_ C) ⊗ f)) ≫ (λ_ Z).hom = (ρ_ Y').hom ≫ f
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ ↑(tensorLeftHomEquiv (𝟙_ C) Y Yᘁ Xᘁ).symm (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) = (ρ_ Yᘁ).hom ≫ fᘁ
[PROOFSTEP]
dsimp [tensorLeftHomEquiv, rightAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ (𝟙 Yᘁ ⊗ η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom =
    (ρ_ Yᘁ).hom ≫ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ ↑(tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f)) = (λ_ ᘁY).hom ≫ ᘁf
[PROOFSTEP]
dsimp [tensorRightHomEquiv, leftAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ (η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom =
    (λ_ ᘁY).hom ≫
      (λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ ↑(tensorRightHomEquiv (𝟙_ C) Y Y' Z).symm (η_ Y Y' ≫ (f ⊗ 𝟙 Y')) = (λ_ Y).hom ≫ f
[PROOFSTEP]
dsimp [tensorRightHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ (η_ Y Y' ≫ (f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom = (λ_ Y).hom ≫ f
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ ((η_ Y Y' ⊗ 𝟙 Y) ≫ ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y)) ≫ (α_ Z Y' Y).hom ≫ (𝟙 Z ⊗ ε_ Y Y') ≫ (ρ_ Z).hom = (λ_ Y).hom ≫ f
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| ((f ⊗ 𝟙 Y') ⊗ 𝟙 Y) ≫ (α_ Z Y' Y).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| 𝟙 Z ⊗ ε_ Y Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ (η_ Y Y' ⊗ 𝟙 Y) ≫ (((α_ Y Y' Y).hom ≫ (f ⊗ 𝟙 Y' ⊗ 𝟙 Y)) ≫ (𝟙 Z ⊗ ε_ Y Y')) ≫ (ρ_ Z).hom = (λ_ Y).hom ≫ f
[PROOFSTEP]
slice_lhs 3 4 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (α_ Y Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (α_ Y Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (f ⊗ 𝟙 Y' ⊗ 𝟙 Y) ≫ (𝟙 Z ⊗ ε_ Y Y')
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| η_ Y Y' ⊗ 𝟙 Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (α_ Y Y' Y).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ (η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ Y Y' Y).hom ≫ ((𝟙 Y ⊗ ε_ Y Y') ≫ (f ⊗ 𝟙 (𝟙_ C))) ≫ (ρ_ Z).hom = (λ_ Y).hom ≫ f
[PROOFSTEP]
slice_lhs 1 3 => rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ Y Y' Y).hom ≫ (𝟙 Y ⊗ ε_ Y Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ Y Y' Y).hom ≫ (𝟙 Y ⊗ ε_ Y Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (η_ Y Y' ⊗ 𝟙 Y) ≫ (α_ Y Y' Y).hom ≫ (𝟙 Y ⊗ ε_ Y Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| f ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
| (ρ_ Z).hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Y' Z : C
inst✝ : ExactPairing Y Y'
f : Y ⟶ Z
⊢ (((λ_ Y).hom ≫ (ρ_ Y).inv) ≫ (f ⊗ 𝟙 (𝟙_ C))) ≫ (ρ_ Z).hom = (λ_ Y).hom ≫ f
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ ↑(tensorLeftHomEquiv Y (ᘁZ) Z (𝟙_ C)) ((𝟙 Z ⊗ f) ≫ ε_ (ᘁZ) Z) = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
dsimp [tensorLeftHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ (λ_ Y).inv ≫ (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ (α_ (ᘁZ) Z Y).hom ≫ (𝟙 ᘁZ ⊗ (𝟙 Z ⊗ f) ≫ ε_ (ᘁZ) Z) = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
rw [id_tensor_comp]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ (λ_ Y).inv ≫ (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ (α_ (ᘁZ) Z Y).hom ≫ (𝟙 ᘁZ ⊗ 𝟙 Z ⊗ f) ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z) = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z Y).hom ≫ (𝟙 ᘁZ ⊗ 𝟙 Z ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| η_ (ᘁZ) Z ⊗ 𝟙 Y
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z Y).hom ≫ (𝟙 ᘁZ ⊗ 𝟙 Z ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| η_ (ᘁZ) Z ⊗ 𝟙 Y
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z Y).hom ≫ (𝟙 ᘁZ ⊗ 𝟙 Z ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| η_ (ᘁZ) Z ⊗ 𝟙 Y
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ (λ_ Y).inv ≫ (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ (((𝟙 ᘁZ ⊗ 𝟙 Z) ⊗ f) ≫ (α_ (ᘁZ) Z ᘁZ).hom) ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z) = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ ((𝟙 ᘁZ ⊗ 𝟙 Z) ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z ᘁZ).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ ((𝟙 ᘁZ ⊗ 𝟙 Z) ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z ᘁZ).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 Y) ≫ ((𝟙 ᘁZ ⊗ 𝟙 Z) ⊗ f)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (α_ (ᘁZ) Z ᘁZ).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ (λ_ Y).inv ≫ (((𝟙 tensorUnit' ⊗ f) ≫ (η_ (ᘁZ) Z ⊗ 𝟙 ᘁZ)) ≫ (α_ (ᘁZ) Z ᘁZ).hom) ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z) = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
slice_lhs 3 5 => rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁZ) Z ᘁZ).hom ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁZ) Z ᘁZ).hom ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (η_ (ᘁZ) Z ⊗ 𝟙 ᘁZ) ≫ (α_ (ᘁZ) Z ᘁZ).hom ≫ (𝟙 ᘁZ ⊗ ε_ (ᘁZ) Z)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| (λ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
| 𝟙 tensorUnit' ⊗ f
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
Y Z : C
inst✝ : HasLeftDual Z
f : Y ⟶ ᘁZ
⊢ (λ_ Y).inv ≫ (𝟙 tensorUnit' ⊗ f) ≫ (λ_ ᘁZ).hom ≫ (ρ_ ᘁZ).inv = f ≫ (ρ_ ᘁZ).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ ↑(tensorLeftHomEquiv (ᘁY) (ᘁX) X (𝟙_ C)) ((f ⊗ 𝟙 ᘁY) ≫ ε_ (ᘁY) Y) = (ᘁf) ≫ (ρ_ ᘁX).inv
[PROOFSTEP]
dsimp [tensorLeftHomEquiv, leftAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ (λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) X ᘁY).hom ≫ (𝟙 ᘁX ⊗ (f ⊗ 𝟙 ᘁY) ≫ ε_ (ᘁY) Y) =
    ((λ_ ᘁY).inv ≫ (η_ (ᘁX) X ⊗ 𝟙 ᘁY) ≫ ((𝟙 ᘁX ⊗ f) ⊗ 𝟙 ᘁY) ≫ (α_ (ᘁX) Y ᘁY).hom ≫ (𝟙 ᘁX ⊗ ε_ (ᘁY) Y) ≫ (ρ_ ᘁX).hom) ≫
      (ρ_ ᘁX).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ ↑(tensorRightHomEquiv Yᘁ X Xᘁ (𝟙_ C)) ((𝟙 Yᘁ ⊗ f) ≫ ε_ Y Yᘁ) = fᘁ ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
dsimp [tensorRightHomEquiv, rightAdjointMate]
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ (ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (α_ Yᘁ X Xᘁ).inv ≫ ((𝟙 Yᘁ ⊗ f) ≫ ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) =
    ((ρ_ Yᘁ).inv ≫ (𝟙 Yᘁ ⊗ η_ X Xᘁ) ≫ (𝟙 Yᘁ ⊗ f ⊗ 𝟙 Xᘁ) ≫ (α_ Yᘁ Y Xᘁ).inv ≫ (ε_ Y Yᘁ ⊗ 𝟙 Xᘁ) ≫ (λ_ Xᘁ).hom) ≫
      (λ_ Xᘁ).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ ↑(tensorRightHomEquiv Y X Xᘁ (𝟙_ C)) ((f ⊗ 𝟙 X) ≫ ε_ X Xᘁ) = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
dsimp [tensorRightHomEquiv]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ (𝟙 Y ⊗ η_ X Xᘁ) ≫ (α_ Y X Xᘁ).inv ≫ ((f ⊗ 𝟙 X) ≫ ε_ X Xᘁ ⊗ 𝟙 Xᘁ) = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
rw [comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ (𝟙 Y ⊗ η_ X Xᘁ) ≫ (α_ Y X Xᘁ).inv ≫ ((f ⊗ 𝟙 X) ⊗ 𝟙 Xᘁ) ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ) = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Y X Xᘁ).inv ≫ ((f ⊗ 𝟙 X) ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| 𝟙 Y ⊗ η_ X Xᘁ
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Y X Xᘁ).inv ≫ ((f ⊗ 𝟙 X) ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| 𝟙 Y ⊗ η_ X Xᘁ
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Y X Xᘁ).inv ≫ ((f ⊗ 𝟙 X) ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| 𝟙 Y ⊗ η_ X Xᘁ
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ (𝟙 Y ⊗ η_ X Xᘁ) ≫ ((f ⊗ 𝟙 X ⊗ 𝟙 Xᘁ) ≫ (α_ Xᘁ X Xᘁ).inv) ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ) = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Y ⊗ η_ X Xᘁ) ≫ (f ⊗ 𝟙 X ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Xᘁ X Xᘁ).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Y ⊗ η_ X Xᘁ) ≫ (f ⊗ 𝟙 X ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Xᘁ X Xᘁ).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Y ⊗ η_ X Xᘁ) ≫ (f ⊗ 𝟙 X ⊗ 𝟙 Xᘁ)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (α_ Xᘁ X Xᘁ).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| ε_ X Xᘁ ⊗ 𝟙 Xᘁ
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ (((f ⊗ 𝟙 tensorUnit') ≫ (𝟙 Xᘁ ⊗ η_ X Xᘁ)) ≫ (α_ Xᘁ X Xᘁ).inv) ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ) = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
slice_lhs 3 5 => rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Xᘁ ⊗ η_ X Xᘁ) ≫ (α_ Xᘁ X Xᘁ).inv ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Xᘁ ⊗ η_ X Xᘁ) ≫ (α_ Xᘁ X Xᘁ).inv ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (𝟙 Xᘁ ⊗ η_ X Xᘁ) ≫ (α_ Xᘁ X Xᘁ).inv ≫ (ε_ X Xᘁ ⊗ 𝟙 Xᘁ)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| (ρ_ Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
| f ⊗ 𝟙 tensorUnit'
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y : C
inst✝ : HasRightDual X
f : Y ⟶ Xᘁ
⊢ (ρ_ Y).inv ≫ (f ⊗ 𝟙 tensorUnit') ≫ (ρ_ Xᘁ).hom ≫ (λ_ Xᘁ).inv = f ≫ (λ_ Xᘁ).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ η_ Y Yᘁ ≫ (𝟙 Y ⊗ fᘁ) = η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ)
[PROOFSTEP]
apply_fun (tensorLeftHomEquiv _ Y (Yᘁ) _).symm
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ ↑(tensorLeftHomEquiv (𝟙_ C) Y Yᘁ Xᘁ).symm (η_ Y Yᘁ ≫ (𝟙 Y ⊗ fᘁ)) =
    ↑(tensorLeftHomEquiv (𝟙_ C) Y Yᘁ Xᘁ).symm (η_ X Xᘁ ≫ (f ⊗ 𝟙 Xᘁ))
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ (𝟙 X ⊗ ᘁf) ≫ ε_ (ᘁX) X = (f ⊗ 𝟙 ᘁY) ≫ ε_ (ᘁY) Y
[PROOFSTEP]
apply_fun tensorLeftHomEquiv _ (ᘁX) X _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ ↑(tensorLeftHomEquiv (ᘁY) (ᘁX) X (𝟙_ C)) ((𝟙 X ⊗ ᘁf) ≫ ε_ (ᘁX) X) =
    ↑(tensorLeftHomEquiv (ᘁY) (ᘁX) X (𝟙_ C)) ((f ⊗ 𝟙 ᘁY) ≫ ε_ (ᘁY) Y)
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ η_ (ᘁY) Y ≫ ((ᘁf) ⊗ 𝟙 Y) = η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f)
[PROOFSTEP]
apply_fun (tensorRightHomEquiv _ (ᘁY) Y _).symm
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasLeftDual X
inst✝ : HasLeftDual Y
f : X ⟶ Y
⊢ ↑(tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁY) Y ≫ ((ᘁf) ⊗ 𝟙 Y)) =
    ↑(tensorRightHomEquiv (𝟙_ C) (ᘁY) Y ᘁX).symm (η_ (ᘁX) X ≫ (𝟙 ᘁX ⊗ f))
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ (fᘁ ⊗ 𝟙 X) ≫ ε_ X Xᘁ = (𝟙 Yᘁ ⊗ f) ≫ ε_ Y Yᘁ
[PROOFSTEP]
apply_fun tensorRightHomEquiv _ X (Xᘁ) _
[GOAL]
C : Type u₁
inst✝³ : Category.{v₁, u₁} C
inst✝² : MonoidalCategory C
X Y : C
inst✝¹ : HasRightDual X
inst✝ : HasRightDual Y
f : X ⟶ Y
⊢ ↑(tensorRightHomEquiv Yᘁ X Xᘁ (𝟙_ C)) ((fᘁ ⊗ 𝟙 X) ≫ ε_ X Xᘁ) =
    ↑(tensorRightHomEquiv Yᘁ X Xᘁ (𝟙_ C)) ((𝟙 Yᘁ ⊗ f) ≫ ε_ Y Yᘁ)
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (𝟙 Y ⊗ η_ X' Y ≫ (i.inv ⊗ 𝟙 Y)) ≫ (α_ Y X Y).inv ≫ ((𝟙 Y ⊗ i.hom) ≫ ε_ X' Y ⊗ 𝟙 Y) = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
rw [id_tensor_comp, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ ((𝟙 Y ⊗ η_ X' Y) ≫ (𝟙 Y ⊗ i.inv ⊗ 𝟙 Y)) ≫ (α_ Y X Y).inv ≫ ((𝟙 Y ⊗ i.hom) ⊗ 𝟙 Y) ≫ (ε_ X' Y ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
simp only [Iso.inv_hom_id_assoc, associator_conjugation, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (𝟙 Y ⊗ η_ X' Y) ≫ (𝟙 Y ⊗ i.inv ⊗ 𝟙 Y) ≫ (𝟙 Y ⊗ i.hom ⊗ 𝟙 Y) ≫ (α_ Y X' Y).inv ≫ (ε_ X' Y ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 2 3 =>
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 Y ⊗ i.inv ⊗ 𝟙 Y) ≫ (𝟙 Y ⊗ i.hom ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ Y X' Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ε_ X' Y ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 Y ⊗ η_ X' Y
[PROOFSTEP]
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 Y ⊗ i.inv ⊗ 𝟙 Y) ≫ (𝟙 Y ⊗ i.hom ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ Y X' Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ε_ X' Y ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 Y ⊗ η_ X' Y
[PROOFSTEP]
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 Y ⊗ i.inv ⊗ 𝟙 Y) ≫ (𝟙 Y ⊗ i.hom ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ Y X' Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ε_ X' Y ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 Y ⊗ η_ X' Y
[PROOFSTEP]
rw [← tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 Y ≫ 𝟙 Y ⊗ (i.inv ⊗ 𝟙 Y) ≫ (i.hom ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ Y X' Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ε_ X' Y ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 Y ⊗ η_ X' Y
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (𝟙 Y ⊗ η_ X' Y) ≫ (𝟙 (Y ⊗ X' ⊗ Y) ≫ (α_ Y X' Y).inv) ≫ (ε_ X' Y ⊗ 𝟙 Y) = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (η_ X' Y ≫ (i.inv ⊗ 𝟙 Y) ⊗ 𝟙 X) ≫ (α_ X Y X).hom ≫ (𝟙 X ⊗ (𝟙 Y ⊗ i.hom) ≫ ε_ X' Y) = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
rw [id_tensor_comp, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ ((η_ X' Y ⊗ 𝟙 X) ≫ ((i.inv ⊗ 𝟙 Y) ⊗ 𝟙 X)) ≫ (α_ X Y X).hom ≫ (𝟙 X ⊗ 𝟙 Y ⊗ i.hom) ≫ (𝟙 X ⊗ ε_ X' Y) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 2 3 => rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ((i.inv ⊗ 𝟙 Y) ⊗ 𝟙 X) ≫ (α_ X Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ 𝟙 Y ⊗ i.hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ((i.inv ⊗ 𝟙 Y) ⊗ 𝟙 X) ≫ (α_ X Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ 𝟙 Y ⊗ i.hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| ((i.inv ⊗ 𝟙 Y) ⊗ 𝟙 X) ≫ (α_ X Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ 𝟙 Y ⊗ i.hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (η_ X' Y ⊗ 𝟙 X) ≫ (((α_ X' Y X).hom ≫ (i.inv ⊗ 𝟙 Y ⊗ 𝟙 X)) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ i.hom)) ≫ (𝟙 X ⊗ ε_ X' Y) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 Y ⊗ 𝟙 X) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 Y ⊗ 𝟙 X) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 Y ⊗ 𝟙 X) ≫ (𝟙 X ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (η_ X' Y ⊗ 𝟙 X) ≫ (α_ X' Y X).hom ≫ ((𝟙 X' ⊗ 𝟙 Y ⊗ i.hom) ≫ (i.inv ⊗ 𝟙 (Y ⊗ X'))) ≫ (𝟙 X ⊗ ε_ X' Y) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 4 5 => rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 (Y ⊗ X')) ≫ (𝟙 X ⊗ ε_ X' Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ 𝟙 Y ⊗ i.hom
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 (Y ⊗ X')) ≫ (𝟙 X ⊗ ε_ X' Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ 𝟙 Y ⊗ i.hom
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (i.inv ⊗ 𝟙 (Y ⊗ X')) ≫ (𝟙 X ⊗ ε_ X' Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ 𝟙 Y ⊗ i.hom
[PROOFSTEP]
rw [tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (η_ X' Y ⊗ 𝟙 X) ≫ (α_ X' Y X).hom ≫ (𝟙 X' ⊗ 𝟙 Y ⊗ i.hom) ≫ (𝟙 X' ⊗ ε_ X' Y) ≫ (i.inv ⊗ 𝟙 (𝟙_ C)) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 2 3 => rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom ≫ (𝟙 X' ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom ≫ (𝟙 X' ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X).hom ≫ (𝟙 X' ⊗ 𝟙 Y ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| η_ X' Y ⊗ 𝟙 X
[PROOFSTEP]
rw [← associator_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (η_ X' Y ⊗ 𝟙 X) ≫ ((((𝟙 X' ⊗ 𝟙 Y) ⊗ i.hom) ≫ (α_ X' Y X').hom) ≫ (𝟙 X' ⊗ ε_ X' Y)) ≫ (i.inv ⊗ 𝟙 (𝟙_ C)) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 1 2 => rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X) ≫ ((𝟙 X' ⊗ 𝟙 Y) ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X) ≫ ((𝟙 X' ⊗ 𝟙 Y) ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X) ≫ ((𝟙 X' ⊗ 𝟙 Y) ⊗ i.hom)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (α_ X' Y X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 X' ⊗ ε_ X' Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ ((((𝟙 (𝟙_ C) ⊗ i.hom) ≫ (η_ X' Y ⊗ 𝟙 X')) ≫ (α_ X' Y X').hom) ≫ (𝟙 X' ⊗ ε_ X' Y)) ≫ (i.inv ⊗ 𝟙 (𝟙_ C)) =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 2 4 => rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X') ≫ (α_ X' Y X').hom ≫ (𝟙 X' ⊗ ε_ X' Y)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 (𝟙_ C) ⊗ i.hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X') ≫ (α_ X' Y X').hom ≫ (𝟙 X' ⊗ ε_ X' Y)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 (𝟙_ C) ⊗ i.hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (η_ X' Y ⊗ 𝟙 X') ≫ (α_ X' Y X').hom ≫ (𝟙 X' ⊗ ε_ X' Y)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| 𝟙 (𝟙_ C) ⊗ i.hom
[PROOFSTEP]
rw [evaluation_coevaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (𝟙 (𝟙_ C) ⊗ i.hom) ≫ ((λ_ X').hom ≫ (ρ_ X').inv) ≫ (i.inv ⊗ 𝟙 (𝟙_ C)) = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 1 2 => rw [leftUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 (𝟙_ C) ⊗ i.hom) ≫ (λ_ X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 (𝟙_ C) ⊗ i.hom) ≫ (λ_ X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (𝟙 (𝟙_ C) ⊗ i.hom) ≫ (λ_ X').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.inv ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [leftUnitor_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (((λ_ X).hom ≫ i.hom) ≫ (ρ_ X').inv) ≫ (i.inv ⊗ 𝟙 (𝟙_ C)) = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [← rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv ≫ (i.inv ⊗ 𝟙 (𝟙_ C))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (λ_ X).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.hom
[PROOFSTEP]
rw [← rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv ≫ (i.inv ⊗ 𝟙 (𝟙_ C))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (λ_ X).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.hom
[PROOFSTEP]
rw [← rightUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (ρ_ X').inv ≫ (i.inv ⊗ 𝟙 (𝟙_ C))
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| (λ_ X).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
| i.hom
[PROOFSTEP]
rw [← rightUnitor_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X X' Y : C
inst✝ : ExactPairing X' Y
i : X ≅ X'
⊢ (λ_ X).hom ≫ i.hom ≫ i.inv ≫ (ρ_ X).inv = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (𝟙 Y ⊗ η_ X Y' ≫ (𝟙 X ⊗ i.inv)) ≫ (α_ Y X Y).inv ≫ ((i.hom ⊗ 𝟙 X) ≫ ε_ X Y' ⊗ 𝟙 Y) = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
rw [id_tensor_comp, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ ((𝟙 Y ⊗ η_ X Y') ≫ (𝟙 Y ⊗ 𝟙 X ⊗ i.inv)) ≫ (α_ Y X Y).inv ≫ ((i.hom ⊗ 𝟙 X) ⊗ 𝟙 Y) ≫ (ε_ X Y' ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y X Y).inv ≫ ((i.hom ⊗ 𝟙 X) ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ 𝟙 X ⊗ i.inv
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y X Y).inv ≫ ((i.hom ⊗ 𝟙 X) ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ 𝟙 X ⊗ i.inv
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y X Y).inv ≫ ((i.hom ⊗ 𝟙 X) ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ 𝟙 X ⊗ i.inv
[PROOFSTEP]
rw [← associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (𝟙 Y ⊗ η_ X Y') ≫ (𝟙 Y ⊗ 𝟙 X ⊗ i.inv) ≫ ((i.hom ⊗ 𝟙 X ⊗ 𝟙 Y) ≫ (α_ Y' X Y).inv) ≫ (ε_ X Y' ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 2 3 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ 𝟙 X ⊗ i.inv) ≫ (i.hom ⊗ 𝟙 X ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ 𝟙 X ⊗ i.inv) ≫ (i.hom ⊗ 𝟙 X ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ 𝟙 X ⊗ i.inv) ≫ (i.hom ⊗ 𝟙 X ⊗ 𝟙 Y)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y ⊗ η_ X Y'
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (𝟙 Y ⊗ η_ X Y') ≫ (((i.hom ⊗ 𝟙 (X ⊗ Y')) ≫ (𝟙 Y' ⊗ 𝟙 X ⊗ i.inv)) ≫ (α_ Y' X Y).inv) ≫ (ε_ X Y' ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 1 2 => rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ η_ X Y') ≫ (i.hom ⊗ 𝟙 (X ⊗ Y'))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ 𝟙 X ⊗ i.inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ η_ X Y') ≫ (i.hom ⊗ 𝟙 (X ⊗ Y'))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ 𝟙 X ⊗ i.inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y ⊗ η_ X Y') ≫ (i.hom ⊗ 𝟙 (X ⊗ Y'))
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ 𝟙 X ⊗ i.inv
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y).inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
[PROOFSTEP]
rw [id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ ((((i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 Y' ⊗ η_ X Y')) ≫ (𝟙 Y' ⊗ 𝟙 X ⊗ i.inv)) ≫ (α_ Y' X Y).inv) ≫ (ε_ X Y' ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ 𝟙 X ⊗ i.inv) ≫ (α_ Y' X Y).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ 𝟙 X ⊗ i.inv) ≫ (α_ Y' X Y).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ 𝟙 X ⊗ i.inv) ≫ (α_ Y' X Y).inv
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ε_ X Y' ⊗ 𝟙 Y
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
[PROOFSTEP]
rw [associator_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 Y' ⊗ η_ X Y') ≫ ((α_ Y' X Y').inv ≫ ((𝟙 Y' ⊗ 𝟙 X) ⊗ i.inv)) ≫ (ε_ X Y' ⊗ 𝟙 Y) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 4 5 => rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ((𝟙 Y' ⊗ 𝟙 X) ⊗ i.inv) ≫ (ε_ X Y' ⊗ 𝟙 Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ((𝟙 Y' ⊗ 𝟙 X) ⊗ i.inv) ≫ (ε_ X Y' ⊗ 𝟙 Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| ((𝟙 Y' ⊗ 𝟙 X) ⊗ i.inv) ≫ (ε_ X Y' ⊗ 𝟙 Y)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 Y' ⊗ η_ X Y'
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ Y' X Y').inv
[PROOFSTEP]
rw [tensor_id, id_tensor_comp_tensor_id, ← tensor_id_comp_id_tensor]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (𝟙 Y' ⊗ η_ X Y') ≫ (α_ Y' X Y').inv ≫ (ε_ X Y' ⊗ 𝟙 Y') ≫ (𝟙 (𝟙_ C) ⊗ i.inv) =
    (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 2 4 => rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ η_ X Y') ≫ (α_ Y' X Y').inv ≫ (ε_ X Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ η_ X Y') ≫ (α_ Y' X Y').inv ≫ (ε_ X Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 Y' ⊗ η_ X Y') ≫ (α_ Y' X Y').inv ≫ (ε_ X Y' ⊗ 𝟙 Y')
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom ⊗ 𝟙 (𝟙_ C)
[PROOFSTEP]
rw [coevaluation_evaluation]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ ((ρ_ Y').hom ≫ (λ_ Y').inv) ≫ (𝟙 (𝟙_ C) ⊗ i.inv) = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 1 2 => rw [rightUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (ρ_ Y').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (ρ_ Y').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (i.hom ⊗ 𝟙 (𝟙_ C)) ≫ (ρ_ Y').hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 (𝟙_ C) ⊗ i.inv
[PROOFSTEP]
rw [rightUnitor_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (((ρ_ Y).hom ≫ i.hom) ≫ (λ_ Y').inv) ≫ (𝟙 (𝟙_ C) ⊗ i.inv) = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
slice_lhs 3 4 => rw [← leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv ≫ (𝟙 (𝟙_ C) ⊗ i.inv)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (ρ_ Y).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom
[PROOFSTEP]
rw [← leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv ≫ (𝟙 (𝟙_ C) ⊗ i.inv)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (ρ_ Y).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom
[PROOFSTEP]
rw [← leftUnitor_inv_naturality]
[GOAL]
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (λ_ Y').inv ≫ (𝟙 (𝟙_ C) ⊗ i.inv)
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (ρ_ Y).hom
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| i.hom
[PROOFSTEP]
rw [← leftUnitor_inv_naturality]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (ρ_ Y).hom ≫ i.hom ≫ i.inv ≫ (λ_ Y).inv = (ρ_ Y).hom ≫ (λ_ Y).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (η_ X Y' ≫ (𝟙 X ⊗ i.inv) ⊗ 𝟙 X) ≫ (α_ X Y X).hom ≫ (𝟙 X ⊗ (i.hom ⊗ 𝟙 X) ≫ ε_ X Y') = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
rw [id_tensor_comp, comp_tensor_id]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ ((η_ X Y' ⊗ 𝟙 X) ≫ ((𝟙 X ⊗ i.inv) ⊗ 𝟙 X)) ≫ (α_ X Y X).hom ≫ (𝟙 X ⊗ i.hom ⊗ 𝟙 X) ≫ (𝟙 X ⊗ ε_ X Y') =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
simp only [Iso.inv_hom_id_assoc, associator_conjugation, Category.assoc]
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (η_ X Y' ⊗ 𝟙 X) ≫ (α_ X Y' X).hom ≫ (𝟙 X ⊗ i.inv ⊗ 𝟙 X) ≫ (𝟙 X ⊗ i.hom ⊗ 𝟙 X) ≫ (𝟙 X ⊗ ε_ X Y') =
    (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
slice_lhs 3 4 =>
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 X ⊗ i.inv ⊗ 𝟙 X) ≫ (𝟙 X ⊗ i.hom ⊗ 𝟙 X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 X ⊗ ε_ X Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| η_ X Y' ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ X Y' X).hom
[PROOFSTEP]
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 X ⊗ i.inv ⊗ 𝟙 X) ≫ (𝟙 X ⊗ i.hom ⊗ 𝟙 X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 X ⊗ ε_ X Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| η_ X Y' ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ X Y' X).hom
[PROOFSTEP]
  rw [← tensor_comp]
  simp
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (𝟙 X ⊗ i.inv ⊗ 𝟙 X) ≫ (𝟙 X ⊗ i.hom ⊗ 𝟙 X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 X ⊗ ε_ X Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| η_ X Y' ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ X Y' X).hom
[PROOFSTEP]
rw [← tensor_comp]
[GOAL]
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 X ≫ 𝟙 X ⊗ (i.inv ⊗ 𝟙 X) ≫ (i.hom ⊗ 𝟙 X)
case a.a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| 𝟙 X ⊗ ε_ X Y'
case a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| η_ X Y' ⊗ 𝟙 X
case a.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
| (α_ X Y' X).hom
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
X Y Y' : C
inst✝ : ExactPairing X Y'
i : Y ≅ Y'
⊢ (η_ X Y' ⊗ 𝟙 X) ≫ (α_ X Y' X).hom ≫ 𝟙 (X ⊗ Y' ⊗ X) ≫ (𝟙 X ⊗ ε_ X Y') = (λ_ X).hom ≫ (ρ_ X).inv
[PROOFSTEP]
simp
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y₁ Y₂ : C
p₁ : ExactPairing X Y₁
p₂ : ExactPairing X Y₂
⊢ 𝟙 Xᘁ ≫ 𝟙 Xᘁ = 𝟙 Y₁
[PROOFSTEP]
rw [← @comp_rightAdjointMate C _ _ X X X ⟨Y₁⟩ ⟨Y₂⟩ ⟨Y₁⟩, Category.comp_id, @rightAdjointMate_id _ _ _ _ ⟨Y₁⟩]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y₁ Y₂ : C
p₁ : ExactPairing X Y₁
p₂ : ExactPairing X Y₂
⊢ 𝟙 Xᘁ = 𝟙 Y₁
[PROOFSTEP]
rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y₁ Y₂ : C
p₁ : ExactPairing X Y₁
p₂ : ExactPairing X Y₂
⊢ 𝟙 Xᘁ ≫ 𝟙 Xᘁ = 𝟙 Y₂
[PROOFSTEP]
rw [← @comp_rightAdjointMate C _ _ X X X ⟨Y₂⟩ ⟨Y₁⟩ ⟨Y₂⟩, Category.comp_id, @rightAdjointMate_id _ _ _ _ ⟨Y₂⟩]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y₁ Y₂ : C
p₁ : ExactPairing X Y₁
p₂ : ExactPairing X Y₂
⊢ 𝟙 Xᘁ = 𝟙 Y₂
[PROOFSTEP]
rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X₁ X₂ Y : C
p₁ : ExactPairing X₁ Y
p₂ : ExactPairing X₂ Y
⊢ ((ᘁ𝟙 Y) ≫ ᘁ𝟙 Y) = 𝟙 X₁
[PROOFSTEP]
rw [← @comp_leftAdjointMate C _ _ Y Y Y ⟨X₁⟩ ⟨X₂⟩ ⟨X₁⟩, Category.comp_id, @leftAdjointMate_id _ _ _ _ ⟨X₁⟩]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X₁ X₂ Y : C
p₁ : ExactPairing X₁ Y
p₂ : ExactPairing X₂ Y
⊢ 𝟙 ᘁY = 𝟙 X₁
[PROOFSTEP]
rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X₁ X₂ Y : C
p₁ : ExactPairing X₁ Y
p₂ : ExactPairing X₂ Y
⊢ ((ᘁ𝟙 Y) ≫ ᘁ𝟙 Y) = 𝟙 X₂
[PROOFSTEP]
rw [← @comp_leftAdjointMate C _ _ Y Y Y ⟨X₂⟩ ⟨X₁⟩ ⟨X₂⟩, Category.comp_id, @leftAdjointMate_id _ _ _ _ ⟨X₂⟩]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X₁ X₂ Y : C
p₁ : ExactPairing X₁ Y
p₂ : ExactPairing X₂ Y
⊢ 𝟙 ᘁY = 𝟙 X₂
[PROOFSTEP]
rfl
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y : C
p : ExactPairing X Y
⊢ rightDualIso p p = Iso.refl Y
[PROOFSTEP]
ext
[GOAL]
case w
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y : C
p : ExactPairing X Y
⊢ (rightDualIso p p).hom = (Iso.refl Y).hom
[PROOFSTEP]
simp only [rightDualIso, Iso.refl_hom, @rightAdjointMate_id _ _ _ _ ⟨Y⟩]
[GOAL]
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y : C
p : ExactPairing X Y
⊢ leftDualIso p p = Iso.refl X
[PROOFSTEP]
ext
[GOAL]
case w
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y : C
p : ExactPairing X Y
⊢ (leftDualIso p p).hom = (Iso.refl X).hom
[PROOFSTEP]
simp only [leftDualIso, Iso.refl_hom, @leftAdjointMate_id _ _ _ _ ⟨X⟩]