Theorem: Mon_.mul_braiding
File: Mathlib/CategoryTheory/Monoidal/Mon_.lean

Proof steps:
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (X ⊗ Y).mul ≫ (β_ X.X Y.X).hom = ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫ (Y ⊗ X).mul
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ X.X Y.X (X.X ⊗ Y.X)).hom ≫
      X.X ◁ (α_ Y.X X.X Y.X).inv ≫
        X.X ◁ (β_ Y.X X.X).hom ▷ Y.X ≫
          X.X ◁ (β_ X.X Y.X).hom ▷ Y.X ≫
            (α_ X.X (Y.X ⊗ X.X) Y.X).inv ≫
              (α_ X.X Y.X X.X).inv ▷ Y.X ≫
                (β_ X.X Y.X).hom ▷ X.X ▷ Y.X ≫
                  (α_ (Y.X ⊗ X.X) X.X Y.X).hom ≫
                    (α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫
                      Y.X ◁ X.X ◁ (β_ X.X Y.X).hom ≫
                        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
                          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫
                            Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: simp only [monMonoidalStruct_tensorObj_X, tensor_mul, tensor_μ, Category.assoc,
    BraidedCategory.braiding_naturality, BraidedCategory.braiding_tensor_right,
    BraidedCategory.braiding_tensor_left, comp_whiskerRight, whisker_assoc,
    MonoidalCategory.whiskerLeft_comp, pentagon_assoc, pentagon_inv_hom_hom_hom_inv_assoc,
    Iso.inv_hom_id_assoc, whiskerLeft_hom_inv_assoc]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ X.X Y.X (X.X ⊗ Y.X)).hom ≫
      X.X ◁ (α_ Y.X X.X Y.X).inv ≫
        X.X ◁ (β_ Y.X X.X).hom ▷ Y.X ≫
          X.X ◁ (β_ X.X Y.X).hom ▷ Y.X ≫
            (α_ X.X (Y.X ⊗ X.X) Y.X).inv ≫
              (α_ X.X Y.X X.X).inv ▷ Y.X ≫
                (β_ X.X Y.X).hom ▷ X.X ▷ Y.X ≫
                  (α_ (Y.X ⊗ X.X) X.X Y.X).hom ≫
                    (α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫
                      Y.X ◁ X.X ◁ (β_ X.X Y.X).hom ≫
                        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
                          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫
                            Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ X.X Y.X (X.X ⊗ Y.X)).hom ≫
      X.X ◁ (α_ Y.X X.X Y.X).inv ≫
        ((((((((((X.X ◁ 𝟙 (Y.X ⊗ X.X) ▷ Y.X ≫ (α_ X.X (Y.X ⊗ X.X) Y.X).inv) ≫ (α_ X.X Y.X X.X).inv ▷ Y.X) ≫
                          (β_ X.X Y.X).hom ▷ X.X ▷ Y.X) ≫
                        (α_ (Y.X ⊗ X.X) X.X Y.X).hom) ≫
                      (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫
                    Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
                  Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
                Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
              Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
            (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
          (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: slice_lhs 3 4 =>
    -- We use symmetry here:
    rw [← MonoidalCategory.whiskerLeft_comp, ← comp_whiskerRight, SymmetricCategory.symmetry]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ X.X Y.X (X.X ⊗ Y.X)).hom ≫
      X.X ◁ (α_ Y.X X.X Y.X).inv ≫
        ((((((((((X.X ◁ 𝟙 (Y.X ⊗ X.X) ▷ Y.X ≫ (α_ X.X (Y.X ⊗ X.X) Y.X).inv) ≫ (α_ X.X Y.X X.X).inv ▷ Y.X) ≫
                          (β_ X.X Y.X).hom ▷ X.X ▷ Y.X) ≫
                        (α_ (Y.X ⊗ X.X) X.X Y.X).hom) ≫
                      (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫
                    Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
                  Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
                Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
              Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
            (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
          (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ (X.X ⊗ Y.X) X.X Y.X).inv ≫
      (β_ X.X Y.X).hom ▷ X.X ▷ Y.X ≫
        (α_ (Y.X ⊗ X.X) X.X Y.X).hom ≫
          (α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫
            Y.X ◁ X.X ◁ (β_ X.X Y.X).hom ≫
              Y.X ◁ (α_ X.X Y.X X.X).inv ≫
                Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫
                  Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: simp only [id_whiskerRight, MonoidalCategory.whiskerLeft_id, Category.id_comp, Category.assoc,
    pentagon_inv_assoc, Iso.hom_inv_id_assoc]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (α_ (X.X ⊗ Y.X) X.X Y.X).inv ≫
      (β_ X.X Y.X).hom ▷ X.X ▷ Y.X ≫
        (α_ (Y.X ⊗ X.X) X.X Y.X).hom ≫
          (α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫
            Y.X ◁ X.X ◁ (β_ X.X Y.X).hom ≫
              Y.X ◁ (α_ X.X Y.X X.X).inv ≫
                Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫
                  Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (((((((((β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫ (α_ (Y.X ⊗ X.X) X.X Y.X).inv) ≫ (α_ (Y.X ⊗ X.X) X.X Y.X).hom) ≫
                  (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫
                Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
              Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
            Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
          Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
        (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
      (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: slice_lhs 1 2 =>
    rw [← associator_inv_naturality_left]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (((((((((β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫ (α_ (Y.X ⊗ X.X) X.X Y.X).inv) ≫ (α_ (Y.X ⊗ X.X) X.X Y.X).hom) ≫
                  (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫
                Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
              Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
            Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
          Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
        (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
      (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((𝟙 ((Y.X ⊗ X.X) ⊗ X.X ⊗ Y.X) ≫ (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫ Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
                Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: slice_lhs 2 3 =>
    rw [Iso.inv_hom_id]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((𝟙 ((Y.X ⊗ X.X) ⊗ X.X ⊗ Y.X) ≫ (α_ Y.X X.X (X.X ⊗ Y.X)).hom) ≫ Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫
                Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫ Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: rw [Category.id_comp]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((α_ Y.X X.X (X.X ⊗ Y.X)).hom ≫ Y.X ◁ X.X ◁ (β_ X.X Y.X).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((Y.X ⊗ X.X) ◁ (β_ X.X Y.X).hom ≫ (α_ Y.X X.X (Y.X ⊗ X.X)).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: slice_lhs 2 3 =>
    rw [← associator_naturality_right]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (β_ X.X Y.X).hom ▷ (X.X ⊗ Y.X) ≫
      ((((((Y.X ⊗ X.X) ◁ (β_ X.X Y.X).hom ≫ (α_ Y.X X.X (Y.X ⊗ X.X)).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
              Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
            Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
          (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
        (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (((((((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫ (α_ Y.X X.X (Y.X ⊗ X.X)).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
            Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
          Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
        (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
      (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
tactic: slice_lhs 1 2 =>
    rw [← tensorHom_def]
state_before: C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : SymmetricCategory C
X Y : Mon_ C
⊢ (((((((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫ (α_ Y.X X.X (Y.X ⊗ X.X)).hom) ≫ Y.X ◁ (α_ X.X Y.X X.X).inv) ≫
            Y.X ◁ (β_ X.X Y.X).hom ▷ X.X) ≫
          Y.X ◁ (α_ Y.X X.X X.X).hom) ≫
        (α_ Y.X Y.X (X.X ⊗ X.X)).inv) ≫
      (Y.mul ⊗ X.mul) =
    ((β_ X.X Y.X).hom ⊗ (β_ X.X Y.X).hom) ≫
      (α_ Y.X X.X (Y.X ⊗ X.X)).hom ≫
        Y.X ◁ (α_ X.X Y.X X.X).inv ≫
          Y.X ◁ (β_ X.X Y.X).hom ▷ X.X ≫ Y.X ◁ (α_ Y.X X.X X.X).hom ≫ (α_ Y.X Y.X (X.X ⊗ X.X)).inv ≫ (Y.mul ⊗ X.mul)
state_after: no goals
tactic: simp only [Category.assoc]