The Mathematica notebook can be used for drawing quivers and implementing quiver mutations. The code is the basis of many of the checks and computations done in https://inspirehep.net/literature/2048053, being inspired by one of the Wolfram Demonstration projects on Cluster Algebras.
To understand what is a quiver, let's first talk about graphs. A graph (not to be confused with a plot!) is a structure that consists of a set of nodes (or vertices), and a set of relations between the nodes. These relations are marked by edges that connect the nodes. Think of this as a group of people, where we show whether two people know each other by drawing an edge between them, as in the figure below:
A quiver is a directed graph, meaning that each edge is replaced by an arrow. This could perhaps model some telecommunications system, where an arrow between nodes (people)
Having introduced quivers, the next question is why such objects would be of interest to physicists. It turns out that there is a nice interpretation of them in the framework of Quantum Field Theory (QFT). QFT combines ideas from special relativity, quantum mechanics and classical field theory, an example of which is the theory of Electromagnetism. Let me only focus on the latter here and sweep under the rug the differences between classical and quantum field theories.
In the context of electromagnetism, we often talk about electric charge and how this affects the interactions between charged particles, such as electrons. More formally, we say that electric charge is the generator of a certain symmetry of electromagnetism, called a
Symmetries are ubiquitous in physics, and a very beautiful theorem due to Noether states that for every (continuous) symmetry of the model there is a conserved charge, which, in this scenario, is the electric charge. Similar statements exist for energy and momentum conservation laws.
Alright, so electromagnetism is a theory with a
The notebook implements a function DrawQuiverInt[] for drawing a quiver from its adjacency matrix (also referred to as the intersection matrix in the notebook). A natural operation on quivers is a 'mutation'; this turns out to have deep physical implications, with the models related by mutations being (Seiberg) 'dual' to each other. Mutations can be implemented in three steps:
- Pick a node to mutate on, call it
$M$ . - For each length 2 path going through nodes
$i-M-j$ , draw an arrow from node$i$ to node$j$ . - Reverse all the arrows connected to node
$M$ .
In this algorithm, 'bidirectional' arrows will simply cancel each other. The DrawQuiverInt[] allows one to mutate on any node of choice, and also increase the number of mutations. An example is shown below:
A quiver can be also drawn from a basis of BPS states. Given a basis of
This algorithm was the foundation of many of the examples presented in the publication https://inspirehep.net/literature/2048053.