Skeletal Fusion Categories
In many applications of fusion categories in mathematical Physics they are assumed to be skeletal, i.e. each isomorphism class containes only one object. Then fusion categories reduce to combinatorial objects in the sense that all objects are defined by the multiplicities of their simple subobjects. Morphisms reduce to families of matrices. The associativity constraints are given by the $F$-symbols.
$F$-Symbols
We use the following conventions for the $F$-symbols. Let $\mathcal c$ be a fusion category with simples $\mathcal O(\mathcal C)$. For all $a,b,c \in \mathcal O(\mathcal C)$ fix bases for the spaces $H_{a,b}^c = \mathrm{Hom}(a \otimes b, c)$. Then for all $a,b,c,d \in \mathcal O(\mathcal C)$ there are canonical bases
\[\begin{align} \mathrm{Hom}((a \otimes b) \otimes c, d) = \langle \beta \circ (\alpha \otimes \mathrm{id}_c) \mid \alpha \in H_{a,b}^e, \beta \in H_{e,c}^d, e \in \mathcal O(\mathcal C) \rangle \end{align}\]
and
\[\begin{align} \mathrm{Hom}(a \otimes (b \otimes c), d) = \langle \delta \circ (\mathrm{id}_a \otimes \gamma) \mid \gamma \in H_{b,e}^f, \delta \in H_{a,f}^d, f \in \mathcal O(\mathcal C) \rangle. \end{align}\]
Now we can express the implied map of the associator $a_{a,b,c}$ on these spaces in the canonical bases and the resulting matrices
\[\begin{align} \left[F_{a,b,c}^d\right]_{(f,\gamma,\delta)}^{(e,\beta,\alpha)} \end{align}\]
are known as the $F$-symbols of $\mathcal C$.
In TensorCategories.jl
We provide a structure for fusion categories defined by fusion rules and $F$-symbols. The type is SixJCategory
and can be used with the following constructor.
TensorCategories.six_j_category
— Functionsix_j_category(F::Ring, mult::Array{Int,3}, [names::Vector{String}])
six_j_category(F::Ring, names::Vector{String})
Initialize a fusion category. Associativity constraints are all set to 1, i.e. are most likely false.
Moreover it is necessary to set some structures like associators, the unit and pivotal structure (if desired).
TensorCategories.set_associator!
— Functionset_associator!(F::SixJCategory, ass::Array{MatElem,4})
set_associator!(F::SixJCategory, i::Int, j::Int, k::Int, ass::Vector{<:MatElem})
set_associator!(F::SixJCategory, i::Int, j::Int, k::Int, l::Int, ass::Array{T,N}) where {T,N}
set_associator!(F::SixJCategory, i::Int, j::Int, k::Int, l::Int, m::Int, n::Int, v::RingElem)
Set the $F$-symbols of $F$.
TensorCategories.set_one!
— Functionset_one!(F::SixJCategory, v::Vector{Int})
set_one!(F::SixJCategory, i::Int)
Set the unit of $F$.
TensorCategories.set_pivotal!
— Functionset_pivotal!(F::SixJCategory, p::Vector{<:RingElem})
Set the pivotal structure of $F$. Warning: No checks are performed.
TensorCategories.set_tensor_product!
— Functionset_tensor_product!(F::SixJCategory, mult::Array{Int,4})
Set the fusion rules of $F$.