Representation theory
QuiverTools offers various methods to study the representation theory of quivers, their Schur roots, their canonical decomposition, and their Hochschild cohomology.
QuiverTools.euler_form
— Functioneuler_form(Q::Quiver, x::AbstractVector{Int}, y::AbstractVector{Int})
Compute the Euler form of Q
for x
and y
.
The Euler form is defined as the bilinear form
\[\langle x,y\rangle = x^T * E * y,\]
where $E$ is the Euler matrix of the quiver.
Input
Q::Quiver
a quiver.x::AbstractVector{Int}
: a vector.y::AbstractVector{Int}
: a vector.
Output
- the Euler form $\langle x, y\rangle_{Q}$.
Examples
julia> Q = kronecker_quiver(4);
julia> euler_form(Q, [1, 1], [1, 1]) == -2
true
QuiverTools.euler_matrix
— Functioneuler_matrix(Q::Quiver)
Compute the Euler matrix of Q
.
The Euler matrix of a quiver $Q$ is defined as
\[E = I - A,\]
where $A$ is the adjacency matrix of $Q$ and $I$ is the identity matrix of the same size as $A$.
Input
Q::Quiver
a quiver.
Output
- the Euler matrix of the quiver.
Examples
julia> Q = kronecker_quiver(4);
julia> euler_matrix(Q) == [1 -4; 0 1]
true
QuiverTools.is_schur_root
— Functionis_schur_root(Q::Quiver, d::AbstractVector{Int})
Check if d
is a Schur root for Q
.
By [Lemma 4.2, arXiv:0802.2147], this is equivalent to the existence of a stable representation of dimension vector $d$ for the canonical stability parameter.
Input
Q::Quiver
a quiver.d::AbstractVector{Int}
a dimension vector.
Output
true
ifd
is a Schur root forQ
,false
otherwise.
Examples
julia> Q = kronecker_quiver(3); d = [2,3];
julia> is_schur_root(Q, d)
true
QuiverTools.is_real_root
— Functionis_real_root(Q::Quiver, d)
Check whether d
is a real root, i.e., if $<d, d> = 1$.
QuiverTools.is_imaginary_root
— Functionis_imaginary_root(Q::Quiver, d)
Check whether d
is an imaginary root, i.e., if $<d, d> \geq 0$.
QuiverTools.is_isotropic_root
— Functionis_isotropic_root(Q::Quiver, d)
Check whether d
is an isotropic root, i.e., if $<d, d> = 0$.
QuiverTools.general_ext
— Functiongeneral_ext(Q::Quiver, a::AbstractVector{Int}, b::AbstractVector{Int})
Compute the dimension of the $\mathrm{Ext}^1$ group between general representations of dimension vectors a
and b
.
According to [Theorem 5.4, MR1162487], we have
\[ext(a,b)=max\{-\langle c,b\rangle~~|~~c~\text{is a general subdimension vector of }a\}.\]
Input
Q::Quiver
a quiver.a::AbstractVector{Int}
: a vector.b::AbstractVector{Int}
: a vector.
Output
- the dimension of the general extensions $\mathrm{ext}^1(a, b)$.
Examples
julia> Q1 = kronecker_quiver(3);
julia> general_ext(Q1, [2, 3], [6, 7])
9
julia> general_ext(Q1, [1, 1], [1, 0])
0
julia> Q2 = three_vertex_quiver(1, 6, 7);
julia> general_ext(Q2, [5, 6, 7], [6, 7, 8])
483
QuiverTools.general_hom
— Functiongeneral_hom(Q::Quiver, a::AbstractVector{Int}, b::AbstractVector{Int})
Compute the dimension of the $\mathrm{Hom}$ group between general representations of dimension vectors a
and b
.
Input
Q::Quiver
a quiver.a::AbstractVector{Int}
: a vector.b::AbstractVector{Int}
: a vector.
Output
- the dimension of the general homomorphisms $\mathrm{hom}(a, b)$.
Examples
julia> Q1 = kronecker_quiver(3);
julia> general_hom(Q1, [2, 3], [6, 7])
0
julia> general_hom(Q1, [1, 1], [1, 0])
1
julia> Q2 = three_vertex_quiver(1, 6, 7);
julia> general_hom(Q2, [5, 6, 7], [6, 7, 8])
0
QuiverTools.all_general_subdimension_vectors
— Functionall_general_subdimension_vectors(Q::Quiver, d::AbstractVector{Int})
Return the list of all general subdimension vectors of d
.
Input
Q::Quiver
a quiver.d::AbstractVector{Int}
a dimension vector.
Output
- a list of all general subdimension vectors of
d
.
Examples
julia> Q = kronecker_quiver(3);
julia> QuiverTools.all_general_subdimension_vectors(Q, [2, 3])
7-element Vector{StaticArraysCore.SVector{2, Int64}}:
[0, 0]
[0, 1]
[0, 2]
[1, 2]
[0, 3]
[1, 3]
[2, 3]
julia> QuiverTools.all_general_subdimension_vectors(Q, [3, 0])
4-element Vector{StaticArraysCore.SVector{2, Int64}}:
[0, 0]
[1, 0]
[2, 0]
[3, 0]
QuiverTools.is_general_subdimension_vector
— Functionis_general_subdimension_vector(Q::Quiver, e::AbstractVector{Int}, d::AbstractVector{Int})
Check if e
is a general subdimension vector of d
.
A dimension vector $e$ is called a general subdimension vector of $d$ if a general representation of dimension vector $d$ possesses a subrepresentation of dimension vector $e$.
By [Theorem 5.3, arXiv:0802.2147], $e$ is a general subdimension vector of $d$ if and only if
\[<e',d-e> \geq 0\]
for all general subdimension vectors $e'$ of $e$.
Input
Q::Quiver
a quiver.e::AbstractVector{Int}
a dimension vector.d::AbstractVector{Int}
a dimension vector.
Output
true
ife
is a general subdimension vector ofd
,false
otherwise.
Examples
Trivial examples on the 3-Kronecker quiver:
julia> Q = kronecker_quiver(3); e = [1, 2]; d = [2, 3];
julia> is_general_subdimension_vector(Q, e, d)
true
julia> is_general_subdimension_vector(Q, [0, 0], d)
true
julia> is_general_subdimension_vector(Q, [2, 3], d)
true
julia> is_general_subdimension_vector(Q, [2, 1], d)
false
QuiverTools.canonical_decomposition
— Functioncanonical_decomposition(Q::Quiver, d)
Compute the canonical decomposition of d
for the quiver Q
.
If $\beta_1, \dots, \beta_{\ell}$ is a sequence of Schur roots such that, for all $i \neq j$, one has
\[\mathrm{ext}(\beta_i, \beta_j) = \mathrm{ext}(\beta_j, \beta_i) = 0,\]
then the general representation of dimension $\sum_i \beta_i$ is isomorphic to the direct sum of irreducible representations of dimension vectors $\beta_i$.
Such a decomposition is called the canonical decomposition.
Input
Q::Quiver
a quiver.d::AbstractVector{Int}
a dimension vector.
Output
- a list of dimension vectors representing the canonical decomposition of
d
.
Examples
julia> Q = kronecker_quiver(3);
julia> canonical_decomposition(Q, [6, 7]) == [[6, 7]]
true
julia> canonical_decomposition(Q, [1, 1]) == [[1, 1]]
true
julia> canonical_decomposition(Q, [6, 2]) == [[3, 1], [3, 1]]
true
julia> Q = kronecker_quiver(2);
julia> canonical_decomposition(Q, [8, 8]) == [[1, 1] for i in 1:8]
true
QuiverTools.in_fundamental_domain
— Functionin_fundamental_domain(Q::Quiver, d::AbstractVector{Int}; interior::Bool=false)
Check if the dimension vector d
is in the fundamental domain of the quiver Q
.
The fundamental domain is the cone of dimension vectors in $\mathbb{Z}^{Q_0}$ such that the symmetric Tits form is negative on all the simple roots, i.e., for all vertices i,
\[(s_i, d) := \langle d, s_i\rangle + \langle s_i, d\rangle \leq 0,\]
where $s_i$ is the dimension vector with all entries set to $0$ and the i-th set to $1$.
Input
Q::Quiver
a quiver.d::AbstractVector{Int}
a dimension vector.
Keyword arguments:
interior
: iftrue
checks whetherd
belongs to the interior of the fundamental
domain. Default is false
.
Examples
julia> Q = kronecker_quiver(3);
julia> in_fundamental_domain(Q, [2, 3])
true
julia> in_fundamental_domain(Q, [1, 1])
true
julia> in_fundamental_domain(Q, [2, 2])
true
julia> in_fundamental_domain(Q, [1, 2])
false
QuiverTools.first_hochschild_cohomology
— Functionfirst_hochschild_cohomology(Q::Quiver)
Compute the first Hochschild cohomology group.
The Hochschild cohomology groups of an acyclic quiver Q
are described by Happel in [Proposition 1.6, MR1035222] to be
\[\begin{aligned} \mathrm{HH}^{0}(Q) &= k,\\ \mathrm{HH}^{1}(Q) &= 1 - n + \sum_{\alpha \in Q_1} \# \{ \text{paths from } s(\alpha) \text{ to } t(\alpha) \},\\ \mathrm{HH}^{n}(Q) &= 0 \text{ for } n > 1. \end{aligned}\]
Examples
On the 3-Kronecker quiver:
julia> first_hochschild_cohomology(kronecker_quiver(3))
8
julia> first_hochschild_cohomology(subspace_quiver(7))
0
julia> first_hochschild_cohomology(three_vertex_quiver(2, 1, 3))
18