Internal Module Categories
Let $\mathcal C$ be a fusion category. Any finite module category over $\mathcal C$can be realized as an internal module category $\mathrm{Mod}_A(\mathcal C)$ for an algebra $A$in $\mathcal C$.
Finding Algebras
There are four kinds of algebras of interest. Let $(A,m,u)$ be an algebra.
- Algebra objects
- Separable algebra objects, i.e. $m\colon A\otimes A \to A$splits as a bimodule morphisms
And if $\mathcal C$ admits a braiding $c_{-,-}$
- Commutative algebras, i.e. $m ∘ c_{A,A} = m$
- Etale algebras, i.e. separable, commutative algebras.
We can find those structures by setting up a system of quadratic equations. Those systems are often of dimension greater then zero and hence we have to guess some solutions.
TensorCategories.algebra_structures
— Functionalgebra_structures(X::Object)
algebra_structures(X::Object, unit::Morphism)
Return a set of algebra objects over $X$. An empty array is returned only if there are no algebra structures. If the algebr is not connected, i.e. $Hom(𝟙,X) ≠ k$, then a unit should be provided.
TensorCategories.separable_algebra_structures
— Functionseparable_algebra_structures(X::Object)
separable_algebra_structures(X::Object, unit::Morphism)
Return a set of separable algebra objects over $X$. An empty array is returned only if there are no algebra structures. If the algebr is not connected, i.e. $Hom(𝟙,X) ≠ k$, then a unit should be provided.
TensorCategories.commutative_algebra_structures
— Functioncommutative_algebra_structures(X::Object)
commutative_algebra_structures(X::Object, unit::Morphism)
Return a set of commutative algebra objects over $X$. An empty array is returned only if there are no algebra structures. If the algebra is not connected, i.e. $Hom(𝟙,X) ≠ k$, then a unit should be provided.
TensorCategories.etale_algebra_structures
— Functionetale_algebra_structures(X::Object)
etale_algebra_structures(X::Object, unit::Morphism)
Return a set of separable algebra objects over $X$. An empty array is returned only if there are no algebra structures. If the algebr is not connected, i.e. $Hom(𝟙,X) ≠ k$, then a unit should be provided.
Internal Module Categories
When obtained an algebra we can set up the left, right and bimodule categories. For compatible modules also the tensor product over $A$ is available.
C = anyonwiki(3,1,0,2,1,1,1)
A, = separable_algebra_structures(C[1,2])
M = category_of_bimodules(A)
julia> print_multiplication_table(M)
# output
6×6 Matrix{String}:
"X1" "X2" "X3" "X4" "X5" "X6"
"X2" "X1" "X4" "X3" "X6" "X5"
"X3" "X5" "X1" "X6" "X2" "X4"
"X4" "X6" "X2" "X5" "X1" "X3"
"X5" "X3" "X6" "X1" "X4" "X2"
"X6" "X4" "X5" "X2" "X3" "X1"
TensorCategories.category_of_left_modules
— Functioncategory_of_left_modules(A::AlgebraObject)
Return the category of left $A$ modules in parent(A)
TensorCategories.category_of_right_modules
— Functioncategory_of_right_modules(A::AlgebraObject)
Return the category of right $A$ modules in parent(A).
TensorCategories.category_of_bimodules
— Functioncategory_of_bimodules(A::AlgebraObject, B::AlgebraObject)
Return the category of $A-B$ bimodules in parent(A)
category_of_bimodules(A::AlgebraObject)
Return the category of $A-A$ bimodules in parent(A)
Somtimes it might be handy to construct some free modules by hand:
TensorCategories.free_right_module
— Functionfree_right_module(X::Object, A::AlgebraObject)
Return the free right module $X⊗A$
TensorCategories.free_left_module
— Functionfree_left_module(X::Object, A::AlgebraObject)
Return the free left module $A⊗X$
TensorCategories.free_bimodule
— Functionfree_bimodule(X::Object, A::AlgebraObject)
Return the free $A-A$ bimodule $A⊗X⊗A$
free_bimodule(X::Object, A::AlgebraObject, B::AlgebraObject)
Return the free $A-B$ bimodule $A⊗X⊗B$
AbstractAlgebra.free_module
— Functionfree_module(X::Object, M::ModuleCategory)
Return the free module of $X$ in $M$
And also conversions from algebras and bimodules:
TensorCategories.right_module
— Functionright_module(A::AlgebraObject)
Return $A$ as the trivial right module
right_module(M::BiModuleObject)
Return $M$ as a right module forgetting the left module structure
TensorCategories.left_module
— Functionleft_module(A::AlgebraObject)
Return $A$ as the trivial left module
left_module(M::BiModuleObject)
Return $M$ as a left module forgetting the right module structure
TensorCategories.bimodule
— Functionbimodule(A::AlgebraObject)
Return $A$ as the trivial bimodule