This post concerns QuiverTools. If you use it for your research, please cite it using DOI.


I am really excited to announce something that has been in the making for quite some time, and which is the result of the hard work with

Many questions in the representation theory and algebraic geometry of quivers and their moduli of representations can be answered using very algorithmic methods. This is what QuiverTools is about. We do not deal with actual representations (that is what QPA is for), rather our focus is on the geometry of moduli spaces.

An example

Let us illustrate some things. One of my favourite quiver moduli is the 6-dimensional Kronecker moduli space, which Hans and I considered in On Chow rings of quiver moduli. Let us define it in QuiverTools:
from quiver import *

Q = KroneckerQuiver(3)
X = QuiverModuliSpace(Q, (2, 3))

Then we can compute some of its basic invariants as follows:

X.is_projective() # True
X.is_smooth() # True
X.dimension() # 6
X.picard_rank() # 1
X.index() # 3

Just like in the Hodge diamond cutter you can compute Betti numbers:

X.betti_numbers() # [1, 0, 1, 0, 3, 0, 3, 0, 3, 0, 1, 0, 1]

We also support the recent work involving Chow rings and rigidity questions for quiver moduli:

eta = -Q.canonical_stability_parameter(d) / 3 # 57

X.if_rigidity_inequality_holds() # True

This is only a very quick tour of what it can do, more explanations are to come!

If you have problems installing it, you can also run it inside your browser using this interactive binder notebook.

Some comments

  • This release is really only a v1.0. Let us know if you find issues, or have feature requests!
  • We are also working on a Julia version, focusing more on performance. Stay tuned for more information.
  • We are also working on more detailed instructions: for now there is the documentation taken from the docstrings, which should be good enough if you have some experience with Sage and quiver moduli, but a more user-friendly guide is in the works.