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_vector — Function
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)
trueQuiverTools.all_special_subdimension_vectors — Function
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))
7QuiverTools.sst — Function
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]QuiverTools.vgit_walls — Function
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]]QuiverTools.wall_system — Function
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.
QuiverTools.vgit_chambers — Function
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]]QuiverTools.vgit_fan — Function
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]QuiverTools.git_equivalent — Function
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