Duality of Dynkin types #
Interchanging the roots and the coroots of a root pairing (RootPairing.flip) transposes every
pairing ⟨αᵢ, αⱼ^∨⟩, hence transposes the Cartan matrix of a base
(RootPairing.Base.cartanMatrix_flip, proved in TauCeti.LinearAlgebra.RootSystem.Flip).
On the classification side that operation permutes the Dynkin types, and this file pins the
permutation: TauCeti.DynkinType.dual exchanges Bₙ with Cₙ and fixes every other type.
Duality is what makes the orientation carried by TauCeti.HasCartanType meaningful, since Bₙ and
Cₙ are exactly the pair of types that the orientation separates.
The dual type is not read off the transposed matrix on the nose. Transposing a Cartan matrix does
not merely relabel the diagram, it reverses every arrow, and for F₄ and G₂ the reversed diagram
is the original one read backwards. So duality carries a relabelling of the nodes as well as a
change of type, and TauCeti.DynkinType.dualNodeEquiv is that relabelling: the identity for the
classical families and the E types, and the reversal Fin.revPerm for F₄ and G₂.
TauCeti.DynkinType.Valid is deliberately not preserved by duality, and the failure is exactly
the low-rank coincidence B 2 = C 2: B 2 is valid and its dual C 2 is not, because the two
name the same root system and the enumeration keeps only one of the names. Away from that pair
validity does transfer (TauCeti.DynkinType.valid_dual_iff). The last section shows that nothing
is lost there: at rank at most two a base has a Cartan type exactly when it has the dual type
(TauCeti.hasCartanType_dual_iff_of_rank_le_two), because transposing a matrix with constant
diagonal and at most two indices is itself a simultaneous relabelling.
Main definitions #
TauCeti.DynkinType.dual: the dual Dynkin type, exchangingBₙandCₙ.TauCeti.DynkinType.dualNodeEquiv: the relabelling of nodes that duality carries.
Main results #
TauCeti.DynkinType.cartanMatrix_dual: the standard Cartan matrix of the dual type is the transpose of the standard Cartan matrix, read throughdualNodeEquiv.TauCeti.hasCartanType_flip_iff: the Cartan type of a base and the Cartan type of the flipped base are dual. In particular a base is of typeBₙexactly when the flipped base is of typeCₙ(TauCeti.hasCartanType_flip_C_iff, andTauCeti.hasCartanType_flip_B_ifffor the other orientation).TauCeti.DynkinType.valid_dual_iff: validity transfers along duality except for the pairB 2,C 2.TauCeti.hasCartanType_dual_iff_of_rank_le_two: at rank at most two a type and its dual match the same bases, which is why droppingC 2from the valid types loses nothing.
References #
This file supplies the duality half of the DynkinType layer of
TauCetiRoadmap/RepresentationTheory/RootSystems/README.md: Layer 5 records that
DynkinType.cartanMatrix (.B n) is the transpose of DynkinType.cartanMatrix (.C n) and that the
two types are "identified only after flip (duality)", and Layer 6 asks for the adjoint root datum
to be RootPairing.flip of the dual type's datum. See Bourbaki, Lie Groups and Lie Algebras,
Chapters 4-6, plates I-IX, for the standard Cartan matrices and their duals.
The dual Dynkin type. Duality reverses the arrows of a diagram, which exchanges the types
Bₙ and Cₙ — the one pair whose standard Cartan matrices are transposes of one another without
being equal — and fixes all the others. It is realized on root systems by RootPairing.flip; see
TauCeti.hasCartanType_flip_iff.
This is @[expose]d because it occurs in the type of TauCeti.DynkinType.dualNodeEquiv below,
whose constructor equations do not even elaborate unless (.A n).dual.rank reduces to n.
Equations
- (TauCeti.DynkinType.A n).dual = TauCeti.DynkinType.A n
- (TauCeti.DynkinType.B n).dual = TauCeti.DynkinType.C n
- (TauCeti.DynkinType.C n).dual = TauCeti.DynkinType.B n
- (TauCeti.DynkinType.D n).dual = TauCeti.DynkinType.D n
- TauCeti.DynkinType.E6.dual = TauCeti.DynkinType.E6
- TauCeti.DynkinType.E7.dual = TauCeti.DynkinType.E7
- TauCeti.DynkinType.E8.dual = TauCeti.DynkinType.E8
- TauCeti.DynkinType.F4.dual = TauCeti.DynkinType.F4
- TauCeti.DynkinType.G2.dual = TauCeti.DynkinType.G2
Instances For
Duality is an involution.
Duality is injective, being an involution; so distinct types stay distinct after dualizing.
Duality preserves the rank: it reverses arrows without adding or removing nodes.
Duality preserves simple-lacedness: a diagram has an arrow to reverse exactly when its dual does.
Validity transfers along duality away from the pair B 2, C 2. The excluded pair is the
low-rank coincidence B 2 = C 2: both names describe the same root system, and the enumeration
keeps only B 2 valid. So both orientations of that pair genuinely fail — B 2 is valid while its
dual C 2 is not, and C 2 is not valid while its dual B 2 is (simp proves either from
TauCeti.DynkinType.valid_B, TauCeti.DynkinType.valid_C and dual_B, dual_C). No base is lost
by keeping only the first name; see TauCeti.hasCartanType_dual_iff_of_rank_le_two.
The relabelling of nodes carried by duality. Transposing a Cartan matrix reverses the
arrows of its diagram, and for the classical families and the E types the result is the standard
matrix of the dual type already in the Bourbaki numbering. For F₄ and G₂ — the two types that
are self-dual without being simply laced — the reversed diagram is the original one read backwards,
so the relabelling there is Fin.revPerm.
Equations
- (TauCeti.DynkinType.A n).dualNodeEquiv = Equiv.refl (Fin (TauCeti.DynkinType.A n).rank)
- (TauCeti.DynkinType.B n).dualNodeEquiv = Equiv.refl (Fin (TauCeti.DynkinType.B n).rank)
- (TauCeti.DynkinType.C n).dualNodeEquiv = Equiv.refl (Fin (TauCeti.DynkinType.C n).rank)
- (TauCeti.DynkinType.D n).dualNodeEquiv = Equiv.refl (Fin (TauCeti.DynkinType.D n).rank)
- TauCeti.DynkinType.E6.dualNodeEquiv = Equiv.refl (Fin TauCeti.DynkinType.E6.rank)
- TauCeti.DynkinType.E7.dualNodeEquiv = Equiv.refl (Fin TauCeti.DynkinType.E7.rank)
- TauCeti.DynkinType.E8.dualNodeEquiv = Equiv.refl (Fin TauCeti.DynkinType.E8.rank)
- TauCeti.DynkinType.F4.dualNodeEquiv = Fin.revPerm
- TauCeti.DynkinType.G2.dualNodeEquiv = Fin.revPerm
Instances For
The standard Cartan matrix of the dual type is the transpose, read through the node
relabelling TauCeti.DynkinType.dualNodeEquiv. For the simply-laced types the standard matrices
are symmetric and there is nothing to move; for Bₙ and Cₙ the transposition is
CartanMatrix.B_transpose; and for F₄ and G₂ the transpose is the matrix itself with its nodes
reversed.
TauCeti.DynkinType.cartanMatrix_dual as an identity of matrices rather than of entries.
Reversing the nodes of a standard Cartan matrix of rank at most two transposes it. With at
most two indices the only off-diagonal entries form a single transposed pair, which the reversal
swaps, while the diagonal is constant. This is why the orientation built into
TauCeti.HasCartanType carries no information at rank at most two.
The Cartan type of a flipped base is the dual type. Flipping transposes the Cartan matrix
(RootPairing.Base.cartanMatrix_flip), and transposing a standard Cartan matrix is passing
to the dual type up to the node relabelling TauCeti.DynkinType.dualNodeEquiv.
A base has Cartan type t exactly when the flipped base has the dual type. This is what
gives TauCeti.DynkinType.dual its meaning: passing from a root system to its dual is passing from
a Dynkin type to its dual.
A base is of type Bₙ exactly when the flipped base is of type Cₙ. This is the worked
instance of TauCeti.hasCartanType_flip_iff: Bₙ and Cₙ are the pair of types that the oriented
matching of TauCeti.HasCartanType keeps apart, and duality is what identifies them.
It is stated separately from TauCeti.hasCartanType_flip_iff because that lemma matches a flipped
type t.dual syntactically, so neither simp nor rw recovers this instance from it: doing so
would mean solving .C n = ?t.dual for ?t.
The other orientation of TauCeti.hasCartanType_flip_C_iff: a base is of type Cₙ exactly
when the flipped base is of type Bₙ.
At rank at most two a base has a Cartan type exactly when it has the dual type. The
enumeration keeps B 2 valid and drops C 2, and this is what makes that choice harmless: the two
names match exactly the same bases. From rank three on the statement fails, since Bₙ and Cₙ are
then genuinely different root systems.
Types B 2 and C 2 match exactly the same bases, the low-rank coincidence that
TauCeti.DynkinType.Valid resolves by keeping only B 2.