Auslander-Reiten Quivers#

class sage.quivers.ar_quiver.AuslanderReitenQuiver(quiver)[source]#

Bases: UniqueRepresentation, Parent

The Auslander-Reiten quiver.

Let \(Q = (Q_0, Q_1)\) be a finite acyclic quiver. The Auslander-Reiten quiver (AR quiver) \(\Gamma_Q\) is the quiver whose vertices correspond to the indecompositible modules of \(Q\) (equivalently its path algebra over an algebraically closed field) and edges are irreducible morphisms.

In this implementation, we denote the vertices of \(\Gamma_Q\) as certain pairs \(\langle v, k \rangle\), where \(v \in Q_0\) and \(k \in \ZZ \setminus \{0\}\) is called the level. When \(k > 0\) (resp. \(k < 0\)), then it corresponds to a preprojective (resp. postinjective) module. When the quiver is a finite type Dynkin quiver, we consider all modules to be preprojectives and denoted by a positive level.

Note

We use the terminology postinjective instead of preinjective given that they follow from injectives by AR translation.

ALGORITHM:

We compute the dimension vectors of a projective \(\langle v, 1 \rangle\) by counting the number of (directed) paths \(u \to v\) in \(Q\). We then proceed inductively to compute all of the dimension vectors of level \(k\) by using the translation equation

\[dim \langle v, k-1 \rangle + \dim \langle v, k \rangle = \sum_{u,k'} \dim \langle u, k' \rangle,\]

where the sum is over all paths from \(\langle v, k-1 \rangle\) to \(\langle v, k \rangle\) in \(\Gamma_Q\). More specifically, for each edge \((u, v, \ell) \in Q_1\) (resp. \((v, u, \ell) \in Q_1\)), we have \(\langle u, k-1 \rangle\) (resp. \(\langle u, k \rangle\)) in the sum (assuming the node is in the AR quiver).

The algorithm for postinjectives is dual to the above.

Todo

This only is implemented for the preprojectives and postinjectives when the quiver is not a finite type Dynkin quiver.

Todo

Implement this for general Artinian algebras.

EXAMPLES:

We create the AR quivers for finite type \(A_3\) Dynkin quivers:

sage: DA = DiGraph([[1, 2], [2, 3]])
sage: AR = DA.auslander_reiten_quiver()
sage: AR.digraph().edges(labels=False)
[(<1, 1>, <2, 2>), (<2, 1>, <1, 1>), (<2, 1>, <3, 2>), (<3, 1>, <2, 1>),
 (<2, 2>, <3, 3>), (<3, 2>, <2, 2>)]

sage: DA = DiGraph([[1, 2], [3, 2]])
sage: AR = DA.auslander_reiten_quiver()
sage: AR.digraph().edges(labels=False)
[(<1, 1>, <2, 2>), (<2, 1>, <1, 1>), (<2, 1>, <3, 1>), (<3, 1>, <2, 2>),
 (<2, 2>, <1, 2>), (<2, 2>, <3, 2>)]

sage: DA = DiGraph([[2, 1], [2, 3]])
sage: AR = DA.auslander_reiten_quiver()
sage: AR.digraph().edges(labels=False)
[(<1, 1>, <2, 1>), (<2, 1>, <1, 2>), (<2, 1>, <3, 2>), (<3, 1>, <2, 1>),
 (<1, 2>, <2, 2>), (<3, 2>, <2, 2>)]

sage: DA = DiGraph([[2, 1], [3, 2]])
sage: AR = DA.auslander_reiten_quiver()
sage: AR.digraph().edges(labels=False)
[(<1, 1>, <2, 1>), (<2, 1>, <3, 1>), (<2, 1>, <1, 2>), (<3, 1>, <2, 2>),
 (<1, 2>, <2, 2>), (<2, 2>, <1, 3>)]
>>> from sage.all import *
>>> DA = DiGraph([[Integer(1), Integer(2)], [Integer(2), Integer(3)]])
>>> AR = DA.auslander_reiten_quiver()
>>> AR.digraph().edges(labels=False)
[(<1, 1>, <2, 2>), (<2, 1>, <1, 1>), (<2, 1>, <3, 2>), (<3, 1>, <2, 1>),
 (<2, 2>, <3, 3>), (<3, 2>, <2, 2>)]

>>> DA = DiGraph([[Integer(1), Integer(2)], [Integer(3), Integer(2)]])
>>> AR = DA.auslander_reiten_quiver()
>>> AR.digraph().edges(labels=False)
[(<1, 1>, <2, 2>), (<2, 1>, <1, 1>), (<2, 1>, <3, 1>), (<3, 1>, <2, 2>),
 (<2, 2>, <1, 2>), (<2, 2>, <3, 2>)]

>>> DA = DiGraph([[Integer(2), Integer(1)], [Integer(2), Integer(3)]])
>>> AR = DA.auslander_reiten_quiver()
>>> AR.digraph().edges(labels=False)
[(<1, 1>, <2, 1>), (<2, 1>, <1, 2>), (<2, 1>, <3, 2>), (<3, 1>, <2, 1>),
 (<1, 2>, <2, 2>), (<3, 2>, <2, 2>)]

>>> DA = DiGraph([[Integer(2), Integer(1)], [Integer(3), Integer(2)]])
>>> AR = DA.auslander_reiten_quiver()
>>> AR.digraph().edges(labels=False)
[(<1, 1>, <2, 1>), (<2, 1>, <3, 1>), (<2, 1>, <1, 2>), (<3, 1>, <2, 2>),
 (<1, 2>, <2, 2>), (<2, 2>, <1, 3>)]

An example for the type \(D_5\) Dynkin quiver:

sage: DD = DiGraph([[5,3], [4,3], [3,2], [2,1]])
sage: AR = DD.auslander_reiten_quiver()
sage: AR
Auslander-Reiten quiver of a ['D', 5] Dynkin quiver
sage: len(list(DD))
5
>>> from sage.all import *
>>> DD = DiGraph([[Integer(5),Integer(3)], [Integer(4),Integer(3)], [Integer(3),Integer(2)], [Integer(2),Integer(1)]])
>>> AR = DD.auslander_reiten_quiver()
>>> AR
Auslander-Reiten quiver of a ['D', 5] Dynkin quiver
>>> len(list(DD))
5

An \(E_8\) Dynkin quiver:

sage: DE = DiGraph([[8,7], [7,6], [5,6], [5,3], [3,4], [3,2], [2,1]])
sage: AR = DE.auslander_reiten_quiver()
sage: AR
Auslander-Reiten quiver of a ['E', 8] Dynkin quiver
sage: len(list(AR))
120
sage: len(list(RootSystem(['E', 8]).root_lattice().positive_roots()))
120
>>> from sage.all import *
>>> DE = DiGraph([[Integer(8),Integer(7)], [Integer(7),Integer(6)], [Integer(5),Integer(6)], [Integer(5),Integer(3)], [Integer(3),Integer(4)], [Integer(3),Integer(2)], [Integer(2),Integer(1)]])
>>> AR = DE.auslander_reiten_quiver()
>>> AR
Auslander-Reiten quiver of a ['E', 8] Dynkin quiver
>>> len(list(AR))
120
>>> len(list(RootSystem(['E', Integer(8)]).root_lattice().positive_roots()))
120

The Kronecker quiver:

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: for i in range(1, 5):
....:     for v in D.vertices():
....:         pp = AR(v, i)
....:         pi = AR(v, -i)
....:         print(pp, pp.dimension_vector(), "  ", pi, pi.dimension_vector())
<1, 1> v1 + 2*v2      <1, -1> v1
<2, 1> v2             <2, -1> 2*v1 + v2
<1, 2> 3*v1 + 4*v2    <1, -2> 3*v1 + 2*v2
<2, 2> 2*v1 + 3*v2    <2, -2> 4*v1 + 3*v2
<1, 3> 5*v1 + 6*v2    <1, -3> 5*v1 + 4*v2
<2, 3> 4*v1 + 5*v2    <2, -3> 6*v1 + 5*v2
<1, 4> 7*v1 + 8*v2    <1, -4> 7*v1 + 6*v2
<2, 4> 6*v1 + 7*v2    <2, -4> 8*v1 + 7*v2
>>> from sage.all import *
>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> for i in range(Integer(1), Integer(5)):
...     for v in D.vertices():
...         pp = AR(v, i)
...         pi = AR(v, -i)
...         print(pp, pp.dimension_vector(), "  ", pi, pi.dimension_vector())
<1, 1> v1 + 2*v2      <1, -1> v1
<2, 1> v2             <2, -1> 2*v1 + v2
<1, 2> 3*v1 + 4*v2    <1, -2> 3*v1 + 2*v2
<2, 2> 2*v1 + 3*v2    <2, -2> 4*v1 + 3*v2
<1, 3> 5*v1 + 6*v2    <1, -3> 5*v1 + 4*v2
<2, 3> 4*v1 + 5*v2    <2, -3> 6*v1 + 5*v2
<1, 4> 7*v1 + 8*v2    <1, -4> 7*v1 + 6*v2
<2, 4> 6*v1 + 7*v2    <2, -4> 8*v1 + 7*v2
class Element(parent, vertex, level)[source]#

Bases: Element

A node in the AR quiver.

dimension_vector()[source]#

Return the dimension vector of self.

EXAMPLES:

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: node = AR(2, -4)
sage: node.dimension_vector()
8*v1 + 7*v2
>>> from sage.all import *
>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> node = AR(Integer(2), -Integer(4))
>>> node.dimension_vector()
8*v1 + 7*v2
inverse_translation()[source]#

Return the inverse AR translation of self.

EXAMPLES:

sage: DA = DiGraph([[2,3], [2,1]])
sage: AR = DA.auslander_reiten_quiver()
sage: node = AR(1, 1)
sage: node.inverse_translation()
<1, 2>
sage: node = AR(1, 2)
sage: node.inverse_translation() is None
True

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: AR(2, -1).inverse_translation() is None
True
>>> from sage.all import *
>>> DA = DiGraph([[Integer(2),Integer(3)], [Integer(2),Integer(1)]])
>>> AR = DA.auslander_reiten_quiver()
>>> node = AR(Integer(1), Integer(1))
>>> node.inverse_translation()
<1, 2>
>>> node = AR(Integer(1), Integer(2))
>>> node.inverse_translation() is None
True

>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> AR(Integer(2), -Integer(1)).inverse_translation() is None
True
level()[source]#

Return the level of self.

EXAMPLES:

sage: DA = DiGraph([[2,3], [2,1]])
sage: AR = DA.auslander_reiten_quiver()
sage: node = AR(1, 2)
sage: node.level()
2
>>> from sage.all import *
>>> DA = DiGraph([[Integer(2),Integer(3)], [Integer(2),Integer(1)]])
>>> AR = DA.auslander_reiten_quiver()
>>> node = AR(Integer(1), Integer(2))
>>> node.level()
2
translation()[source]#

Return the AR translation of self.

EXAMPLES:

sage: DA = DiGraph([[4,3], [3,2], [2,1]])
sage: AR = DA.auslander_reiten_quiver()
sage: node = AR(1, 1)
sage: node.translation() is None
True
sage: node = AR(1, 2)
sage: node.translation()
<1, 1>
>>> from sage.all import *
>>> DA = DiGraph([[Integer(4),Integer(3)], [Integer(3),Integer(2)], [Integer(2),Integer(1)]])
>>> AR = DA.auslander_reiten_quiver()
>>> node = AR(Integer(1), Integer(1))
>>> node.translation() is None
True
>>> node = AR(Integer(1), Integer(2))
>>> node.translation()
<1, 1>
vertex()[source]#

Return the vertex of the quiver corresponding to self.

EXAMPLES:

sage: DA = DiGraph([[2,3], [2,1]])
sage: AR = DA.auslander_reiten_quiver()
sage: node = AR(1, 2)
sage: node.vertex()
1
>>> from sage.all import *
>>> DA = DiGraph([[Integer(2),Integer(3)], [Integer(2),Integer(1)]])
>>> AR = DA.auslander_reiten_quiver()
>>> node = AR(Integer(1), Integer(2))
>>> node.vertex()
1
digraph(with_translations=False)[source]#

Return the diagraph of self.

INPUT:

  • with_translations – (default: False) if True, then include the arrows corresponding to the translations.

EXAMPLES:

sage: DA = DiGraph([[1,2]])
sage: AR = DA.auslander_reiten_quiver()
sage: G = AR.digraph(); G
Digraph on 3 vertices
sage: G.edges()
[(<1, 1>, <2, 2>, None), (<2, 1>, <1, 1>, None)]
sage: GT = AR.digraph(with_translations=True)
sage: GT.edges()
[(<1, 1>, <2, 2>, None), (<2, 1>, <1, 1>, None), (<2, 2>, <2, 1>, 'ART')]
>>> from sage.all import *
>>> DA = DiGraph([[Integer(1),Integer(2)]])
>>> AR = DA.auslander_reiten_quiver()
>>> G = AR.digraph(); G
Digraph on 3 vertices
>>> G.edges()
[(<1, 1>, <2, 2>, None), (<2, 1>, <1, 1>, None)]
>>> GT = AR.digraph(with_translations=True)
>>> GT.edges()
[(<1, 1>, <2, 2>, None), (<2, 1>, <1, 1>, None), (<2, 2>, <2, 1>, 'ART')]
digraph_postinjectives(max_depth, with_translations=False)[source]#

Return the diagraph of postinjectives of self up to max_depth.

EXAMPLES:

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: G = AR.digraph_postinjectives(3)
sage: [node.dimension_vector() for node in G]
[5*v1 + 4*v2, 6*v1 + 5*v2, 3*v1 + 2*v2, 4*v1 + 3*v2, v1, 2*v1 + v2]
sage: AR.digraph_postinjectives(0)
Digraph on 0 vertices
>>> from sage.all import *
>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> G = AR.digraph_postinjectives(Integer(3))
>>> [node.dimension_vector() for node in G]
[5*v1 + 4*v2, 6*v1 + 5*v2, 3*v1 + 2*v2, 4*v1 + 3*v2, v1, 2*v1 + v2]
>>> AR.digraph_postinjectives(Integer(0))
Digraph on 0 vertices
digraph_preprojectives(max_depth, with_translations=False)[source]#

Return the diagraph of preprojectives of self up to max_depth.

EXAMPLES:

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: G = AR.digraph_preprojectives(3)
sage: [node.dimension_vector() for node in G]
[v1 + 2*v2, v2, 3*v1 + 4*v2, 2*v1 + 3*v2, 5*v1 + 6*v2, 4*v1 + 5*v2]
sage: AR.digraph_preprojectives(0)
Digraph on 0 vertices
>>> from sage.all import *
>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> G = AR.digraph_preprojectives(Integer(3))
>>> [node.dimension_vector() for node in G]
[v1 + 2*v2, v2, 3*v1 + 4*v2, 2*v1 + 3*v2, 5*v1 + 6*v2, 4*v1 + 5*v2]
>>> AR.digraph_preprojectives(Integer(0))
Digraph on 0 vertices
dimension_vectors_of_level(k)[source]#

Return a Family of dimension vectors of level k.

EXAMPLES:

sage: DA = DiGraph([[4,3], [2,3], [2,1]])
sage: AR = DA.auslander_reiten_quiver()
sage: AR.dimension_vectors_of_level(1)
{1: v1, 2: v1 + v2 + v3, 3: v3, 4: v3 + v4}
sage: AR.dimension_vectors_of_level(3)
{1: v4, 3: v2}
sage: AR.dimension_vectors_of_level(10)
{}
sage: AR.dimension_vectors_of_level(-1)
 {1: v1 + v2, 2: v2, 3: v2 + v3 + v4, 4: v4}
sage: AR.dimension_vectors_of_level(-2)
{1: v3 + v4, 2: v1 + v2 + v3 + v4, 3: v1 + v2 + v3, 4: v2 + v3}

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: AR.dimension_vectors_of_level(1)
{1: v1 + 2*v2, 2: v2}
sage: AR.dimension_vectors_of_level(3)
{1: 5*v1 + 6*v2, 2: 4*v1 + 5*v2}
sage: AR.dimension_vectors_of_level(-1)
{1: v1, 2: 2*v1 + v2}
sage: AR.dimension_vectors_of_level(-3)
{1: 5*v1 + 4*v2, 2: 6*v1 + 5*v2}
>>> from sage.all import *
>>> DA = DiGraph([[Integer(4),Integer(3)], [Integer(2),Integer(3)], [Integer(2),Integer(1)]])
>>> AR = DA.auslander_reiten_quiver()
>>> AR.dimension_vectors_of_level(Integer(1))
{1: v1, 2: v1 + v2 + v3, 3: v3, 4: v3 + v4}
>>> AR.dimension_vectors_of_level(Integer(3))
{1: v4, 3: v2}
>>> AR.dimension_vectors_of_level(Integer(10))
{}
>>> AR.dimension_vectors_of_level(-Integer(1))
 {1: v1 + v2, 2: v2, 3: v2 + v3 + v4, 4: v4}
>>> AR.dimension_vectors_of_level(-Integer(2))
{1: v3 + v4, 2: v1 + v2 + v3 + v4, 3: v1 + v2 + v3, 4: v2 + v3}

>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> AR.dimension_vectors_of_level(Integer(1))
{1: v1 + 2*v2, 2: v2}
>>> AR.dimension_vectors_of_level(Integer(3))
{1: 5*v1 + 6*v2, 2: 4*v1 + 5*v2}
>>> AR.dimension_vectors_of_level(-Integer(1))
{1: v1, 2: 2*v1 + v2}
>>> AR.dimension_vectors_of_level(-Integer(3))
{1: 5*v1 + 4*v2, 2: 6*v1 + 5*v2}
injectives()[source]#

Return the injectives of self.

EXAMPLES:

sage: DE = DiGraph([[7,6], [6,5], [5,3], [4,3], [2,3], [1,2]])
sage: AR = DE.auslander_reiten_quiver()
sage: AR.injectives()
Finite family {1: <1, 9>, 2: <2, 9>, 3: <3, 9>, 4: <4, 9>,
               5: <5, 9>, 6: <6, 9>, 7: <7, 9>}
>>> from sage.all import *
>>> DE = DiGraph([[Integer(7),Integer(6)], [Integer(6),Integer(5)], [Integer(5),Integer(3)], [Integer(4),Integer(3)], [Integer(2),Integer(3)], [Integer(1),Integer(2)]])
>>> AR = DE.auslander_reiten_quiver()
>>> AR.injectives()
Finite family {1: <1, 9>, 2: <2, 9>, 3: <3, 9>, 4: <4, 9>,
               5: <5, 9>, 6: <6, 9>, 7: <7, 9>}
options = Current options for AuslanderReitenQuiver   - latex: node[source]#
projectives()[source]#

Return the projectives of self.

EXAMPLES:

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: AR = D.auslander_reiten_quiver()
sage: AR.projectives()
Finite family {1: <1, 1>, 2: <2, 1>}
>>> from sage.all import *
>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> AR = D.auslander_reiten_quiver()
>>> AR.projectives()
Finite family {1: <1, 1>, 2: <2, 1>}
quiver()[source]#

Return the quiver defining self.

EXAMPLES:

sage: DE = DiGraph([[7,8], [7,6], [5,6], [3,5], [4,3], [2,3], [1,2]])
sage: AR = DE.auslander_reiten_quiver()
sage: AR.quiver() == DE
True
>>> from sage.all import *
>>> DE = DiGraph([[Integer(7),Integer(8)], [Integer(7),Integer(6)], [Integer(5),Integer(6)], [Integer(3),Integer(5)], [Integer(4),Integer(3)], [Integer(2),Integer(3)], [Integer(1),Integer(2)]])
>>> AR = DE.auslander_reiten_quiver()
>>> AR.quiver() == DE
True
simples()[source]#

Return the simples of self.

EXAMPLES:

sage: DE = DiGraph([[7,8], [7,6], [5,6], [3,5], [4,3], [2,3], [1,2]])
sage: AR = DE.auslander_reiten_quiver()
sage: AR.simples()
Finite family {1: <1, 15>,  2: <1, 14>,  3: <8, 4>,  4: <4, 15>,
               5: <8, 3>,  6: <6, 1>,  7: <7, 15>,  8: <8, 1>}
>>> from sage.all import *
>>> DE = DiGraph([[Integer(7),Integer(8)], [Integer(7),Integer(6)], [Integer(5),Integer(6)], [Integer(3),Integer(5)], [Integer(4),Integer(3)], [Integer(2),Integer(3)], [Integer(1),Integer(2)]])
>>> AR = DE.auslander_reiten_quiver()
>>> AR.simples()
Finite family {1: <1, 15>,  2: <1, 14>,  3: <8, 4>,  4: <4, 15>,
               5: <8, 3>,  6: <6, 1>,  7: <7, 15>,  8: <8, 1>}
sage.quivers.ar_quiver.detect_dynkin_quiver(quiver)[source]#

Determine if quiver is a finite type Dynkin quiver.

EXAMPLES:

sage: from sage.quivers.ar_quiver import detect_dynkin_quiver
sage: D = DiGraph([[1,2], [2,3], [3, 4], [4,0], ['a','b'], ['b','c'], ['c','d'], ['c','e']])
sage: detect_dynkin_quiver(D)
D5xA5

sage: D = DiGraph([[1,2,'a'], [1,2,'b']], multiedges=True)
sage: detect_dynkin_quiver(D) is None
True
sage: D = DiGraph([[1, 2], [2, 3], [1, 3]])
sage: detect_dynkin_quiver(D) is None
True
sage: D = DiGraph([[1,2], [1,3], [1,4], [1,5]])
sage: detect_dynkin_quiver(D) is None
True
sage: D = DiGraph([[1,2], [2,3], [2,4], [4,5], [6,4]])
sage: detect_dynkin_quiver(D) is None
True
sage: D = DiGraph([[1,2], [2,3], [3,4], [4,5], [5,6], [6,7], [7,8], [8,9], [0,3]])
sage: detect_dynkin_quiver(D) is None
True
sage: D = DiGraph([[1,2], [2,3], [3,4], [4,5], [5,6], [6,7], [0,4]])
sage: detect_dynkin_quiver(D) is None
True
>>> from sage.all import *
>>> from sage.quivers.ar_quiver import detect_dynkin_quiver
>>> D = DiGraph([[Integer(1),Integer(2)], [Integer(2),Integer(3)], [Integer(3), Integer(4)], [Integer(4),Integer(0)], ['a','b'], ['b','c'], ['c','d'], ['c','e']])
>>> detect_dynkin_quiver(D)
D5xA5

>>> D = DiGraph([[Integer(1),Integer(2),'a'], [Integer(1),Integer(2),'b']], multiedges=True)
>>> detect_dynkin_quiver(D) is None
True
>>> D = DiGraph([[Integer(1), Integer(2)], [Integer(2), Integer(3)], [Integer(1), Integer(3)]])
>>> detect_dynkin_quiver(D) is None
True
>>> D = DiGraph([[Integer(1),Integer(2)], [Integer(1),Integer(3)], [Integer(1),Integer(4)], [Integer(1),Integer(5)]])
>>> detect_dynkin_quiver(D) is None
True
>>> D = DiGraph([[Integer(1),Integer(2)], [Integer(2),Integer(3)], [Integer(2),Integer(4)], [Integer(4),Integer(5)], [Integer(6),Integer(4)]])
>>> detect_dynkin_quiver(D) is None
True
>>> D = DiGraph([[Integer(1),Integer(2)], [Integer(2),Integer(3)], [Integer(3),Integer(4)], [Integer(4),Integer(5)], [Integer(5),Integer(6)], [Integer(6),Integer(7)], [Integer(7),Integer(8)], [Integer(8),Integer(9)], [Integer(0),Integer(3)]])
>>> detect_dynkin_quiver(D) is None
True
>>> D = DiGraph([[Integer(1),Integer(2)], [Integer(2),Integer(3)], [Integer(3),Integer(4)], [Integer(4),Integer(5)], [Integer(5),Integer(6)], [Integer(6),Integer(7)], [Integer(0),Integer(4)]])
>>> detect_dynkin_quiver(D) is None
True