Affine simply-laced Dynkin diagrams #
The simply-laced affine diagrams carry one node more than the corresponding finite simply-laced
diagram. Throughout this file a name such as Aₙ or E₆ refers to the affine diagram, matching
the constructors below.
This file introduces the diagrams as an enumeration TauCeti.AffineDynkinType, attaches to each
its node count, its underlying SimpleGraph on Fin t.nodes, and its generalized Cartan matrix,
and proves the two facts every consumer needs about a valid diagram, one whose parameter is in
the range of the classification: it is connected, and its vector of marks is a null vector of the
Cartan matrix, positive at every node and normalized to 1 at a distinguished one. The marks span
the radical of the symmetrized form; only the null-vector half of that statement is proved here.
TauCeti.DynkinType has no affine constructors, and Mathlib's CartanMatrix family names no
affine type either, with one exception: the generalized CartanMatrix.E n continues the E
diagram past the finite range, and CartanMatrix.E 9 is the affine E₈ matrix under a different
numbering, and it is what the affine E₈ matrix below is defined to be
(TauCeti.AffineDynkinType.cartanMatrix_E8_eq_submatrix_cartanMatrix_E). Tau Ceti also
already carries affine matrices as obstructions inside the finite-type classification:
TauCeti.doubleForkCartanMatrix n is the affine Dₘ matrix for m = n + 5, and
TauCeti.starCartanMatrix at ![2, 2, 2], ![1, 3, 3] and ![1, 2, 5] is the affine E₆, E₇
and E₈ matrix. Those live on the sum and sigma
index types that make the classification argument uniform rather than on Fin, and their marks are
rational and unnormalized -- TauCeti.starMark ![2, 2, 2] is 9 times the marks below -- so
identifying them with the diagrams of this file is a relabelling problem of its own, of a piece
with the Bourbaki relabelling that the roadmap asks for and that is not proved here either. This
file is the affine complement, and it is deliberately graph first, because its consumers --
zigzag and preprojective algebras, and the McKay correspondence -- start from the diagram rather
than from a root system.
Conventions #
Except for A₁, an affine simply-laced diagram is a simple graph, and its generalized Cartan
matrix is 2I - A for the adjacency matrix A. The exception is genuine: A₁ has the
multiplicity-two matrix !![2, -2; -2, 2], which is not 2I - A for any simple graph
(TauCeti.AffineDynkinType.cartanMatrix_A_one_ne_two_smul_one_sub_adjMatrix). It is carved out by
TauCeti.AffineDynkinType.IsGraphical, the predicate t ≠ A 1, which every statement reading an
entry of the Cartan matrix off the graph assumes; the underlying graph of A₁ is still defined,
as the single edge obtained by forgetting the multiplicity, but it does not determine the matrix.
The statements that survive at A₁ -- the diagonal, the symmetry, the diagram of the matrix and
the null vector -- carry no such hypothesis.
The node numberings are chosen so that every node other than 0 has a neighbour with a smaller
number, which reduces connectedness to a single induction. Explicitly:
Aₙis the cycle onFin (n + 1), Mathlib'sSimpleGraph.cycleGraph;Dₙis the path0 - 1 - ⋯ - (n-2)with a further leafn - 1attached at node1and a further leafnattached at noden - 3. Forn = 4those two attachment nodes coincide and the diagram is the four-leaf star, as it should be;E₆,E₇,E₈are the treesT₃,₃,₃,T₂,₄,₄,T₂,₃,₆with the trivalent node numbered0and the arms numbered consecutively outwards.
Main definitions #
TauCeti.AffineDynkinType: the enumerationAₙ,Dₙ,E₆,E₇,E₈.TauCeti.AffineDynkinType.nodes,.Valid: node count, and the range on which the names of the classification are pairwise distinct.TauCeti.AffineDynkinType.IsGraphical: the diagrams other thanA₁, those whose generalized Cartan matrix is read off a simple graph.TauCeti.AffineDynkinType.graph: the underlying simple graph.TauCeti.AffineDynkinType.cartanMatrix: the generalized Cartan matrix.TauCeti.AffineDynkinType.marks: the marks, and.affineNode, the node whose mark is1.
Main results #
TauCeti.AffineDynkinType.graph_connected: every valid affine simply-laced diagram is connected.TauCeti.AffineDynkinType.exists_adj_graph: every node of a valid diagram has a neighbour.TauCeti.AffineDynkinType.graph_A_adj,.graph_D_adj,.graph_E6_adj,.graph_E7_adj,.graph_E8_adj: adjacency in each diagram, as a condition on node numbers.TauCeti.AffineDynkinType.cartanMatrix_eq_graphCartanMatrix: outsideA₁the Cartan matrix is the matrix2I - Aof the underlying graph,SimpleGraph.graphCartanMatrix.TauCeti.AffineDynkinType.graph_eq_diagramGraph_cartanMatrix: the graph is the diagram of the Cartan matrix in the sense ofTauCeti.diagramGraph, atA₁too.TauCeti.AffineDynkinType.cartanMatrix_E8_eq_submatrix_cartanMatrix_E: affineE₈is Mathlib'sCartanMatrix.E 9, relabelled, which is how it is defined.TauCeti.AffineDynkinType.sum_marks_neighborFinset_eq_two_mul: twice the mark of a node is the sum of the marks of its neighbours.TauCeti.AffineDynkinType.cartanMatrix_mulVec_marks_eq_zero: the marks are a null vector,Cδ = 0.TauCeti.AffineDynkinType.marks_affineNode: the mark at the affine node is1.
References #
This is the affine simply-laced family of Layer 0 of
TauCetiRoadmap/ZigzagPreprojective/README.md; the E₈ numbering below is the one that roadmap's
Suggested.lean fixes in affineE8ArmRel. See V. Kac, Infinite dimensional Lie algebras,
3rd ed., Chapter 4 and Table Aff 1, for the diagrams, their marks and the null root.
The simply-laced affine Dynkin diagrams: the families Aₙ and Dₙ, whose constructors accept
every natural number, together with the three exceptional diagrams. The ranges on which these are
the affine simply-laced diagrams of the classification are carried by
TauCeti.AffineDynkinType.Valid, not by the constructors.
- A
(n : ℕ)
: AffineDynkinType
The affine diagram
Aₙ: the cycle onn + 1nodes forn ≥ 2, and forn = 1the two nodes joined by a double edge. - D
(n : ℕ)
: AffineDynkinType
The affine diagram
Dₙ, a path with two leaves attached at each end. - E6 : AffineDynkinType
The exceptional affine diagram
E₆. - E7 : AffineDynkinType
The exceptional affine diagram
E₇. - E8 : AffineDynkinType
The exceptional affine diagram
E₈.
Instances For
Equations
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.A a) (TauCeti.AffineDynkinType.A b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.A n) (TauCeti.AffineDynkinType.D n_1) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.A n) TauCeti.AffineDynkinType.E6 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.A n) TauCeti.AffineDynkinType.E7 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.A n) TauCeti.AffineDynkinType.E8 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.D n) (TauCeti.AffineDynkinType.A n_1) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.D a) (TauCeti.AffineDynkinType.D b) = if h : a = b then h ▸ isTrue ⋯ else isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.D n) TauCeti.AffineDynkinType.E6 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.D n) TauCeti.AffineDynkinType.E7 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq (TauCeti.AffineDynkinType.D n) TauCeti.AffineDynkinType.E8 = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E6 (TauCeti.AffineDynkinType.A n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E6 (TauCeti.AffineDynkinType.D n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E6 TauCeti.AffineDynkinType.E6 = isTrue ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E6 TauCeti.AffineDynkinType.E7 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_15✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E6 TauCeti.AffineDynkinType.E8 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_16✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E7 (TauCeti.AffineDynkinType.A n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E7 (TauCeti.AffineDynkinType.D n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E7 TauCeti.AffineDynkinType.E6 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_19✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E7 TauCeti.AffineDynkinType.E7 = isTrue ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E7 TauCeti.AffineDynkinType.E8 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_20✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E8 (TauCeti.AffineDynkinType.A n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E8 (TauCeti.AffineDynkinType.D n) = isFalse ⋯
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E8 TauCeti.AffineDynkinType.E6 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_23✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E8 TauCeti.AffineDynkinType.E7 = isFalse TauCeti.instDecidableEqAffineDynkinType.decEq._proof_24✝
- TauCeti.instDecidableEqAffineDynkinType.decEq TauCeti.AffineDynkinType.E8 TauCeti.AffineDynkinType.E8 = isTrue ⋯
Instances For
The number of nodes of an affine simply-laced diagram, one more than the rank of the finite
type it extends. This is exposed because it appears in the type of
TauCeti.AffineDynkinType.graph, so even reading E6.graph as a graph on Fin 7 needs
Fin E6.nodes to reduce.
Equations
Instances For
The ranges on which the affine simply-laced diagrams are pairwise distinct. Outside them the
names are degenerate or repeat one another: A₀ names no diagram, while D₃ is A₃ and D₂
is A₁ × A₁.
Equations
Instances For
Equations
- (TauCeti.AffineDynkinType.A n).instDecidablePredValid = { decide := Nat.ble 1 n, reflects_decide := ⋯ }
- (TauCeti.AffineDynkinType.D n).instDecidablePredValid = { decide := Nat.ble 4 n, reflects_decide := ⋯ }
- TauCeti.AffineDynkinType.E6.instDecidablePredValid = { decide := true, reflects_decide := TauCeti.AffineDynkinType.instDecidablePredValid._proof_3 }
- TauCeti.AffineDynkinType.E7.instDecidablePredValid = { decide := true, reflects_decide := TauCeti.AffineDynkinType.instDecidablePredValid._proof_4 }
- TauCeti.AffineDynkinType.E8.instDecidablePredValid = { decide := true, reflects_decide := TauCeti.AffineDynkinType.instDecidablePredValid._proof_5 }
The affine simply-laced diagrams whose generalized Cartan matrix is 2I - A for the adjacency
matrix A of the underlying simple graph, namely every diagram but A₁, whose two nodes carry a
double edge and whose matrix is the multiplicity-two !![2, -2; -2, 2]; see
TauCeti.AffineDynkinType.cartanMatrix_A_one_ne_two_smul_one_sub_adjMatrix. This is independent of
TauCeti.AffineDynkinType.Valid: the formula holds at the degenerate diagrams too, and a statement
that also needs those excluded assumes Valid separately.
Equations
- t.IsGraphical = (t ≠ TauCeti.AffineDynkinType.A 1)
Instances For
Equations
- t.instDecidablePredIsGraphical = { decide := !decide (t = TauCeti.AffineDynkinType.A 1), reflects_decide := ⋯ }
Graphicality unfolded: TauCeti.AffineDynkinType.IsGraphical is a def into Prop, so a
consumer outside this file needs this equation to read it.
The underlying graphs #
The underlying simple graph of an affine simply-laced diagram, on the node set Fin t.nodes.
Only A₁ is not determined by this graph: its generalized Cartan matrix has the off-diagonal
entry -2, recording a double edge, and the graph below is the single edge left after forgetting
that multiplicity. Every statement reading an entry of the Cartan matrix off the graph therefore
assumes TauCeti.AffineDynkinType.IsGraphical.
Equations
- (TauCeti.AffineDynkinType.A n).graph = SimpleGraph.cycleGraph (n + 1)
- (TauCeti.AffineDynkinType.D n).graph = SimpleGraph.fromRel (TauCeti.AffineDynkinType.dRel✝ n)
- TauCeti.AffineDynkinType.E6.graph = SimpleGraph.fromRel fun (i j : Fin TauCeti.AffineDynkinType.E6.nodes) => (i, j) ∈ TauCeti.AffineDynkinType.e6Edges✝
- TauCeti.AffineDynkinType.E7.graph = SimpleGraph.fromRel fun (i j : Fin TauCeti.AffineDynkinType.E7.nodes) => (i, j) ∈ TauCeti.AffineDynkinType.e7Edges✝
- TauCeti.AffineDynkinType.E8.graph = SimpleGraph.fromRel fun (i j : Fin TauCeti.AffineDynkinType.E8.nodes) => (i, j) ∈ TauCeti.AffineDynkinType.e8Edges✝
Instances For
Equations
- (TauCeti.AffineDynkinType.A n).instDecidableRelFinNodesAdjGraph = TauCeti.AffineDynkinType.instDecidableRelFinNodesAdjGraph._aux_1 n
- (TauCeti.AffineDynkinType.D n).instDecidableRelFinNodesAdjGraph = TauCeti.AffineDynkinType.instDecidableRelFinNodesAdjGraph._aux_3 n
- TauCeti.AffineDynkinType.E6.instDecidableRelFinNodesAdjGraph = TauCeti.AffineDynkinType.instDecidableRelFinNodesAdjGraph._aux_5
- TauCeti.AffineDynkinType.E7.instDecidableRelFinNodesAdjGraph = TauCeti.AffineDynkinType.instDecidableRelFinNodesAdjGraph._aux_7
- TauCeti.AffineDynkinType.E8.instDecidableRelFinNodesAdjGraph = TauCeti.AffineDynkinType.instDecidableRelFinNodesAdjGraph._aux_9
Adjacency in Dₙ, as a condition on node numbers: consecutive numbers along the path
0 - 1 - ⋯ - (n-2), the leaf n - 1 at node 1, and the leaf n at node n - 3, each in both
orientations.
Adjacency in E₈ = T₂,₃,₆: the eight edges, listed as the pairs of node numbers they join,
smaller number first.
Connectedness #
Every valid affine simply-laced diagram is connected. Validity is needed: the degenerate
constructors outside TauCeti.AffineDynkinType.Valid, such as D 2, are disconnected.
Every node of a valid affine simply-laced diagram has a neighbour: the diagram is connected and has at least two nodes.
The generalized Cartan matrix #
The generalized Cartan matrix of an affine simply-laced diagram: 2I - A for the adjacency
matrix A of the underlying graph, except at A₁, whose two nodes carry a double edge and whose
matrix is !![2, -2; -2, 2]. E₈ is not spelled out either but taken from Mathlib, as the
relabelling of the generalized CartanMatrix.E 9 that exchanges the two trivalent nodes; this is
the same matrix, and TauCeti.AffineDynkinType.cartanMatrix_eq_graphCartanMatrix covers it like
every other diagram.
Instances For
The entries of the A₁ Cartan matrix: 2 on the diagonal, and the multiplicity-two -2 off
it. Reading the matrix literal of TauCeti.AffineDynkinType.cartanMatrix_A_one entry by entry
takes a fin_cases on both indices, and the body of TauCeti.AffineDynkinType.cartanMatrix is
not exposed, so decide cannot do it outside this file.
Away from A₁, the generalized Cartan matrix is the matrix 2I - A of the underlying
graph, the degenerate diagrams outside TauCeti.AffineDynkinType.Valid included. This is what
carries the general results about SimpleGraph.graphCartanMatrix over to the diagrams.
At E₈ it is
where Mathlib's numbering of CartanMatrix.E 9 is matched up with the numbering of this file.
The entries of the generalized Cartan matrix away from A₁: 2 on the diagonal, -1 at an
edge and 0 otherwise.
The diagonal entries of the generalized Cartan matrix are 2, A₁ included.
Away from A₁, an edge of the diagram contributes the entry -1. At A₁ the single edge
contributes -2.
Two distinct non-adjacent nodes contribute the entry 0.
The generalized Cartan matrix of an affine simply-laced diagram is symmetric, A₁ included:
away from A₁ the matrix is 2I - A and an adjacency matrix is symmetric, while at A₁ the
explicit multiplicity-two matrix !![2, -2; -2, 2] is symmetric outright.
The graph of an affine simply-laced diagram is the diagram of its generalized Cartan
matrix, A₁ included: the double edge there still shows up as a pair of nonzero entries. This is
what carries the general results about TauCeti.diagramGraph over to graph.
The A₁ Cartan matrix is not 2I minus a simple-graph adjacency matrix. Its off-diagonal
entry is -2, while 2I - A has off-diagonal entries 0 and -1 for the adjacency matrix A
of any simple graph. This is why every statement above reading an entry of cartanMatrix off
graph assumes TauCeti.AffineDynkinType.IsGraphical.
Affine E₈ is Mathlib's CartanMatrix.E 9, whose generalized E-family continues the
E diagram past the finite range: this is how TauCeti.AffineDynkinType.cartanMatrix defines it.
The relabelling is the transposition exchanging the trivalent node, numbered 0 here and 3
there; the arms of 1, 2 and 5 nodes then match up.
The marks and the null vector #
The marks of an affine simply-laced diagram: a positive integer vector δ, normalized so
that δ is 1 at TauCeti.AffineDynkinType.affineNode. For a valid type it is killed by the
generalized Cartan matrix (TauCeti.AffineDynkinType.cartanMatrix_mulVec_marks_eq_zero), and for
a valid type away from A₁ this is the local balance condition
2 δᵢ = ∑_{j ∼ i} δⱼ at every node.
Equations
- (TauCeti.AffineDynkinType.A n).marks = fun (x : Fin (TauCeti.AffineDynkinType.A n).nodes) => 1
- (TauCeti.AffineDynkinType.D n).marks = TauCeti.AffineDynkinType.dMarks✝ n
- TauCeti.AffineDynkinType.E6.marks = ![3, 2, 1, 2, 1, 2, 1]
- TauCeti.AffineDynkinType.E7.marks = ![4, 2, 3, 2, 1, 3, 2, 1]
- TauCeti.AffineDynkinType.E8.marks = ![6, 3, 4, 2, 5, 4, 3, 2, 1]
Instances For
The affine node of an affine simply-laced diagram: the distinguished node at which the
marks are normalized to 1 (TauCeti.AffineDynkinType.marks_affineNode).
Equations
Instances For
Every mark is positive.
The marks are normalized to be 1 at the affine node.
The local balance condition #
The marks satisfy the local balance condition: at every valid diagram other than A₁,
twice the mark of a node is the sum of the marks of its neighbours. Validity is needed as well as
graphicality here: at the degenerate A₀ the single node has no neighbour at all, while its mark
is 1.
The marks are a null vector of the generalized Cartan matrix: Cδ = 0. Together with
TauCeti.AffineDynkinType.marks_pos and TauCeti.AffineDynkinType.marks_affineNode this exhibits
the radical direction of an affine simply-laced diagram, normalized at the affine node.