Walls and Chambers decomposition

QuiverTools implements the walls-and-chambers decomposition of the GIT problem of quiver moduli using the polyhedral geometry interface of Oscar.jl.

QuiverTools.is_special_subdimension_vectorFunction
is_special_subdimension_vector(Q::Quiver, e::AbstractVector{Int}, d::AbstractVector{Int})

Compute whether e is a special subdimension vector of d for Q.

Special subdimension vectors are defined in [Definition 6.1, MR5007902].

Example

julia> Q = Quiver("1-2,2-3,3-4,1-4"); d = [1, 1, 1, 1];

julia> is_special_subdimension_vector(Q, [1, 1, 1, 1], d)
false

julia> is_special_subdimension_vector(Q, [1, 0, 0, 1], d)
true
source
QuiverTools.all_special_subdimension_vectorsFunction
all_special_subdimension_vectors(Q::Quiver, d::AbstractVector{Int})

Compute all the special subdimension vectors of d for the quiver Q.

Example

julia> Q = Quiver("1-2,2-3,3-4,1-3,1-4"); d = [1, 1, 1, 1];

julia> length(all_special_subdimension_vectors(Q, d))
7
source
QuiverTools.sstFunction
sst(Q, e)

Compute the semistable cone sst(e) for a given quiver Q and a vector e. This is the cone of all stability parameters for which semistable representations of the quiver Q with dimension vector e exist.

Example

julia> Q = Quiver("1-2,2-3,3-4,1-3,1-4"); d = [1, 1, 1, 1];

julia> collect(rays(sst(Q, d)))
3-element Vector{Oscar.RayVector{Nemo.QQFieldElem}}:
 [0, 0, 1, -1]
 [0, 1, -1, 0]
 [1, -1, 0, 0]
source
QuiverTools.vgit_wallsFunction
vgit_walls(Q, d; inner=false, top_dimension=true)

Compute all the walls W_e of the quiver Q with dimension vector d. Defaults to only computing the top-dimensional walls, pass the top_dimension=false keyword to compute all the W_e of the VGIT problem. Defaults to computing all walls, pass the inner=true keyword to not include the outer walls.

Example

julia> Q = Quiver("1-2,2-3,3-4,1-3,1-4"); d = [1, 1, 1, 1];

julia> map(rays, vgit_walls(Q, d; inner=false, top_dimension=false))
7-element Vector{Oscar.SubObjectIterator{Oscar.RayVector{Nemo.QQFieldElem}}}:
 [[0, 0, 1, -1], [0, 1, -1, 0]]
 [[0, 0, 1, -1], [1, 0, -1, 0]]
 [[0, 0, 1, -1], [1, -1, 0, 0]]
 [[1, 0, 0, -1], [1, -1, 0, 0]]
 [[1, 0, -1, 0]]
 [[1, 0, 0, -1], [0, 1, -1, 0]]
 [[1, -1, 0, 0], [0, 1, -1, 0]]
source
QuiverTools.wall_systemFunction
wall_system(Q, d; inner=false, as_cones=true)

Compute the wall system for the quiver Q with dimension vector d. This is the set of hyperplanes H_e for which there exists at least one vgit wall W_e that lays on H_e. By default it returns the walls intersected with the semistable cone sst(d), pass the keyword as_cones=false to get the full hyperplanes.

source
QuiverTools.vgit_chambersFunction
vgit_chambers(Q, d; verbose=false)

Compute all VGIT chambers for the quiver Q with dimension vector d.

VGIT chambers are the top-dimensional equivalence classes in the VGIT problem; if stable representations exist, then the VGIT chambers have dimension equal to dim(sst(Q, d)) and are defined by the walls W_e of codimension 1.

If there exit no stable representations, dim(sst(Q, d)) is strictly smaller than length(d) - 1.

Example

The following example has three inner walls W_e, and all of them are strictly smaller than the corresponding H_e \cap sst(d) in the wall system.

julia> Q = Quiver("1-2,2-3,3-4,1-4"); d = [1, 1, 1, 1];

julia> map(rays, vgit_chambers(Q, d; verbose=false))
3-element Vector{Oscar.SubObjectIterator{Oscar.RayVector{Nemo.QQFieldElem}}}:
 [[1, -1, 0, 0], [0, 0, 1, -1], [1, 0, 0, -1]]
 [[0, 1, -1, 0], [0, 0, 1, -1], [1, 0, 0, -1]]
 [[1, -1, 0, 0], [1, 0, 0, -1], [0, 1, -1, 0]]

The following example has three inner walls as well, but one is equal to its wall system hyperplane and the two others are not.

julia> Q = Quiver("1-2,2-3,3-4,1-3,1-4"); d = [1, 1, 1, 1];

julia> map(rays, vgit_chambers(Q, d; verbose=false))
4-element Vector{Oscar.SubObjectIterator{Oscar.RayVector{Nemo.QQFieldElem}}}:
 [[1, -1, 0, 0], [1, 0, 0, -1], [1, 0, -1, 0]]
 [[1, -1, 0, 0], [0, 0, 1, -1], [1, 0, 0, -1]]
 [[0, 1, -1, 0], [1, 0, 0, -1], [1, 0, -1, 0]]
 [[0, 1, -1, 0], [0, 0, 1, -1], [1, 0, 0, -1]]
source
QuiverTools.vgit_fanFunction
vgit_fan(Q, d; verbose=false)

Compute the VGIT fan for the quiver Q with dimension vector d.

Example

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

julia> F = vgit_fan(Q, d); rays(F)
9-element Oscar.SubObjectIterator{Oscar.RayVector{Nemo.QQFieldElem}}:
 [1, -2//3, 0]
 [1, -1//2, -1//8]
 [1, -2//5, -1//5]
 [1, 0, -1//2]
 [1, 2//9, -2//3]
 [1, 2//5, -4//5]
 [1, 2//3, -1]
 [1, 2, -2]
 [0, 1, -3//4]
source
QuiverTools.git_equivalentFunction
git_equivalent(Q, d, theta1, theta2)

Check if the two stability parameters theta1 and theta2 are equivalent.

By [Corollary 4.4, MR5007902], this is equivalent to their convex hull either lying in a wall or not intersecting any of them.

Example

julia> Q = three_vertex_quiver(2, 3, 4); d = [1, 2, 2];

julia> F = vgit_fan(Q, d); rays(F)
4-element Oscar.SubObjectIterator{Oscar.RayVector{Nemo.QQFieldElem}}:
 [1, -1//2, 0]
 [1, 0, -1//2]
 [1, 1//2, -1]
 [0, 1, -1]

julia> theta1 = [2, -1//2, -1//2];

julia> theta2 = [2, 1//2, -3//2];

julia> theta3 = [1, 3//2, -2];

julia> git_equivalent(Q, d, theta1, theta2)
false

julia> git_equivalent(Q, d, theta1, theta3)
false

julia> git_equivalent(Q, d, theta2, theta3)
false
source