Vector Space Categories
Vector spaces in TensorCategories are of the abstract type
abstract type VectorSpaceObject <: Object endAll objects with vector space structure like hom-spaces are and should be implemented as a subtype of this type. They always need the following fields:
basis::Vector
parent::CategoryFinite Dimensional VectorSpaces
The simplest example to provide are the finite dimensional vector spaces over a field. This category has type
VectorSpaces <: TensorCategoryand can be constructed like so:
F = GF(5,2)
Vec = VectorSpaces(F)
# output
Category of finite dimensional VectorSpaces over Finite field of degree 2 and characteristic 5Objects of this category are of the type
VSObject <: VectorSpaceObjectEvery vector space object is defined by a basis and a base field provided by the parent category.
TensorCategories.VectorSpaceObject — Type
VectorSpaceObjectAn object in the category of finite dimensional vector spaces.
TensorCategories.VectorSpaceObject — Method
VectorSpaceObject(Vec::VectorSpaces, n::Int64)
VectorSpaceObject(K::Field, n::Int)
VectorSpaceObject(Vec::VectorSpaces, basis::Vector)
VectorSpaceObject(K::Field, basis::Vector)The n-dimensional vector space with basis v1,..,vn (or other specified basis)
Morphisms in this Category are defined only by matrices of matching dimensions. They are typed as
VSMorphism <: Morphismand constructed giving a domain, codomain and matrix element.
Oscar.morphism — Method
morphism(X::VectorSpaceObject, Y::VectorSpaceObject, m::MatElem)Return a morphism in the category of vector spaces defined by m.
Graded Vector Spaces
Very similar we have the category of finite dimensional (twisted) $G$-graded vector spaces for a finite group $G$. We have the type
GradedVectorSpaces <: VectorSpacesand they are constructed in straightforward manner
G = symmetric_group(6)
VecG = graded_vector_spaces(G)To add a non-trivial associator (twist) there is another constructor.
TensorCategories.twisted_graded_vector_spaces — Function
twisted_graded_vector_spaces(G::Group, i::Int)Construct the category of twisted graded vectorspaces with the i-th 3-cocycle.
Graded vector spaces decompose into direct sums of vector spaces for each element in $G$.
GVSObject <: VectorSpaceObjectG = symmetric_group(5)
g,s = gens(G)
V1 = VectorSpaceObject(QQ,5)
V2 = VectorSpaceObject(QQ, [:v, :w])
W = VectorSpaceObject(g => V1, s => V2, g*s => V1⊗V2)Morphisms are implemented analogously by pairs of group elements and vector space objects.
GVSMorphism <: MorphismThe constructor is given by
Oscar.morphism — Method
function morphism(V::GVSObject, Y::GVSObject, m::MatElem)Return the morphism $V → W$defined by $m$.
Functionality
(Graded) vector spaces form a fusion category. Thus the methods for direct sums, tensor products, dual, one and zero object are all implemented.
AbstractAlgebra.Generic.dim — Method
dim(V::VectorSpaceObject) = length(V.basis)Return the vector space dimension of $V$.
AbstractAlgebra.direct_sum — Method
function direct_sum(V::GVSObject, W::GVSObject)Return the direct sum object $V⊕W$.
AbstractAlgebra.direct_sum — Method
direct_sum(f::VectorSpaceMorphism{T},g::VectorSpaceMorphism{T}) where TReturn the direct sum of morphisms of vector spaces.
AbstractAlgebra.direct_sum — Method
direct_sum(X::VectorSpaceObject{T}, Y::VectorSpaceObject{T}) where {T}Direct sum of vector spaces together with the embedding morphisms.
AbstractAlgebra.is_isomorphic — Method
function is_isomorphic(V::GVSObject, W::GVSObject)Check whether $V$and $W$are isomorphic as $G$-graded vector spaces and return an isomorphism in the positive case.
AbstractAlgebra.is_isomorphic — Method
is_isomorphic(V::VSObject, W::VSObject)Check whether $V$ and $W$are isomorphic. Return the isomorphisms if existent.
AbstractAlgebra.kernel — Method
function kernel(f::GVSMorphism)Return the graded vector space kernel of $f$.
Hecke.cokernel — Method
function cokernel(f::GVSMorphism)Return the graded vector space cokernel of $f$.
Hecke.decompose — Method
function decompose(V::GVSObject)Return a vector with the simple objects together with their multiplicities $[V:Xi]$.
Hecke.dual — Method
function dual(V::GVSObject)Return the graded dual vector space of $V$.
Hecke.tensor_product — Method
function tensor_product(V::GVSObject, W::GVSObject)Return the tensor product $V⊗W$.
Hecke.tensor_product — Method
tensor_product(f::VectorSpaceMorphism, g::VectorSpaceMorphism)Return the tensor product of vector space morphisms.
Hecke.tensor_product — Method
tensor_product(X::VectorSpaceObject{T}, Y::VectorSpaceObject{T}) where {T,S1,S2}Return the tensor product of vector spaces.
Oscar.morphism — Method
morphism(m::MatElem)Vector space morphisms defined by m.
Oscar.morphism — Method
morphism(X::VectorSpaceObject, Y::VectorSpaceObject, m::MatElem)Return a morphism in the category of vector spaces defined by m.
TensorCategories.Hom — Method
function Hom(V::GVSObject, W::GVSObject)Return the space of morphisms between graded vector spaces $V$ and $W$.
TensorCategories.Hom — Method
Hom(X::VectorSpaceObject, Y::VectorSpaceObject)Return the Hom($X,Y$`) as a vector space.
TensorCategories.associator — Method
function associator(U::GVSObject, V::GVSObject, W::GVSObject)return the associator isomorphism $(U⊗V)⊗W → U⊗(V⊗W)$.
TensorCategories.associator — Method
associator(X::VectorSpaceObject, Y::VectorSpaceObject, Z::VectorSpaceObject)Return the associator isomorphism a::(X⊗Y)⊗Z -> X⊗(Y⊗Z).
TensorCategories.ev — Method
function ev(V::GVSObject)Return the evaluation map $V*⊗V → 𝟙$.
TensorCategories.graded_vector_spaces — Method
graded_vector_spaces(F::Field, G::Group)The category of G-graded vector spaces.
TensorCategories.simples — Method
function simples(C::GradedVectorSpaces)Return a vector containing the simple objects of $C$.