Theorem: Comon_.tensorObj_comul
File: Mathlib/CategoryTheory/Monoidal/Comon_.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ (A ⊗ B).comul = (A.comul ⊗ B.comul) ≫ tensor_μ C (A.X, A.X) (B.X, B.X)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ (A.comul ⊗ B.comul) ≫ (tensor_μ Cᵒᵖ (op A.X, op B.X) (op A.X, op B.X)).unop =
    (A.comul ⊗ B.comul) ≫ tensor_μ C (A.X, A.X) (B.X, B.X)
tactic: rw [tensorObj_comul']
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ (A.comul ⊗ B.comul) ≫ (tensor_μ Cᵒᵖ (op A.X, op B.X) (op A.X, op B.X)).unop =
    (A.comul ⊗ B.comul) ≫ tensor_μ C (A.X, A.X) (B.X, B.X)
state_after: case e_a.e_f
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ tensor_μ Cᵒᵖ (op A.X, op B.X) (op A.X, op B.X) =
    op
      ((α_ (A.X, A.X).1 (A.X, A.X).2 ((B.X, B.X).1 ⊗ (B.X, B.X).2)).hom ≫
        (A.X, A.X).1 ◁ (α_ (A.X, A.X).2 (B.X, B.X).1 (B.X, B.X).2).inv ≫
          (A.X, A.X).1 ◁ (β_ (A.X, A.X).2 (B.X, B.X).1).hom ▷ (B.X, B.X).2 ≫
            (A.X, A.X).1 ◁ (α_ (B.X, B.X).1 (A.X, A.X).2 (B.X, B.X).2).hom ≫
              (α_ (A.X, A.X).1 (B.X, B.X).1 ((A.X, A.X).2 ⊗ (B.X, B.X).2)).inv)
tactic: congr
state_before: case e_a.e_f
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ tensor_μ Cᵒᵖ (op A.X, op B.X) (op A.X, op B.X) =
    op
      ((α_ (A.X, A.X).1 (A.X, A.X).2 ((B.X, B.X).1 ⊗ (B.X, B.X).2)).hom ≫
        (A.X, A.X).1 ◁ (α_ (A.X, A.X).2 (B.X, B.X).1 (B.X, B.X).2).inv ≫
          (A.X, A.X).1 ◁ (β_ (A.X, A.X).2 (B.X, B.X).1).hom ▷ (B.X, B.X).2 ≫
            (A.X, A.X).1 ◁ (α_ (B.X, B.X).1 (A.X, A.X).2 (B.X, B.X).2).hom ≫
              (α_ (A.X, A.X).1 (B.X, B.X).1 ((A.X, A.X).2 ⊗ (B.X, B.X).2)).inv)
state_after: case e_a.e_f
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ (α_ (op A.X) (op B.X) (op A.X ⊗ op B.X)).hom ≫
      op A.X ◁ (α_ (op B.X) (op A.X) (op B.X)).inv ≫
        op A.X ◁ (β_ (op B.X) (op A.X)).hom ▷ op B.X ≫
          op A.X ◁ (α_ (op A.X) (op B.X) (op B.X)).hom ≫ (α_ (op A.X) (op A.X) (op B.X ⊗ op B.X)).inv =
    op
      ((α_ A.X A.X (B.X ⊗ B.X)).hom ≫
        A.X ◁ (α_ A.X B.X B.X).inv ≫
          A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv)
tactic: simp only [tensor_μ, unop_tensorObj, unop_op]
state_before: case e_a.e_f
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ (α_ (op A.X) (op B.X) (op A.X ⊗ op B.X)).hom ≫
      op A.X ◁ (α_ (op B.X) (op A.X) (op B.X)).inv ≫
        op A.X ◁ (β_ (op B.X) (op A.X)).hom ▷ op B.X ≫
          op A.X ◁ (α_ (op A.X) (op B.X) (op B.X)).hom ≫ (α_ (op A.X) (op A.X) (op B.X ⊗ op B.X)).inv =
    op
      ((α_ A.X A.X (B.X ⊗ B.X)).hom ≫
        A.X ◁ (α_ A.X B.X B.X).inv ≫
          A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv)
state_after: case e_a.e_f.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ ((α_ (op A.X) (op B.X) (op A.X ⊗ op B.X)).hom ≫
        op A.X ◁ (α_ (op B.X) (op A.X) (op B.X)).inv ≫
          op A.X ◁ (β_ (op B.X) (op A.X)).hom ▷ op B.X ≫
            op A.X ◁ (α_ (op A.X) (op B.X) (op B.X)).hom ≫ (α_ (op A.X) (op A.X) (op B.X ⊗ op B.X)).inv).unop =
    Quiver.Hom.unop
      (op
        ((α_ A.X A.X (B.X ⊗ B.X)).hom ≫
          A.X ◁ (α_ A.X B.X B.X).inv ≫
            A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv))
tactic: apply Quiver.Hom.unop_inj
state_before: case e_a.e_f.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ ((α_ (op A.X) (op B.X) (op A.X ⊗ op B.X)).hom ≫
        op A.X ◁ (α_ (op B.X) (op A.X) (op B.X)).inv ≫
          op A.X ◁ (β_ (op B.X) (op A.X)).hom ▷ op B.X ≫
            op A.X ◁ (α_ (op A.X) (op B.X) (op B.X)).hom ≫ (α_ (op A.X) (op A.X) (op B.X ⊗ op B.X)).inv).unop =
    Quiver.Hom.unop
      (op
        ((α_ A.X A.X (B.X ⊗ B.X)).hom ≫
          A.X ◁ (α_ A.X B.X B.X).inv ≫
            A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv))
state_after: case e_a.e_f.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ ((((α_ A.X A.X (B.X ⊗ B.X)).hom ≫ A.X ◁ (α_ A.X B.X B.X).inv) ≫ A.X ◁ (β_ A.X B.X).hom ▷ B.X) ≫
        A.X ◁ (α_ B.X A.X B.X).hom) ≫
      (α_ A.X B.X (A.X ⊗ B.X)).inv =
    (α_ A.X A.X (B.X ⊗ B.X)).hom ≫
      A.X ◁ (α_ A.X B.X B.X).inv ≫
        A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv
tactic: dsimp [op_tensorObj, op_associator]
state_before: case e_a.e_f.a
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
M : Comon_ C
inst✝ : BraidedCategory C
A B : Comon_ C
⊢ ((((α_ A.X A.X (B.X ⊗ B.X)).hom ≫ A.X ◁ (α_ A.X B.X B.X).inv) ≫ A.X ◁ (β_ A.X B.X).hom ▷ B.X) ≫
        A.X ◁ (α_ B.X A.X B.X).hom) ≫
      (α_ A.X B.X (A.X ⊗ B.X)).inv =
    (α_ A.X A.X (B.X ⊗ B.X)).hom ≫
      A.X ◁ (α_ A.X B.X B.X).inv ≫
        A.X ◁ (β_ A.X B.X).hom ▷ B.X ≫ A.X ◁ (α_ B.X A.X B.X).hom ≫ (α_ A.X B.X (A.X ⊗ B.X)).inv
state_after: no goals
tactic: rw [Category.assoc, Category.assoc, Category.assoc]