# Properties of Reflection Groups

See Chapter [Matrix Groups over General Rings](../../FiniteGroups/MatrixGroupsOverGeneralRings/index-matrix-groups-over-general-rings.md#chapgrpmat) for general functions for matrix groups.

## `IsReflectionGroup(G): GrpMat -> BoolElt`

```magma
Strict: BoolElt                    Default: true
```

The default action is to return `true` if every generator of $G$ is a reflection. If `Strict` is `false`, the function checks if $G$ can be generated by *some* of its reflections, not necessarily those returned by `Generators(G)`.

## `RootsAndCoroots(G): GrpMat -> [RngIntElt], [ModTupRngElt], [ModTupRngElt]`

Returns the orders of the reflections, the roots and the coroots of the reflection group $G$.

## `IsRealReflectionGroup(G): GrpMat -> BoolElt, [], []`

Returns `true` if and only if the matrix group $G$ is a real reflection group. If `true`, the simple orders, roots, and coroots are also returned.

## `Example: Is Reflection Group (ex-db9a68)`

```magma
> W := ComplexReflectionGroup("A", 4);
> IsReflectionGroup(W);
true
> IsRealReflectionGroup(W);
true

[1 0 0 0]
[0 1 0 0]
[0 0 1 0]
[0 0 0 1]

[ 2 -1  0  0]
[-1  2 -1  0]
[ 0 -1  2 -1]
[ 0  0 -1  2]
> W := ComplexReflectionGroup("M", 3);
> IsReflectionGroup(W);
true
> IsRealReflectionGroup(W);
                        ^
Runtime error in 'IsRealReflectionGroup': The group must be defined over the
reals

```

## `IsCrystallographic(W): GrpMat -> BoolElt`

Returns `true` if and only if the real reflection group $W$ is crystallographic; i.e., its Cartan matrix has integral entries.

## `IsSimplyLaced(W): GrpMat -> BoolElt`

Returns `true` if and only if the real reflection group $W$ is simply laced; i.e., its Coxeter graph has no labels.

## `Example: Properties (ex-d36942)`

```magma
> W := ReflectionGroup("A~2 D4");
> IsFinite(W);
false
> IsCrystallographic(W);
true
> IsSimplyLaced(W);
true

```

## `Dual(G): GrpMat -> BoolElt`

The dual of the reflection group $G$, ie, the reflection group gotten by swapping roots with coroots.

## `Overgroup(H): GrpMat -> GrpMat`

The overgroup of $H$, i.e. the reflection group whose roots are permuted by the elements of the reflection subgroup $H$.

## `Overdatum(H): GrpMat -> RootDtm`

The root datum whose roots are permuted by the elements of the reflection subgroup $H$.

Every Coxeter group $W$ has a standard action. For example, the standard action group of a Coxeter group of type $A_n$ is the symmetric group of degree $n+1$ acting on $\{1,\dots,n\}$.

## `StandardAction(W): GrpMat -> Map`

The standard action of the reflection group $W$.

## `StandardActionGroup(W): GrpMat -> GrpPerm, Map`

The group $G$ of the standard action of the reflection group $W$, together with an isomorphism $W\to G$.
