# mathlibdocumentation

category_theory.monoidal.center

# Half braidings and the Drinfeld center of a monoidal category #

We define center C to be pairs ⟨X, b⟩, where X : C and b is a half-braiding on X.

We show that center C is braided monoidal, and provide the monoidal functor center.forget from center C back to C.

## Future work #

Verifying the various axioms here is done by tedious rewriting. Using the slice tactic may make the proofs marginally more readable.

More exciting, however, would be to make possible one of the following options:

1. Integration with homotopy.io / globular to give "picture proofs".
2. The monoidal coherence theorem, so we can ignore associators (after which most of these proofs are trivial; I'm unsure if the monoidal coherence theorem is even usable in dependent type theory).
3. Automating these proofs using rewrite_search or some relative.
@[nolint]
structure category_theory.half_braiding {C : Type u₁} (X : C) :
Type (max u₁ v₁)

A half-braiding on X : C is a family of isomorphisms X ⊗ U ≅ U ⊗ X, monoidally natural in U : C.

Thinking of C as a 2-category with a single 0-morphism, these are the same as natural transformations (in the pseudo- sense) of the identity 2-functor on C, which send the unique 0-morphism to X.

Instances for category_theory.half_braiding
• category_theory.half_braiding.has_sizeof_inst
@[simp]
theorem category_theory.half_braiding.monoidal {C : Type u₁} {X : C} (self : category_theory.half_braiding X) (U U' : C) :
(self.β (U U')).hom = (α_ X U U').inv ((self.β U).hom 𝟙 U') (α_ U X U').hom (𝟙 U (self.β U').hom) (α_ U U' X).inv
theorem category_theory.half_braiding.monoidal_assoc {C : Type u₁} {X : C} (self : category_theory.half_braiding X) (U U' : C) {X' : C} (f' : (U U') X X') :
(self.β (U U')).hom f' = (α_ X U U').inv ((self.β U).hom 𝟙 U') (α_ U X U').hom (𝟙 U (self.β U').hom) (α_ U U' X).inv f'
@[simp]
theorem category_theory.half_braiding.naturality {C : Type u₁} {X : C} (self : category_theory.half_braiding X) {U U' : C} (f : U U') :
(𝟙 X f) (self.β U').hom = (self.β U).hom (f 𝟙 X)
@[simp]
theorem category_theory.half_braiding.naturality_assoc {C : Type u₁} {X : C} (self : category_theory.half_braiding X) {U U' : C} (f : U U') {X' : C} (f' : U' X X') :
(𝟙 X f) (self.β U').hom f' = (self.β U).hom (f 𝟙 X) f'
@[nolint]
def category_theory.center (C : Type u₁)  :
Type (max u₁ v₁)

The Drinfeld center of a monoidal category C has as objects pairs ⟨X, b⟩, where X : C and b is a half-braiding on X.

Equations
• = Σ (X : C),
Instances for category_theory.center
theorem category_theory.center.hom.ext {C : Type u₁} {_inst_1 : category_theory.category C} {_inst_2 : category_theory.monoidal_category C} {X Y : category_theory.center C} (x y : X.hom Y) (h : x.f = y.f) :
x = y
@[nolint, ext]
structure category_theory.center.hom {C : Type u₁} (X Y : category_theory.center C) :
Type v₁

A morphism in the Drinfeld center of C.

Instances for category_theory.center.hom
• category_theory.center.hom.has_sizeof_inst
theorem category_theory.center.hom.ext_iff {C : Type u₁} {_inst_1 : category_theory.category C} {_inst_2 : category_theory.monoidal_category C} {X Y : category_theory.center C} (x y : X.hom Y) :
x = y x.f = y.f
@[simp]
theorem category_theory.center.hom.comm {C : Type u₁} {X Y : category_theory.center C} (self : X.hom Y) (U : C) :
(self.f 𝟙 U) (Y.snd.β U).hom = (X.snd.β U).hom (𝟙 U self.f)
@[simp]
theorem category_theory.center.hom.comm_assoc {C : Type u₁} {X Y : category_theory.center C} (self : X.hom Y) (U : C) {X' : C} (f' : U Y.fst X') :
(self.f 𝟙 U) (Y.snd.β U).hom f' = (X.snd.β U).hom (𝟙 U self.f) f'
@[protected, instance]
Equations
@[simp]
theorem category_theory.center.id_f {C : Type u₁} (X : category_theory.center C) :
(𝟙 X).f = 𝟙 X.fst
@[simp]
theorem category_theory.center.comp_f {C : Type u₁} {X Y Z : category_theory.center C} (f : X Y) (g : Y Z) :
(f g).f = f.f g.f
@[ext]
theorem category_theory.center.ext {C : Type u₁} {X Y : category_theory.center C} (f g : X Y) (w : f.f = g.f) :
f = g
@[simp]
theorem category_theory.center.iso_mk_hom {C : Type u₁} {X Y : category_theory.center C} (f : X Y)  :
noncomputable def category_theory.center.iso_mk {C : Type u₁} {X Y : category_theory.center C} (f : X Y)  :
X Y

Construct an isomorphism in the Drinfeld center from a morphism whose underlying morphism is an isomorphism.

Equations
@[simp]
theorem category_theory.center.iso_mk_inv_f {C : Type u₁} {X Y : category_theory.center C} (f : X Y)  :
@[protected, instance]
def category_theory.center.is_iso_of_f_is_iso {C : Type u₁} {X Y : category_theory.center C} (f : X Y)  :

Auxiliary definition for the monoidal_category instance on center C.

Equations
@[simp]
theorem category_theory.center.tensor_obj_fst {C : Type u₁} (X Y : category_theory.center C) :
@[simp]
theorem category_theory.center.tensor_obj_snd_β {C : Type u₁} (X Y : category_theory.center C) (U : C) :
(X.tensor_obj Y).snd.β U = α_ X.fst Y.fst U ≪≫ Y.snd.β U) ≪≫ (α_ X.fst U Y.fst).symm ≪≫ (X.snd.β U ≪≫ α_ U X.fst Y.fst
@[simp]
theorem category_theory.center.tensor_hom_f {C : Type u₁} {X₁ Y₁ X₂ Y₂ : category_theory.center C} (f : X₁ Y₁) (g : X₂ Y₂) :
= f.f g.f
def category_theory.center.tensor_hom {C : Type u₁} {X₁ Y₁ X₂ Y₂ : category_theory.center C} (f : X₁ Y₁) (g : X₂ Y₂) :
X₁.tensor_obj X₂ Y₁.tensor_obj Y₂

Auxiliary definition for the monoidal_category instance on center C.

Equations

Auxiliary definition for the monoidal_category instance on center C.

Equations
@[simp]
theorem category_theory.center.tensor_unit_fst {C : Type u₁}  :
@[simp]
theorem category_theory.center.tensor_unit_snd_β {C : Type u₁} (U : C) :
noncomputable def category_theory.center.associator {C : Type u₁} (X Y Z : category_theory.center C) :

Auxiliary definition for the monoidal_category instance on center C.

Equations
noncomputable def category_theory.center.left_unitor {C : Type u₁} (X : category_theory.center C) :

Auxiliary definition for the monoidal_category instance on center C.

Equations
noncomputable def category_theory.center.right_unitor {C : Type u₁} (X : category_theory.center C) :

Auxiliary definition for the monoidal_category instance on center C.

Equations
@[protected, instance]
noncomputable def category_theory.center.category_theory.monoidal_category {C : Type u₁}  :
Equations
@[simp]
theorem category_theory.center.tensor_fst {C : Type u₁} (X Y : category_theory.center C) :
(X Y).fst = X.fst Y.fst
@[simp]
theorem category_theory.center.tensor_β {C : Type u₁} (X Y : category_theory.center C) (U : C) :
(X Y).snd.β U = α_ X.fst Y.fst U ≪≫ Y.snd.β U) ≪≫ (α_ X.fst U Y.fst).symm ≪≫ (X.snd.β U ≪≫ α_ U X.fst Y.fst
@[simp]
theorem category_theory.center.tensor_f {C : Type u₁} {X₁ Y₁ X₂ Y₂ : category_theory.center C} (f : X₁ Y₁) (g : X₂ Y₂) :
(f g).f = f.f g.f
@[simp]
theorem category_theory.center.tensor_unit_β {C : Type u₁} (U : C) :
@[simp]
theorem category_theory.center.associator_hom_f {C : Type u₁} (X Y Z : category_theory.center C) :
(α_ X Y Z).hom.f = (α_ X.fst Y.fst Z.fst).hom
@[simp]
theorem category_theory.center.associator_inv_f {C : Type u₁} (X Y Z : category_theory.center C) :
(α_ X Y Z).inv.f = (α_ X.fst Y.fst Z.fst).inv
@[simp]
theorem category_theory.center.left_unitor_hom_f {C : Type u₁} (X : category_theory.center C) :
(λ_ X).hom.f = (λ_ X.fst).hom
@[simp]
theorem category_theory.center.left_unitor_inv_f {C : Type u₁} (X : category_theory.center C) :
(λ_ X).inv.f = (λ_ X.fst).inv
@[simp]
@[simp]

The forgetful monoidal functor from the Drinfeld center to the original category.

Equations
@[simp]
@[simp]
@[protected, instance]
@[simp]
theorem category_theory.center.braiding_hom_f {C : Type u₁} (X Y : category_theory.center C) :
(X.braiding Y).hom.f = (X.snd.β Y.fst).hom
noncomputable def category_theory.center.braiding {C : Type u₁} (X Y : category_theory.center C) :
X Y Y X

Auxiliary definition for the braided_category instance on center C.

Equations
@[simp]
theorem category_theory.center.braiding_inv_f {C : Type u₁} (X Y : category_theory.center C) :
(X.braiding Y).inv.f = (X.snd.β Y.fst).inv
@[protected, instance]
noncomputable def category_theory.center.braided_category_center {C : Type u₁}  :
Equations
def category_theory.center.of_braided_obj {C : Type u₁} (X : C) :

Auxiliary construction for of_braided.

Equations
@[simp]
theorem category_theory.center.of_braided_obj_fst {C : Type u₁} (X : C) :
@[simp]
theorem category_theory.center.of_braided_obj_snd_β {C : Type u₁} (X Y : C) :
= β_ X Y
noncomputable def category_theory.center.of_braided (C : Type u₁)  :

The functor lifting a braided category to its center, using the braiding as the half-braiding.

Equations
@[simp]
@[simp]
theorem category_theory.center.of_braided_to_lax_monoidal_functor_μ_f (C : Type u₁) (X Y : C) :
= 𝟙 ({obj := , map := λ (X X' : C) (f : X X'), {f := f, comm' := _}, map_id' := _, map_comp' := _}.obj X {obj := , map := λ (X X' : C) (f : X X'), {f := f, comm' := _}, map_id' := _, map_comp' := _}.obj Y).fst
@[simp]
theorem category_theory.center.of_braided_to_lax_monoidal_functor_to_functor_map_f (C : Type u₁) (X X' : C) (f : X X') :
@[simp]