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 explicitly 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⋅XCenters 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)"F- and R-Symbols
We can export the $F$- and $R$-symbols as Dicts via the methods
TensorCategories.F_symbols — FunctionF_symbols(C::SixJCategory)Return a Dictionary of the F-symbols of $C$.
TensorCategories.R_symbols — FunctionR_symbols(C::SixJCategory)Return a Dictionary of the R-symbols of $C$.
TensorCategories.numeric_F_symbols — Functionnumeric_F_symbols(C::SixJCategory; precision = 2048)
numeric_F_symbols(C::SixJCategory, e::AbsSimpleNumFieldEmbedding; precision = 2048)Return a Dictionary of the F-symbols of $C$ evaluated under the embedding $e$.
TensorCategories.numeric_R_symbols — Functionnumeric_R_symbols(C::SixJCategory; precision = 2048)
numeric_R_symbols(C::SixJCategory, e::AbsSimpleNumFieldEmbedding; precision = 2048)Return a Dictionary of the R-symbols of $C$ evaluated under the embedding $e$.
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 mis an isomorphism if true, else return (false,nothing).
AbstractAlgebra.kernel — Methodkernel(f::CenterMoprhism)Return a tuple (K,k) where Kis the kernel object and kis the inclusion.
Base.inv — Methodinv(f::CenterMorphism)Return the inverse of fif 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 Cis the cokernel object and cis 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̄,Ȳ)