Vector Space Categories

Vector spaces in TensorCategories are of the abstract type

abstract type VectorSpaceObject <: Object end

All 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::Category

Finite Dimensional VectorSpaces

The simplest example to provide are the finite dimensional vector spaces over a field. This category has type

VectorSpaces <: TensorCategory

and can be constructed like so:

F = GF(5,2)
Vec = VectorSpaces(F)
Category of finite dimensional VectorSpaces over Finite field of degree 2 and characteristic 5

Objects of this category are of the type

VSObject <: VectorSpaceObject

Every vector space object is defined by a basis and a base field provided by the parent category.

TensorCategories.VectorSpaceObjectMethod
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)

source

Morphisms in this Category are defined only by matrices of matching dimensions. They are typed as

VSMorphism <: Morphism

and constructed giving a domain, codomain and matrix element.

TensorCategories.MorphismMethod
Morphism(X::VectorSpaceObject, Y::VectorSpaceObject, m::MatElem)

Return a morphism in the category of vector spaces defined by m.

source

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 <: VectorSpaces

and they are constructed in straightforward manner

G = symmetric_group(6)
VecG = GradedVectorSpaces(G)
Category of G-graded vector spaces over Field of algebraic numbers where G is Sym(6)

To add a non-trivial associator (twist) there is another constructor.

Graded vector spaces decompose into direct sums of vector spaces for each element in $G$.

GVSObject <: VectorSpaceObject
G = 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)
Graded vector space of dimension 17 with grading
PermGroupElem[(1,2,3,4,5), (1,2,3,4,5), (1,2,3,4,5), (1,2,3,4,5), (1,2,3,4,5), (1,2), (1,2), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5), (2,3,4,5)]

Morphisms are implemented analogously by pairs of group elements and vector space objects.

GVSMorphism <: Morphism

The constructor is given by

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.direct_sumMethod
direct_sum(f::VectorSpaceMorphism{T},g::VectorSpaceMorphism{T}) where T

Return the direct sum of morphisms of vector spaces.

source
AbstractAlgebra.direct_sumMethod
direct_sum(X::VectorSpaceObject{T}, Y::VectorSpaceObject{T}) where {T}

Direct sum of vector spaces together with the embedding morphisms.

source
AbstractAlgebra.is_isomorphicMethod
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.

source
Base.oneMethod
function one(C::GradedVectorSpaces)

Return $k$ as the one dimensional graded vector space.

source
Base.oneMethod
one(Vec::VectorSpaces) = VectorSpaceObject(base_ring(Vec),1)

Return the one-dimensional vector space.

source
Base.zeroMethod
function zero(C::GradedVectorSpaces)

Return the zero diemsnional graded vector space.

source
Base.zeroMethod
zero(Vec::VectorSpaces) = VectorSpaceObject(base_ring(Vec), 0)

Return the zero-dimensional vector space.

source
Hecke.cokernelMethod
function cokernel(f::GVSMorphism)

Return the graded vector space cokernel of $f$.

source
Hecke.decomposeMethod
function decompose(V::GVSObject)

Return a vector with the simple objects together with their multiplicities $[V:Xi]$.

source
Hecke.dualMethod
function dual(V::GVSObject)

Return the graded dual vector space of $V$.

source
Hecke.idMethod
id(X::VectorSpaceObject{T}) where T

Return the identity on the vector space $X$.

source
Hecke.tensor_productMethod
tensor_product(f::VectorSpaceMorphism, g::VectorSpaceMorphism)

Return the tensor product of vector space morphisms.

source
Hecke.tensor_productMethod
tensor_product(X::VectorSpaceObject{T}, Y::VectorSpaceObject{T}) where {T,S1,S2}

Return the tensor product of vector spaces.

source
TensorCategories.HomMethod
function Hom(V::GVSObject, W::GVSObject)

Return the space of morphisms between graded vector spaces $V$ and $W$.

source
TensorCategories.associatorMethod
function associator(U::GVSObject, V::GVSObject, W::GVSObject)

return the associator isomorphism $(U⊗V)⊗W → U⊗(V⊗W)$.

source
TensorCategories.associatorMethod
associator(X::VectorSpaceObject, Y::VectorSpaceObject, Z::VectorSpaceObject)

Return the associator isomorphism a::(X⊗Y)⊗Z -> X⊗(Y⊗Z).

source