The Center Construction

Let $\mathcal C$ be a monoidal category. The Drinfeld center of $\mathcal C$ is a category whose objects are tuples $(X,\gamma)$ such that $X \in \mathcal C$ and $\{\gamma_Z \colon X \otimes Z \to Z \otimes X \mid Z \in \mathcal C\}$ is a natural isomorphism such that

\begin{tikzcd}
	& (Y \otimes X) \otimes Z \ar[r, "a_{Y,X,Z}"] & Y \otimes (X \otimes Z) \ar[dr, "\id_Y \otimes \gamma_X(Z)"] & \\
        (X \otimes Y) \otimes Z \ar[ur, "\gamma_X(Y) \otimes \id_Z"] \ar[dr, "a_{X,Y,Z}"] & & & Y \otimes (Z \otimes X) \\
            & X \otimes (Y \otimes Z) \ar[r, "\gamma_X(Y \otimes Z)"] & (Y \otimes Z) \otimes X \ar[ur, "a_{Y,Z,X}"]  &
\end{tikzcd}

commutes for all $Y,Z \in \mathcal C$ and $\gamma_{\mathbb 1} = \mathrm{id}_X$.

Computing the Center

The Drinfeld center can be computed explicitely for reasonably small fusion categories using the algorithm described in [6]. Any fusion category implementing the corresponding interface is supported.

Example

I = ising_category()
C = center(I)
simples(C)

# output
5-element Vector{CenterObject}:
 Central object: 𝟙
 Central object: 𝟙
 Central object: 𝟙 ⊕ χ
 Central object: 2⋅χ
 Central object: 4⋅X

Centers of the AnyonWiki

Currently we are working at the task to compute all centers of multiplicity free fusion categories up to rank seven. At the moment all centers to rank 4 are available and some of rank five. Access them via

C = anyonwiki_center(3,1,0,2,1,1,1)

print_multiplication_table(C)

# output
8×8 Matrix{String}:
 "(𝟙, γ)"        "(X2, γ)"       …  "(X2 ⊕ X3, γ)"
 "(X2, γ)"       "(𝟙, γ)"           "(𝟙 ⊕ X3, γ)"
 "(𝟙 ⊕ X2, γ)"   "(𝟙 ⊕ X2, γ)"      "(𝟙 ⊕ X3, γ) ⊕ (X2 ⊕ X3, γ)"
 "(X3, γ1)"      "(X3, γ1)"         "(𝟙 ⊕ X3, γ) ⊕ (X2 ⊕ X3, γ)"
 "(X3, γ2)"      "(X3, γ2)"         "(𝟙 ⊕ X3, γ) ⊕ (X2 ⊕ X3, γ)"
 "(X3, γ3)"      "(X3, γ3)"      …  "(𝟙 ⊕ X3, γ) ⊕ (X2 ⊕ X3, γ)"
 "(𝟙 ⊕ X3, γ)"   "(X2 ⊕ X3, γ)"     "(X2, γ) ⊕ (𝟙 ⊕ X2, γ) ⊕ (X3, γ1) ⊕ (X3, γ2) ⊕ (X3, γ3)"
 "(X2 ⊕ X3, γ)"  "(𝟙 ⊕ X3, γ)"      "(𝟙, γ) ⊕ (𝟙 ⊕ X2, γ) ⊕ (X3, γ1) ⊕ (X3, γ2) ⊕ (X3, γ3)"
AbstractAlgebra.is_isomorphicMethod
is_isomorphic(X::CenterObject, Y::CenterObject)

Check if X≃Y. Return (true, m) where mis an isomorphism if true, else return (false,nothing).

source
Base.invMethod
inv(f::CenterMorphism)

Return the inverse of fif possible.

source
Base.oneMethod
one(C::CenterCategory)

Return the one object of C.

source
Base.zeroMethod
zero(C::CenterCategory)

Return the zero object of C.

source
Hecke.cokernelMethod
cokernel(f::CenterMorphism)

Return a tuple (C,c) where Cis the cokernel object and cis the projection.

source
Hecke.dualMethod
dual(X::CenterObject)

Return the (left) dual object of X.

source
Hecke.is_centralFunction
is_central(Z::Object)

Return true if Z is in the categorical center, i.e. there exists a half-braiding on Z.

source
Oscar.morphismMethod
morphism(f::CenterMorphism)

Return the image under the forgetful functor.

source
TensorCategories.associatorMethod
associator(X::CenterObject, Y::CenterObject, Z::CenterObject)

Return the associator isomorphism (X⊗Y)⊗Z → X⊗(Y⊗Z).

source
TensorCategories.adjusted_dual_basisMethod
adjusted_dual_basis(V::AbstractHomSpace, U::AbstractHomSpace, S::Object, W::Object, T::Object)

Compute a dual basis for the spaces Hom(S, W⊗T) and Hom(S̄⊗W, T̄)

source