Construction of Real Reflection Groups

The only root of unity in the real field is -1, hence every pseudoreflection over the real field is a reflection. We call a reflection group real if it is defined over the reals and its simple roots and simple coroots are linearly independent. We allow real reflection groups to be defined as matrix groups over the integer ring (Chapter RING OF INTEGERS), the rational field (Chapter RATIONAL FIELD), number fields (Chapter NUMBER FIELDS), and cyclotomic fields (Chapter CYCLOTOMIC FIELDS); the real field (Chapter REAL AND COMPLEX FIELDS) is not allowed since it is not infinite precision.

The real reflection groups are just the reflection representations of the Coxeter groups (Chapter COXETER GROUPS). This allows us to compute many more properties for these groups than for general reflection groups. Note that the classification of finite real reflection groups is given in Section Finite and Affine Coxeter Groups.

ReflectionGroup(M) : AlgMatElt -> GrpMat
ReflectionGroup(G) : GrphUnd -> GrpMat
ReflectionGroup(C) : AlgMatElt -> GrpMat
ReflectionGroup(D) : GrphDir -> GrpMat
The reflection group with Coxeter matrix M, Coxeter graph G, Cartan matrix C, or Dynkin digraph D (see Chapter COXETER SYSTEMS).
ReflectionGroup(N) : MonStgElt -> GrpMat
The finite or affine reflection group with Cartan name given by the string N (see Section Finite and Affine Coxeter Groups).
IrreducibleReflectionGroup(X, n) : MonStgElt, RngIntElt -> GrpMat
The finite or affine irreducible reflection group with Cartan name Xn (see Section Finite and Affine Coxeter Groups).

Example GrpRfl_RealReflectionGroupByCartan (H106E6)

> C := CartanMatrix("B3" : Symmetric);
> G := ReflectionGroup(C);
> G;
MatrixGroup(3, Number Field with defining polynomial x^2 - 2 over the Rational
Field) of order 48 = 2^4 * 3
Generators:
    [-1  0  0]
    [ 1  1  0]
    [ 0  0  1]
    [  1   1   0]
    [  0  -1   0]
    [  0 $.1   1]
    [  1   0   0]
    [  0   1 $.1]
    [  0   0  -1]
ReflectionGroup(R) : RootSys -> GrpMat
ReflectionGroup(R) : RootDtm -> GrpMat
The finite reflection group with root system or root datum R (see Chapters ROOT SYSTEMS and ROOT DATA).

Example GrpRfl_RealReflectionGroupByRootDatum (H106E7)

> R := RootDatum("B3");
> ReflectionGroup(R);
MatrixGroup(3, Integer Ring) of order 48 = 2^4 * 3
Generators:
    [-1  0  0]
    [ 1  1  0]
    [ 0  0  1]
    [ 1  1  0]
    [ 0 -1  0]
    [ 0  1  1]
    [ 1  0  0]
    [ 0  1  2]
    [ 0  0 -1]
ReflectionGroup(W) : GrpFPCox -> GrpMat, Map
    A: Mtrx                             Default: 
    B: Mtrx                             Default: 
    C: Mtrx                             Default: 
A reflection group W' of the Coxeter group W, together with the isomorphism W -> W' (see Chapter COXETER GROUPS). Since a Coxeter group W does not come with an in-built reflection representation, the optional parameters A, B, and C can be used to specify the representation. They are respectively the matrix whose rows are the simple roots, the matrix whose rows are the simple coroots, and the Cartan matrix. These must have the following properties:
1.
A and B must have same number of rows and the same number of columns; they must be defined over the same field, which must be the rational field, a number field, or a cyclotomic field; the entries must be real;
2.
the number of columns must be at least the number of rows; and
3.
C=ABtr must be a Cartan matrix for W.

It is not necessary to specify all three matrices: any two of them will determine the third. If C is not determined, it is taken to be the standard matrix described in Section Cartan Matrices.

ReflectionGroup(W) : GrpPermCox -> GrpMat, Map
The reflection group W' isomorphic to the permutation Coxeter group W, together with the isomorphism W -> W' (see Chapter COXETER GROUPS). There are no optional parameters A, B, and C in this case because every permutation Coxeter group has a root system, and this determines the reflection representation.

Example GrpRfl_ReflectionGroupConversion (H106E8)

> W<a,b,c> := CoxeterGroup(GrpFPCox, "B3");
> G, h := CoxeterGroup(GrpMat, W);
> a*b; h(a*b);
a * b
[-1 -1  0]
[ 1  0  0]
[ 0  1  1]
V2.28, 13 July 2023