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
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
TensorCategories.anyonwiki_center
— Functionanyonwiki_center(i,j,k,l,m,n,o)
Return the center of the fusion category with index (i,j,k,l,m,n,o) from the database.
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.Generic.dim
— Methoddim(X::CenterObject)
Return the categorical dimension of X
.
AbstractAlgebra.compose
— Methodcompose(f::CenterMorphism, g::CenterMorphism)
Return the composition g∘f
.
AbstractAlgebra.direct_sum
— Methoddirect_sum(f::CenterMorphism, g::CenterMorphism)
Return the direct sum of f
and g
.
AbstractAlgebra.direct_sum
— Methoddirect_sum(X::CenterObject, Y::CenterObject)
Return the direct sum object of X
and Y
.
AbstractAlgebra.is_isomorphic
— Methodis_isomorphic(X::CenterObject, Y::CenterObject)
Check if X≃Y
. Return (true, m)
where m
is an isomorphism if true, else return (false,nothing)
.
AbstractAlgebra.kernel
— Methodkernel(f::CenterMoprhism)
Return a tuple (K,k)
where K
is the kernel object and k
is the inclusion.
Base.inv
— Methodinv(f::CenterMorphism)
Return the inverse of f
if possible.
Base.one
— Methodone(C::CenterCategory)
Return the one object of C
.
Base.zero
— Methodzero(C::CenterCategory)
Return the zero object of C
.
Hecke.center
— Methodcenter(C::Category)
Return the Drinfeld center of C
.
Hecke.cokernel
— Methodcokernel(f::CenterMorphism)
Return a tuple (C,c)
where C
is the cokernel object and c
is the projection.
Hecke.dual
— Methoddual(X::CenterObject)
Return the (left) dual object of X
.
Hecke.id
— Methodid(X::CenterObject)
Return the identity on X
.
Hecke.is_central
— Functionis_central(Z::Object)
Return true if Z
is in the categorical center, i.e. there exists a half-braiding on Z
.
Hecke.tensor_product
— Methodtensor_product(f::CenterMorphism,g::CenterMorphism)
Return the tensor product of f
and g
.
Hecke.tensor_product
— Methodtensor_product(X::CenterObject, Y::CenterObject)
Return the tensor product of X
and Y
.
LinearAlgebra.tr
— Methodtr(f:::CenterMorphism)
Return the categorical trace of f
.
Oscar.morphism
— Methodmorphism(f::CenterMorphism)
Return the image under the forgetful functor.
TensorCategories.add_simple!
— Methodadd_simple!(C::CenterCategory, S::CenterObject)
Add the simple object S
to the vector of simple objects.
TensorCategories.associator
— Methodassociator(X::CenterObject, Y::CenterObject, Z::CenterObject)
Return the associator isomorphism (X⊗Y)⊗Z → X⊗(Y⊗Z)
.
TensorCategories.braiding
— Methodbraiding(X::CenterObject, Y::CenterObject)
Return the braiding isomorphism γ_X(Y): X⊗Y → Y⊗X
.
TensorCategories.central_projection
— Functioncentral_projection(X::CenterObject, Y::CenterObject, f::Morphism)
Compute the image under the projection Hom(F(X),F(Y)) → Hom(X,Y)
.
TensorCategories.coev
— Methodcoev(X::CenterObject)
Return the coevaluation morphism 1 → X⊗X∗
.
TensorCategories.ev
— Methodev(X::CenterObject)
Return the evaluation morphism X⊗X → 1
.
TensorCategories.fpdim
— Methodfpdim(X::CenterObject)
Return the Frobenius-Perron dimension of X
.
TensorCategories.half_braiding
— Methodhalf_braiding(X::CenterObject, Y::Object)
Return the half braiding isomorphism γ_X(Y): X⊗Y → Y⊗X
.
TensorCategories.half_braiding
— Methodhalf_braiding(Z::CenterObject)
Return a vector with half braiding morphisms Z⊗S → S⊗Z
for all simple objects S
.
TensorCategories.half_braidings
— Methodhalf_braidings(Z::Object)
Return all objects in the center lying over Z
.
TensorCategories.object
— Methodobject(X::CenterObject)
Return the image under the forgetful functor.
TensorCategories.pivotal
— Methodpivotal(X::CenterObject)
Return the pivotal structure X → X∗∗
of X
.
TensorCategories.simples
— Methodsimples(C::CenterCategory)
Return a vector containing the simple objects of C
.
TensorCategories.spherical
— Methodspherical(X::CenterObject)
Return the spherical structure X → X∗∗
of X
.
TensorCategories.zero_morphism
— Methodzero_morphism(X::CenterObject, Y::CenterObject)
Return the zero morphism 0:X → Y
.
TensorCategories.is_half_braiding
— Functionis_half_braiding(X::Object, half_braiding::Vector{<:Morphism})
TBW
TensorCategories.adjusted_dual_basis
— Methodadjusted_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̄)
TensorCategories.dual_basis
— Methoddual_basis(V::AbstractHomSpace, W::AbstractHomSpace)
Compute the dual basis for Hom(X,Y) and Hom(X̄,Ȳ)