Quiver mutation types

AUTHORS:

  • Gregg Musiker (2012, initial version)
  • Christian Stump (2012, initial version)
  • Hugh Thomas (2012, initial version)
sage.combinat.cluster_algebra_quiver.quiver_mutation_type.QuiverMutationType(*args)
Quiver mutation types can be seen as a slight generalization of
generalized Cartan types.

Background on generalized Cartan types can be found at

For the compendium on the cluster algebra and quiver package in Sage see [MS2011]

A \(B\)-matrix is a skew-symmetrizable \(( n \times n )\)-matrix \(M\). I.e., there exists an invertible diagonal matrix \(D\) such that \(DM\) is skew-symmetric. \(M\) can be encoded as a quiver by having a directed edge from vertex \(i\) to vertex \(j\) with label \((a,b)\) if \(a = M_{i,j} > 0\) and \(b = M_{j,i} < 0\). We consider quivers up to mutation equivalence.

To a quiver mutation type we can associate a generalized Cartan type by sending \(M\) to the generalized Cartan matrix \(C(M)\) obtained by replacing all positive entries by their negatives and adding \(2\)‘s on the main diagonal.

QuiverMutationType constructs a quiver mutation type object. For more detail on the possible different types, please see the compendium.

INPUT:

The input consists either of a quiver mutation type, or of a letter (a string), a rank (one integer or a list/tuple of integers), and an optional twist (an integer or a list of integers). There are several different naming conventions for quiver mutation types.

  • Finite type – letter is a Dynkin type (A-G), and rank is the rank.

  • Affine type – there is more than one convention for naming affine types.

    • Kac’s notation: letter is a Dynkin type, rank is the rank of the associated finite Dynkin diagram, and twist is the twist, which could be 1, 2, or 3. In the special case of affine type A, there is more than one quiver mutation type associated to the Cartan type. In this case only, rank is a pair of integers (i,j), giving the number of edges pointing clockwise and the number of edges pointing counter-clockwise. The total number of vertices is given by i+j in this case.
    • Naive notation: letter is one of ‘BB’, ‘BC’, ‘BD’, ‘CC’, ‘CD’. The name specifies the two ends of the diagram, which are joined by a path. The total number of vertices is given by rank +1 (to match the indexing people expect because these are affine types). In general, rank must be large enough for the picture to make sense, but we accept letter is BC and rank=1.
    • Macdonald notation: for the dual of an untwisted affine type (such as [‘C’, 6,1]), we accept a twist of -1 (i.e., [‘C’,6,-1]).
  • Elliptic type – letter is a Dynkin type, rank is the rank of the finite Dynkin diagram, and twist is a tuple of two integers. We follow Saito’s notation.

  • Other shapes:

    • Rank 2: letter is ‘R2’, and rank is a pair of integers specifying the label on the unique edge.
    • Triangle: letter is TR, and rank is the number of vertices along a side.
    • T: This defines a quiver shaped like a T. letter is ‘T’, and the rank is a triple, whose entries specify the number of vertices along each path from the branch point (counting the branch point).
    • Grassmannian: This defines the cluster algebra (without coefficients) corresponding to the cluster algebra with coefficients which is the co-ordinate ring of a Grassmannian. letter is ‘GR’. rank is a pair of integers (\(k\), \(n\)) with ‘k’ < ‘n’ specifying the Grassmannian of \(k\)-planes in \(n\)-space. This defines a quiver given by a (k-1) x (n-k-1) grid where each square is cyclically oriented.
    • Exceptional mutation finite quivers: The two exceptional mutation finite quivers, found by Derksen-Owen, have letter as ‘X’ and rank 6 or 7, equal to the number of vertices.
    • AE, BE, CE, DE: Quivers are built of one end which looks like type (affine A), B, C, or D, and the other end which looks like type E (i.e., it consists of two antennae, one of length one, and one of length two). letter is ‘AE’, ‘BE’, ‘CE’, or ‘DE’, and rank is the total number of vertices. Note that ‘AE’ is of a slightly different form and requires rank to be a pair of integers (i,j) just as in the case of affine type A. See Exercise 4.3 in Kac’s book Infinite Dimensional Lie Algebras for more details.
    • Infinite type E: It is also possible to obtain infinite-type E quivers by specifying letter as ‘E’ and rank as the number of vertices.

REFERENCES:

  • A good reference for finite and affine Dynkin diagrams, including Kac’s notation, is the Wikipedia article Dynkin_diagram.
  • A good reference for the skew-symmetrizable elliptic diagrams is “Cluster algebras of finite mutation type via unfolding” by A. Felikson, M. Shapiro, and P. Tumarkin, [FST2012].

EXAMPLES:

Finite types:

sage: QuiverMutationType('A',1)
['A', 1]
sage: QuiverMutationType('A',5)
['A', 5]

sage: QuiverMutationType('B',2)
['B', 2]
sage: QuiverMutationType('B',5)
['B', 5]

sage: QuiverMutationType('C',2)
['B', 2]
sage: QuiverMutationType('C',5)
['C', 5]

sage: QuiverMutationType('D',2)
[ ['A', 1], ['A', 1] ]
sage: QuiverMutationType('D',3)
['A', 3]
sage: QuiverMutationType('D',4)
['D', 4]

sage: QuiverMutationType('E',6)
['E', 6]

sage: QuiverMutationType('G',2)
['G', 2]

sage: QuiverMutationType('A',(1,0),1)
['A', 1]

sage: QuiverMutationType('A',(2,0),1)
[ ['A', 1], ['A', 1] ]

sage: QuiverMutationType('A',(7,0),1)
['D', 7]

Affine types:

sage: QuiverMutationType('A',(1,1),1)
['A', [1, 1], 1]
sage: QuiverMutationType('A',(2,4),1)
['A', [2, 4], 1]

sage: QuiverMutationType('BB',2,1)
['BB', 2, 1]
sage: QuiverMutationType('BB',4,1)
['BB', 4, 1]

sage: QuiverMutationType('CC',2,1)
['CC', 2, 1]
sage: QuiverMutationType('CC',4,1)
['CC', 4, 1]

sage: QuiverMutationType('BC',1,1)
['BC', 1, 1]
sage: QuiverMutationType('BC',5,1)
['BC', 5, 1]

sage: QuiverMutationType('BD',3,1)
['BD', 3, 1]
sage: QuiverMutationType('BD',5,1)
['BD', 5, 1]

sage: QuiverMutationType('CD',3,1)
['CD', 3, 1]
sage: QuiverMutationType('CD',5,1)
['CD', 5, 1]

sage: QuiverMutationType('D',4,1)
['D', 4, 1]
sage: QuiverMutationType('D',6,1)
['D', 6, 1]

sage: QuiverMutationType('E',6,1)
['E', 6, 1]
sage: QuiverMutationType('E',7,1)
['E', 7, 1]
sage: QuiverMutationType('E',8,1)
['E', 8, 1]

sage: QuiverMutationType('F',4,1)
['F', 4, 1]
sage: QuiverMutationType('F',4,-1)
['F', 4, -1]

sage: QuiverMutationType('G',2,1)
['G', 2, 1]
sage: QuiverMutationType('G',2,-1)
['G', 2, -1]
sage: QuiverMutationType('A',3,2) == QuiverMutationType('D',3,2)
True

Affine types using Kac’s Notation:

sage: QuiverMutationType('A',1,1)
['A', [1, 1], 1]
sage: QuiverMutationType('B',5,1)
['BD', 5, 1]
sage: QuiverMutationType('C',5,1)
['CC', 5, 1]
sage: QuiverMutationType('A',2,2)
['BC', 1, 1]
sage: QuiverMutationType('A',7,2)
['CD', 4, 1]
sage: QuiverMutationType('A',8,2)
['BC', 4, 1]
sage: QuiverMutationType('D',6,2)
['BB', 5, 1]
sage: QuiverMutationType('E',6,2)
['F', 4, -1]
sage: QuiverMutationType('D',4,3)
['G', 2, -1]

Elliptic types:

sage: QuiverMutationType('E',6,[1,1])
['E', 6, [1, 1]]
sage: QuiverMutationType('F',4,[2,1])
['F', 4, [1, 2]]
sage: QuiverMutationType('G',2,[3,3])
['G', 2, [3, 3]]

Mutation finite types:

rank 2 cases:

sage: QuiverMutationType('R2',(1,1))
['A', 2]
sage: QuiverMutationType('R2',(1,2))
['B', 2]
sage: QuiverMutationType('R2',(1,3))
['G', 2]
sage: QuiverMutationType('R2',(1,4))
['BC', 1, 1]
sage: QuiverMutationType('R2',(1,5))
['R2', [1, 5]]
sage: QuiverMutationType('R2',(2,2))
['A', [1, 1], 1]
sage: QuiverMutationType('R2',(3,5))
['R2', [3, 5]]

Exceptional Derksen-Owen quivers:

sage: QuiverMutationType('X',6)
['X', 6]

(Mainly) mutation infinite types:

Infinite type E:

sage: QuiverMutationType('E',9)
['E', 8, 1]
sage: QuiverMutationType('E',10)
['E', 10]
sage: QuiverMutationType('E',12)
['E', 12]

sage: QuiverMutationType('AE',(2,3))
['AE', [2, 3]]
sage: QuiverMutationType('BE',5)
['BE', 5]
sage: QuiverMutationType('CE',5)
['CE', 5]
sage: QuiverMutationType('DE',6)
['DE', 6]

Grassmannian types:

sage: QuiverMutationType('GR',(2,4))
['A', 1]
sage: QuiverMutationType('GR',(2,6))
['A', 3]
sage: QuiverMutationType('GR',(3,6))
['D', 4]
sage: QuiverMutationType('GR',(3,7))
['E', 6]
sage: QuiverMutationType('GR',(3,8))
['E', 8]
sage: QuiverMutationType('GR',(3,10))
['GR', [3, 10]]

Triangular types:

sage: QuiverMutationType('TR',2)
['A', 3]
sage: QuiverMutationType('TR',3)
['D', 6]
sage: QuiverMutationType('TR',4)
['E', 8, [1, 1]]
sage: QuiverMutationType('TR',5)
['TR', 5]

T types:

sage: QuiverMutationType('T',(1,1,1))
['A', 1]
sage: QuiverMutationType('T',(1,1,4))
['A', 4]
sage: QuiverMutationType('T',(1,4,4))
['A', 7]
sage: QuiverMutationType('T',(2,2,2))
['D', 4]
sage: QuiverMutationType('T',(2,2,4))
['D', 6]
sage: QuiverMutationType('T',(2,3,3))
['E', 6]
sage: QuiverMutationType('T',(2,3,4))
['E', 7]
sage: QuiverMutationType('T',(2,3,5))
['E', 8]
sage: QuiverMutationType('T',(2,3,6))
['E', 8, 1]
sage: QuiverMutationType('T',(2,3,7))
['E', 10]
sage: QuiverMutationType('T',(3,3,3))
['E', 6, 1]
sage: QuiverMutationType('T',(3,3,4))
['T', [3, 3, 4]]

Reducible types:

sage: QuiverMutationType(['A',3],['B',4])
[ ['A', 3], ['B', 4] ]
class sage.combinat.cluster_algebra_quiver.quiver_mutation_type.QuiverMutationTypeFactory

Bases: sage.structure.sage_object.SageObject

samples(finite=None, affine=None, elliptic=None, mutation_finite=None)

Return a sample of the available quiver mutations types.

INPUT:

  • finite
  • affine
  • elliptic
  • mutation_finite

All four input keywords default values are None. If set to True or False, only these samples are returned.

EXAMPLES:

sage: QuiverMutationType.samples()
[['A', 1], ['A', 5], ['B', 2], ['B', 5], ['C', 3],
 ['C', 5], [ ['A', 1], ['A', 1] ], ['D', 5], ['E', 6],
 ['E', 7], ['E', 8], ['F', 4], ['G', 2],
 ['A', [1, 1], 1], ['A', [4, 5], 1], ['D', 4, 1],
 ['BB', 5, 1], ['E', 6, [1, 1]], ['E', 7, [1, 1]],
 ['R2', [1, 5]], ['R2', [3, 5]], ['E', 10], ['BE', 5],
 ['GR', [3, 10]], ['T', [3, 3, 4]]]

sage: QuiverMutationType.samples(finite=True)
[['A', 1], ['A', 5], ['B', 2], ['B', 5], ['C', 3],
 ['C', 5], [ ['A', 1], ['A', 1] ], ['D', 5], ['E', 6],
 ['E', 7], ['E', 8], ['F', 4], ['G', 2]]

sage: QuiverMutationType.samples(affine=True)
[['A', [1, 1], 1], ['A', [4, 5], 1], ['D', 4, 1], ['BB', 5, 1]]

sage: QuiverMutationType.samples(elliptic=True)
[['E', 6, [1, 1]], ['E', 7, [1, 1]]]

sage: QuiverMutationType.samples(mutation_finite=False)
[['R2', [1, 5]], ['R2', [3, 5]], ['E', 10], ['BE', 5],
 ['GR', [3, 10]], ['T', [3, 3, 4]]]
sage.combinat.cluster_algebra_quiver.quiver_mutation_type.QuiverMutationType_Irreducible

The mutation type for a cluster algebra or a quiver. Should not be called directly, but through QuiverMutationType.

sage.combinat.cluster_algebra_quiver.quiver_mutation_type.QuiverMutationType_Reducible

The mutation type for a cluster algebra or a quiver. Should not be called directly, but through QuiverMutationType. Inherits from QuiverMutationType_abstract.

sage.combinat.cluster_algebra_quiver.quiver_mutation_type.QuiverMutationType_abstract

EXAMPLES:

sage: mut_type1 = QuiverMutationType('A',5)
sage: mut_type2 = QuiverMutationType('A',5)
sage: mut_type3 = QuiverMutationType('A',6)
sage: mut_type1 == mut_type2
True
sage: mut_type1 == mut_type3
False
sage.combinat.cluster_algebra_quiver.quiver_mutation_type.save_quiver_data(n, up_to=True, types='ClassicalExceptional', verbose=True)

Save mutation classes of certain quivers of ranks up to and equal to n or equal to n to DOT_SAGE/cluster_algebra_quiver/mutation_classes_n.dig6.

This data will then be used to determine quiver mutation types.

INPUT:

  • n: the rank (or the upper limit on the rank) of the mutation classes that are being saved.
  • up_to – (default:True) if True, saves data for ranks smaller than or equal to n. If False, saves data for rank exactly n.
  • types – (default:’ClassicalExceptional’) if all, saves data for both exceptional mutation-finite quivers and for classical quiver. The input ‘Exceptional’ or ‘Classical’ is also allowed to save only part of this data.