Finite and Affine Coxeter Groups#
Functions related to the classification of finite and affine Coxeter groups are described in this section. This classification is due to Cartan [Cartan, 1952] and Coxeter [Coxeter, 1934].
An affine reflection group is a group generated by reflections in affine space (in other words, real reflections in a hyperplane that does not necessarily pass through the origin). A Coxeter group is called affine if it is infinite and it has a representation as a discrete, properly acting, affine reflection group (see [Bourbaki, 1968] for more details on discreteness and proper action). Note that a Coxeter group is finite if, and only if, it has a representation as a discrete, properly acting group of reflections of the sphere; hence finite Coxeter groups are sometimes called spherical.
A Coxeter group is finite if, and only if, all its irreducible components are finite; a Coxeter group is affine if, and only if, all its irreducible components are finite or affine, and at least one component is affine. So it suffices to classify irreducible Coxeter groups.
The only irreducible noncrystallographic finite Coxeter groups are \(H_3\), \(H_4\) and \(I_2(m)\) for \(m = 5\) and \(m > 6\). The Coxeter graphs of these groups are: H3 1—2—3 H4 1—2—3—4 5 5 I2(m) 1—2 m Note that there is some redundancy in this classification; specifically \(A_1=B_1=C_1=D_1\), \(A_2=I_2(3)\), \(B_2=C_2=I_2(4)\), \(D_2=A_1+A_1\), \(D_3=A_3\), \(G_2=I_2(6)\). Furthermore, for \(n\ge3\), types \(B_n\) and \(C_n\) have identical Coxeter matrices but inequivalent crystallographic Cartan matrices for \(n>2\).
The labels on the vertices of these diagrams show the standard vertex order used in Magma, which is consistent with the order used in [Bourbaki, 1968].
- IsCoxeterFinite(M): AlgMatElt BoolElt#
- IsCoxeterFinite(G): GrphUnd BoolElt#
- IsCoxeterFinite(C): AlgMatElt BoolElt#
- IsCoxeterFinite(D): GrphDir BoolElt#
- IsCoxeterFinite(N): MonStgElt BoolElt#
Returns
trueif, and only if, the corresponding Coxeter group is finite. The input variable can be a Coxeter matrix \(M\), Coxeter graph \(G\), Cartan matrix \(C\), Dynkin digraph \(D\), or Cartan name given by the string \(N\).
- IsCoxeterAffine(M): AlgMatElt BoolElt#
- IsCoxeterAffine(G): GrphUnd BoolElt#
- IsCoxeterAffine(C): AlgMatElt BoolElt#
- IsCoxeterAffine(D): GrphDir BoolElt#
- IsCoxeterAffine(N): MonStgElt BoolElt#
Returns
trueif, and only if, the corresponding Coxeter group is affine. The input variable can be a Coxeter matrix \(M\), Coxeter graph \(G\), Cartan matrix \(C\), Dynkin digraph \(D\), or Cartan name given by the string \(N\).
- Example: Testing#
> IsCoxeterAffine("A~2"); true %%a> assert $1; > IsCoxeterAffine("A~2B2"); true %%a> assert $1; > IsCoxeterAffine("A2B2"); false %%a> assert not $1; > IsCoxeterFinite("A2B2"); true %%a> assert $1;
- CoxeterMatrix(N): MonStgElt AlgMatElt#
The Coxeter matrix with Cartan name given by the string \(N\).
- CoxeterGraph(N): MonStgElt GrpUnd#
The Coxeter graph with Cartan name given by the string \(N\).
- CartanMatrix(N): MonStgElt AlgMatElt#
BaseField : MonStgElt Default: ``NumberField"
Symmetric : BoolElt Default: \texttt{false}
The Cartan matrix with Cartan name given by the string \(N\). By default, the crystallographic matrix is returned for crystallographic types; otherwise the Cartan matrix with \(c_{ij}=-4\cos^2(\pi/m_{ij})\), \(c_{ji}=-1\) when \(m_{ij}\ne2\) and \(i<j\) is returned.
If the
Symmetricflag is settrue, the symmetric Cartan matrix with \(c_{ij}=c_{ji}=-2\cos(\pi/m_{ij})\) is returned.The
BaseFieldflag determines the field over which the Cartan matrix is defined. If the matrix is crystallographic however, it is defined over the integers regardless of the value of this flag. The possible values are:1.
"NumberField": An algebraic number field. This is the default. See Chapter FldNum:main.2.
"Cyclotomic"or"SparseCyclotomic": A cyclotomic field with the sparse representation for elements. See Chapter ChapFldCyc.3.
"DenseCyclotomic": A cyclotomic field with the dense representation for elements. See Chapter ChapFldCyc.
- DynkinDigraph(N): MonStgElt GrphDir#
The Dynkin digraph with Cartan name given by the string \(N\). The Cartan name must be crystallographic, i.e. it cannot involve types \(H_3\), \(H_4\) and \(I_2(m)\).
- Example: Matrices And Graphs#
The code for interpreting a string as a Cartan name is quite flexible: letters and numbers must alternate, except in type \(I\) where brackets must be used.
> CoxeterMatrix("I2(7)"); [1 7] [7 1] > CoxeterGraph("A3"); Graph Vertex Neighbours 1 2 ; 2 1 3 ; 3 2 ; > CartanMatrix("H3" : Symmetric); [ 2 -$.1 0] [-$.1 2 -1] [ 0 -1 2] > DynkinDigraph("A~2"); Digraph Vertex Neighbours 1 2 3 ; 2 1 3 ; 3 1 2 ; > M := CoxeterMatrix("A_5B3 c2I2 (5)"); > CartanName(M); A5 B3 B2 I2(5)
- IrreducibleCoxeterMatrix(X, n): MonStgElt, RngIntElt AlgMatElt#
The irreducible Coxeter matrix with Cartan name \(X_n\) (or \(I_2(n)\) if \(X=\)
"I").
- IrreducibleCoxeterGraph(X, n): MonStgElt, RngIntElt GrpUnd#
The irreducible Coxeter graph with Cartan name \(X_n\) (or \(I_2(n)\) if \(X=\)
"I").
- IrreducibleCartanMatrix(X, n): MonStgElt, RngIntElt AlgMatElt#
BaseField : MonStgElt Default: ``NumberField"
Symmetric : BoolElt Default: \texttt{false}
The irreducible Cartan matrix with Cartan name \(X_n\) (or \(I_2(n)\) if \(X=\)
"I").If the
Symmetricflag is settrue, the symmetric Cartan matrix with \(c_{ij}=c_{ji}=-2\cos(\pi/m_{ij})\) is returned.The
BaseFieldflag determines which field the Cartan matrix is defined over. If the matrix is crystallographic however, it is defined over the integers regardless of the value of this flag. The possible values are:1.
"NumberField": An algebraic number field. This is the default. See Chapter FldNum:main.2.
"Cyclotomic"or"SparseCyclotomic": A cyclotomic field with the sparse representation for elements. See Chapter ChapFldCyc.3.
"DenseCyclotomic": A cyclotomic field with the dense representation for elements. See Chapter ChapFldCyc.
- IrreducibleDynkinDigraph(X, n): MonStgElt, RngIntElt GrphDir#
The irreducible Dynkin digraph with Cartan name \(X_n\). The Cartan name must be crystallographic, i.e. it cannot involve types \(H_3\), \(H_4\) or \(I_2(m)\).
- Example: Irreducible Coxeter#
These functions are useful in loops.
> for n in [1..5] do > IsTree(IrreducibleCoxeterGraph("A~", n)); > end for; true false false false false > C := &join[ IrreducibleCoxeterGraph(t, 4) : t in ["A","B","C","D","F"] ];
- IsCoxeterIsomorphic(N1, N2): MonStgElt, MonStgElt BoolElt#
Returns
trueif and only if the Cartan names given by the strings \(N_1\) and \(N_2\) correspond to isomorphic Coxeter systems.
- IsCartanEquivalent(N1, N2): MonStgElt, MonStgElt BoolElt#
Returns
trueif and only if the Cartan names given by the strings \(N_1\) and \(N_2\) correspond to Cartan equivalent Cartan matrices. The Cartan names must be crystallographic; i.e., they cannot involve types \(H_3\), \(H_4\) and \(I_2(m)\).
- Example: Isomorphism And Equivalence#
> IsCoxeterIsomorphic("A1A1", "D2"); true %%a> assert $1; > IsCoxeterIsomorphic("B5", "C5"); true %%a> assert $1; > IsCartanEquivalent("B5", "C5"); false %%a> assert not $1;
- IsSimplyLaced(N): MonStgElt BoolElt#
Returns
trueif, and only if, the Coxeter matrix with Cartan name given by the string \(N\) is simply laced, i.e. all its entries are 1, 2, or 3.
- CoxeterGroupOrder(N): MonStgElt .#
- CoxeterGroupFactoredOrder(N): MonStgElt .#
The (factored) order of the Coxeter group with Cartan name given by the string \(N\).
- NumberOfPositiveRoots(N): MonStgElt .#
- NumPosRoots(N): MonStgElt .#
The number of positive roots of the Coxeter group with Cartan name given by the string \(N\). See Subsection Simple and Positive Roots for the definition of positive roots.
- FundamentalGroup(N): MonStgElt GrpAb#
The fundamental group of the crystallographic Cartan matrix with Cartan name given by the string \(N\), i.e. \({\mathbb{Z}}^n/\Gamma\) where \(\Gamma\) is the lattice generated by the rows of the Cartan matrix. The natural mapping \({\mathbb{Z}}^n\to{\mathbb{Z}}^n/\Gamma\) is the second returned value.
- Example: Group Orders#
> CoxeterGroupOrder("F4"); 1152 %%a> assert $1 eq 1152; > CoxeterGroupFactoredOrder("F4"); [ <2, 7>, <3, 2> ] > NumPosRoots("F4"); 24 %%a> assert $1 eq 24; > #FundamentalGroup("F4"); 1 %%a> assert $1 eq 1;
- CartanName(M): AlgMatElt MonStgElt#
- CartanName(G): GrphUnd MonStgElt#
- CartanName(C): AlgMatElt MonStgElt#
- CartanName(D): GrphDir MonStgElt#
The Cartan name of a Coxeter matrix \(M\), Coxeter graph \(G\), Cartan matrix \(C\), or Dynkin digraph \(D\). If the corresponding Coxeter group is neither finite nor affine, an error is flagged.
- Example: Cartan Name#
> CartanName(SymmetricMatrix([1, 3,1, 2,3,1])); A3 > CartanName(SymmetricMatrix([1, 3,1, 3,3,1])); A~2 \<CartanName(SymmetricMatrix([1, 3,1, 4,3,1])); The component at rows and columns [ 1, 2, 3 ] is not a finite or affine Coxeter matrix > C := Matrix(4,4, [2,-2,0,0, -1,2,0,0, 0,0,2,-2, 0,0,-1,2] ); > C; [ 2 -2 0 0] [-1 2 0 0] [ 0 0 2 -2] [ 0 0 -1 2] %> CartanName(C); %B2 B2 %> CartanName(C : Nonreduced:={2}); %BC2 B2 %> CartanName(C : Nonreduced:={4}); %B2 BC2 %> CartanName(C : Nonreduced:={2,4}); %BC2 BC2 %\<CartanName(C : Nonreduced:={1}); %Runtime error: Invalid set of non-reduced roots
- DynkinDiagram(M): AlgMatElt#
- DynkinDiagram(G): GrphUnd#
- DynkinDiagram(C): AlgMatElt#
- DynkinDiagram(D): GrphDir#
- DynkinDiagram(N): MonStgElt#
Print the Dynkin diagram of a Coxeter matrix \(M\), Coxeter graph \(G\), Cartan matrix \(C\), Dynkin digraph \(D\) or Cartan name given by the string \(N\). If the corresponding group is neither affine nor crystallographic, an error is flagged.
- Example: Dynkin Diagram#
> DynkinDiagram("A~5 D4 BC3"); A~5 1 - 2 - 3 - 4 - 5 | | ------- 6 ------- D4 9 / 7 - 8 \\ 10 BC3 11 - 12 =>= 13
- CoxeterDiagram(M): AlgMatElt#
- CoxeterDiagram(G): GrphUnd#
- CoxeterDiagram(C): AlgMatElt#
- CoxeterDiagram(D): GrphDir#
- CoxeterDiagram(N): MonStgElt#
Print the Coxeter diagram of a Coxeter matrix \(M\), Coxeter graph \(G\), Cartan matrix \(C\), Dynkin digraph \(D\) or Cartan name given by the string \(N\). If the corresponding group is not affine or is not crystallographic, an error is flagged.
- Example: Coxeter Diagram#
> CoxeterDiagram("A~5 D4 BC3"); A~5 1 - 2 - 3 - 4 - 5 | | ------- 6 ------- D4 9 / 7 - 8 \\ 10 BC3 11 - 12 === 13