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_formFunction
euler_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
source
QuiverTools.euler_matrixFunction
euler_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
source
QuiverTools.is_schur_rootFunction
is_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 if d is a Schur root for Q, false otherwise.

Examples

julia> Q = kronecker_quiver(3); d = [2,3];

julia> is_schur_root(Q, d)
true
source
QuiverTools.general_extFunction
general_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
source
QuiverTools.general_homFunction
general_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
source
QuiverTools.all_general_subdimension_vectorsFunction
all_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]
source
QuiverTools.is_general_subdimension_vectorFunction
is_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 if e is a general subdimension vector of d, 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
source
QuiverTools.canonical_decompositionFunction
canonical_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
source
QuiverTools.in_fundamental_domainFunction
in_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: if true checks whether d 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
source
QuiverTools.first_hochschild_cohomologyFunction
first_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
source