-- Mathlib/CategoryTheory/Monoidal/Hopf_.lean
theorem mul_antipode₂ (A : Hopf_ C) :
    (A.X.comul.hom ⊗ A.X.comul.hom) ≫
      (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).hom ≫
      A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv ≫
      A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ▷ A.X.X.X ≫
      (α_ A.X.X.X (A.X.X.X ⊗ A.X.X.X) A.X.X.X).inv ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).inv ▷ A.X.X.X ≫
      A.X.X.mul ▷ A.X.X.X ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
      A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫
      A.X.X.X ◁ (A.antipode ⊗ A.antipode) ≫
      A.X.X.X ◁ A.X.X.mul ≫ A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Proof state:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
        A.X.X.X ◁ A.antipode ▷ A.X.X.X ≫
          ((A.X.X.X ◁ A.X.X.X ◁ A.X.counit.hom ≫ A.X.X.X ◁ (β_ A.X.X.X (𝟙_ (Mon_ C)).X).hom) ≫
              A.X.X.X ◁ (λ_ A.X.X.X).hom) ≫
            A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Tactic:
rw [← associator_naturality_middle_assoc]

Result:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (A.X.X.X ◁ A.antipode) ▷ A.X.X.X ≫
        (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
          ((A.X.X.X ◁ A.X.X.X ◁ A.X.counit.hom ≫ A.X.X.X ◁ (β_ A.X.X.X (𝟙_ (Mon_ C)).X).hom) ≫
              A.X.X.X ◁ (λ_ A.X.X.X).hom) ≫
            A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Proof state:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ (A.X.comul.hom ▷ A.X.X.X ≫ (A.X.X ⊗ A.X.X).X ◁ A.X.comul.hom) ≫
      (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).hom ≫
        A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv ≫
          A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ▷ A.X.X.X ≫
            A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
              (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).inv ≫
                ((α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).hom ≫
                    A.X.X.X ◁ A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫ (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).inv) ≫
                  (A.X.X.X ⊗ A.X.X.X) ◁ (A.antipode ⊗ A.antipode) ≫
                    (α_ (A.X.X.X ⊗ A.X.X.X) A.X.X.X A.X.X.X).inv ≫
                      ((α_ A.X.X.X A.X.X.X A.X.X.X).hom ▷ A.X.X.X ≫
                          (A.X.X.X ◁ A.X.X.mul) ▷ A.X.X.X ≫ A.X.X.mul ▷ A.X.X.X) ≫
                        A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Tactic:
slice_lhs 7 8 =>
  rw [Iso.inv_hom_id]

Result:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (A.X.X ⊗ A.X.X).X ◁ A.X.comul.hom ≫
        (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).hom ≫
          A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv ≫
            A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ▷ A.X.X.X ≫
              A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
                (((((((𝟙 (A.X.X.X ⊗ A.X.X.X ⊗ A.X.X.X ⊗ A.X.X.X) ≫ A.X.X.X ◁ A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom) ≫
                              (α_ A.X.X.X A.X.X.X (A.X.X.X ⊗ A.X.X.X)).inv) ≫
                            (A.X.X.X ⊗ A.X.X.X) ◁ (A.antipode ⊗ A.antipode)) ≫
                          (α_ (A.X.X.X ⊗ A.X.X.X) A.X.X.X A.X.X.X).inv) ≫
                        (α_ A.X.X.X A.X.X.X A.X.X.X).hom ▷ A.X.X.X) ≫
                      (A.X.X.X ◁ A.X.X.mul) ▷ A.X.X.X) ≫
                    A.X.X.mul ▷ A.X.X.X) ≫
                  A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Proof state:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
        A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫
          ((((((A.X.X.X ◁ A.X.X.X ◁ A.antipode ≫ A.X.X.X ◁ A.X.comul.hom ▷ A.X.X.X) ≫
                      A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).hom) ≫
                    A.X.X.X ◁ A.X.X.X ◁ A.antipode ▷ A.X.X.X) ≫
                  A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv) ≫
                A.X.X.X ◁ A.X.X.mul ▷ A.X.X.X) ≫
              A.X.X.X ◁ A.X.X.mul) ≫
            A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Tactic:
slice_lhs 5 9 =>
  simp only [← MonoidalCategory.whiskerLeft_comp]
  rw [associator_inv_naturality_middle_assoc, Iso.hom_inv_id_assoc]
  simp only [← comp_whiskerRight]
  rw [antipode_right]
  simp only [comp_whiskerRight]
  simp only [MonoidalCategory.whiskerLeft_comp]

Result:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
        A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫
          A.X.X.X ◁ A.X.X.X ◁ A.antipode ≫
            ((A.X.X.X ◁ A.X.counit.hom ▷ A.X.X.X ≫ A.X.X.X ◁ A.X.X.one ▷ A.X.X.X) ≫ A.X.X.X ◁ A.X.X.mul) ≫ A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Proof state:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (A.X.X.X ◁ A.antipode) ▷ A.X.X.X ≫ (A.X.X.X ⊗ A.X.X.X) ◁ A.X.counit.hom ≫ A.X.X.mul ▷ 𝟙_ C ≫ (ρ_ A.X.X.X).hom =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Tactic:
slice_lhs 3 4 =>
  rw [whisker_exchange]

Result:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (A.X.X.X ◁ A.antipode) ▷ A.X.X.X ≫ (A.X.X.mul ▷ A.X.X.X ≫ A.X.X.X ◁ A.X.counit.hom) ≫ (ρ_ A.X.X.X).hom =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Proof state:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
        ((((((A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫ A.X.X.X ◁ A.X.comul.hom ▷ A.X.X.X) ≫
                    A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).hom) ≫
                  A.X.X.X ◁ A.X.X.X ◁ (A.X.X.X ◁ A.antipode ≫ A.antipode ▷ A.X.X.X)) ≫
                A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv) ≫
              A.X.X.X ◁ A.X.X.mul ▷ A.X.X.X) ≫
            A.X.X.X ◁ A.X.X.mul) ≫
          A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one

Tactic:
simp only [MonoidalCategory.whiskerLeft_comp]

Result:
C : Type u₁
inst✝² : Category.{v₁, u₁} C
inst✝¹ : MonoidalCategory C
inst✝ : BraidedCategory C
A : Hopf_ C
⊢ A.X.comul.hom ▷ A.X.X.X ≫
      (α_ A.X.X.X A.X.X.X A.X.X.X).hom ≫
        ((((((A.X.X.X ◁ (β_ A.X.X.X A.X.X.X).hom ≫ A.X.X.X ◁ A.X.comul.hom ▷ A.X.X.X) ≫
                    A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).hom) ≫
                  A.X.X.X ◁ A.X.X.X ◁ A.X.X.X ◁ A.antipode ≫ A.X.X.X ◁ A.X.X.X ◁ A.antipode ▷ A.X.X.X) ≫
                A.X.X.X ◁ (α_ A.X.X.X A.X.X.X A.X.X.X).inv) ≫
              A.X.X.X ◁ A.X.X.mul ▷ A.X.X.X) ≫
            A.X.X.X ◁ A.X.X.mul) ≫
          A.X.X.mul =
    (A.X.counit.hom ⊗ A.X.counit.hom) ≫ (λ_ (𝟙_ C)).hom ≫ A.X.X.one