/-- Auxiliary definition for the `MonoidalCategory` instance on `Center C`. -/
@[simps]
def tensorObj (X Y : Center C) : Center C :=
  ⟨X.1 ⊗ Y.1,
    { β := fun U =>
        α_ _ _ _ ≪≫
          (Iso.refl X.1 ⊗ Y.2.β U) ≪≫ (α_ _ _ _).symm ≪≫ (X.2.β U ⊗ Iso.refl Y.1) ≪≫ α_ _ _ _
      monoidal := fun U U' => by
        dsimp
        simp only [comp_tensor_id, id_tensor_comp, Category.assoc, HalfBraiding.monoidal]
        -- On the RHS, we'd like to commute `((X.snd.β U).hom ⊗ 𝟙 Y.fst) ⊗ 𝟙 U'`
        -- and `𝟙 U ⊗ 𝟙 X.fst ⊗ (Y.snd.β U').hom` past each other,
        -- but there are some associators we need to get out of the way first.
        slice_rhs 6 8 => rw [pentagon]
        slice_rhs 5 6 => rw [associator_naturality]
        slice_rhs 7 8 => rw [← associator_naturality]
        slice_rhs 6 7 =>
          rw [tensor_id, tensor_id, tensor_id_comp_id_tensor, ← id_tensor_comp_tensor_id,
            ← tensor_id, ← tensor_id]
        -- Now insert associators as needed to make the four half-braidings look identical
        slice_rhs 10 10 => rw [associator_inv_conjugation]
        slice_rhs 7 7 => rw [associator_inv_conjugation]
        slice_rhs 6 6 => rw [associator_conjugation]
        slice_rhs 3 3 => rw [associator_conjugation]
        -- Finish with an application of the coherence theorem.
        

Proof state:
C : Type u₁
inst✝¹ : Category.{v₁, u₁} C
inst✝ : MonoidalCategory C
X Y : Center C
U U' : C
⊢ (α_ X.fst Y.fst (U ⊗ U')).hom ≫
      (𝟙 X.fst ⊗ (α_ Y.fst U U').inv) ≫
        (𝟙 X.fst ⊗ (HalfBraiding.β Y.snd U).hom ⊗ 𝟙 U') ≫
          (𝟙 X.fst ⊗ (α_ U Y.fst U').hom) ≫
            (𝟙 X.fst ⊗ 𝟙 U ⊗ (HalfBraiding.β Y.snd U').hom) ≫
              (𝟙 X.fst ⊗ (α_ U U' Y.fst).inv) ≫
                (α_ X.fst (U ⊗ U') Y.fst).inv ≫
                  ((α_ X.fst U U').inv ⊗ 𝟙 Y.fst) ≫
                    (((HalfBraiding.β X.snd U).hom ⊗ 𝟙 U') ⊗ 𝟙 Y.fst) ≫
                      ((α_ U X.fst U').hom ⊗ 𝟙 Y.fst) ≫
                        ((𝟙 U ⊗ (HalfBraiding.β X.snd U').hom) ⊗ 𝟙 Y.fst) ≫
                          ((α_ U U' X.fst).inv ⊗ 𝟙 Y.fst) ≫ (α_ (U ⊗ U') X.fst Y.fst).hom =
    (α_ (X.fst ⊗ Y.fst) U U').inv ≫
      ((α_ X.fst Y.fst U).hom ⊗ 𝟙 U') ≫
        ((((((((((((((((α_ X.fst (Y.fst ⊗ U) U').hom ≫
                                        (𝟙 X.fst ⊗ (HalfBraiding.β Y.snd U).hom ⊗ 𝟙 U') ≫
                                          (α_ X.fst (U ⊗ Y.fst) U').inv) ≫
                                      ((α_ X.fst U Y.fst).inv ⊗ 𝟙 U')) ≫
                                    (α_ (X.fst ⊗ U) Y.fst U').hom) ≫
                                  (α_ X.fst U (Y.fst ⊗ U')).hom) ≫
                                (𝟙 X.fst ⊗ 𝟙 U ⊗ (HalfBraiding.β Y.snd U').hom)) ≫
                              (α_ X.fst U (U' ⊗ Y.fst)).inv) ≫
                            (α_ (X.fst ⊗ U) U' Y.fst).inv) ≫
                          (((HalfBraiding.β X.snd U).hom ⊗ 𝟙 U') ⊗ 𝟙 Y.fst)) ≫
                        (α_ (U ⊗ X.fst) U' Y.fst).hom) ≫
                      (α_ U X.fst (U' ⊗ Y.fst)).hom) ≫
                    (𝟙 U ⊗ (α_ X.fst U' Y.fst).inv)) ≫
                  (α_ U (X.fst ⊗ U') Y.fst).inv) ≫
                ((𝟙 U ⊗ (HalfBraiding.β X.snd U').hom) ⊗ 𝟙 Y.fst)) ≫
              (α_ U (U' ⊗ X.fst) Y.fst).hom) ≫
            (𝟙 U ⊗ (α_ U' X.fst Y.fst).hom)) ≫
          (α_ U U' (X.fst ⊗ Y.fst)).inv

Next tactic:
coherence