Operations on Coxeter Groups

See Chapter Finitely Presented Groups for general functions for finitely presented groups, or Chapter Permutation Groups for general functions for permutation groups.

IsIsomorphic(W1, W2): GrpPermCox, GrpPermCox -> BoolElt

Returns true if, and only if, \(W_1\) and \(W_2\) are isomorphic as abstract groups. This is only implemented for permutation Coxeter groups.

IsCoxeterIsomorphic(W1, W2): GrpFPCox, GrpFPCox -> BoolElt
IsCoxeterIsomorphic(W1, W2): GrpPermCox, GrpPermCox -> BoolElt

Tests if \(W_1\) and \(W_2\) are isomorphic as Coxeter systems. If true, a sequence giving the permutation of the generators which takes \(W_1\) to \(W_2\) is also returned.

IsCartanEquivalent(W1, W2): GrpPermCox, GrpPermCox -> BoolElt

Returns true if and only if the crystallographic Coxeter groups \(W_1\) and \(W_2\) have Cartan equivalent Cartan matrices. This only makes sense for permutation Coxeter groups.

Example: Testing Coxeter Isomorphism (ex-892fbe)

Run in calculator (opens in a new tab)

> W1 := CoxeterGroup(GrpFPCox, "B4");
> W2 := CoxeterGroup(GrpFPCox, "C4");
> IsCoxeterIsomorphic(W1, W2);
true [ 1, 2, 3, 4 ]

An example of abstractly isomorphic Coxeter groups whose Coxeter systems not isomorphic:

> W1 := CoxeterGroup("G2");
> W2 := CoxeterGroup("A1A2");
> IsIsomorphic(W1, W2);
true
> IsCoxeterIsomorphic(W1, W2);
false

An example of Coxeter isomorphic groups which are not Cartan equivalent:

> W1 := CoxeterGroup("B3");
> W2 := CoxeterGroup("C3");
> IsIsomorphic(W1, W2);
true
> IsCoxeterIsomorphic(W1, W2);
true [ 1, 2, 3 ]
> IsCartanEquivalent(W1, W2);
false

Run in calculator (opens in a new tab)

RootSystem(W): GrpPermCox -> RootDtm

The underlying root system of the permutation Coxeter group \(W\).

RootDatum(W): GrpPermCox -> RootDtm

The root datum of the permutation Coxeter group \(W\). If \(W\) does not have a root datum, an error is flagged.

Example: Root System of a Coxeter Group (ex-e5a910)
> W := CoxeterGroup("C5");
> RootSystem(W);
Root system of type C5
> RootDatum(W);
Root datum of type C5
>
> W := CoxeterGroup("H4");
> RootSystem(W);
Root system of type H4
> RootDatum(W);
Error: This group does not have a root datum

Run in calculator (opens in a new tab)

CartanName(W): GrpFPCox -> List
CartanName(W): GrpPermCox -> MonStgElt

The Cartan name of the finite or affine Coxeter group \(W\) (Section Finite and Affine Coxeter Groups).

CoxeterDiagram(W): GrpFPCox
CoxeterDiagram(W): GrpPermCox

Print the Coxeter diagram of the finite or affine Coxeter group \(W\) (Section Finite and Affine Coxeter Groups).

DynkinDiagram(W): GrpPermCox

Print the Dynkin diagram of the permutation Coxeter group \(W\). If \(W\) is not crystallographic, an error is flagged.

Example: Cartan Names and Diagrams (ex-93c1ec)
> W := CoxeterGroup("F4");
> CartanName(W);
F4
> DynkinDiagram(W);

F4    1 - 2 =>= 3 - 4
> CoxeterDiagram(W);

F4    1 - 2 === 3 - 4

Run in calculator (opens in a new tab)

CoxeterMatrix(W): GrpFPCox -> AlgMatElt
CoxeterMatrix(W): GrpPermCox -> AlgMatElt

The Coxeter matrix of the Coxeter group \(W\).

CoxeterGraph(W): GrpFPCox -> GrphUnd
CoxeterGraph(W): GrpPermCox -> GrphUnd

The Coxeter graph of the Coxeter group \(W\).

CartanMatrix(W): GrpPermCox -> AlgMatElt

The Cartan matrix of the permutation Coxeter group \(W\).

DynkinDigraph(W): GrpPermCox -> GrphDir

The Dynkin digraph of the permutation Coxeter group \(W\).

Rank(W): GrpFPCox -> RngIntElt
Rank(W): GrpPermCox -> RngIntElt
NumberOfGenerators(W): GrpFPCox -> RngIntElt
NumberOfGenerators(W): GrpPermCox -> RngIntElt

The rank of the Coxeter group \(W\).

NumberOfPositiveRoots(W): GrpFPCox -> RngIntElt
NumberOfPositiveRoots(W): GrpPermCox -> RngIntElt
NumPosRoots(W): GrpFPCox -> RngIntElt
NumPosRoots(W): GrpPermCox -> RngIntElt

The number of positive roots of the Coxeter group \(W\).

Dimension(W): GrpPermCox -> RngIntElt

The dimension of the permutation Coxeter group \(W\), ie. the dimension of the root space.

Example: Rank and Dimension (ex-6345f3)
> R := StandardRootSystem("A", 4);
> W := CoxeterGroup(R);
> Rank(W);
4
> Dimension(W);
5

Run in calculator (opens in a new tab)

ConjugacyClasses(W): GrpFPCox -> [GrpFPCoxElt]
ConjugacyClasses(W): GrpPermCox -> [GrpPermElt]

The conjugacy classes of the finite Coxeter group \(W\). This uses the algorithm of [GP00].

FundamentalGroup(W): GrpPermCox -> GrpAb

The fundamental group of the permutation Coxeter group \(W\). The roots and coroots of \(W\) must have integral components.

IsogenyGroup(W): GrpPermCox -> GrpAb

The isogeny group of the permutation Coxeter group \(W\). The roots and coroots of \(W\) must have integral components.

CoisogenyGroup(W): GrpPermCox -> GrpAb

The coisogeny group of the permutation Coxeter group \(W\). The roots and coroots of \(W\) must have integral components.

BasicDegrees(W): GrpFPCox -> RngIntElt
BasicDegrees(W): GrpPermCox -> RngIntElt

The degrees of the basic invariant polynomials of the Coxeter group \(W\). These are computed using the table in [Car72b, page 155].

BasicCodegrees(W): GrpFPCox -> RngIntElt
BasicCodegrees(W): GrpPermCox -> RngIntElt

The basic codegrees of the Coxeter group \(W\). These are computed using the algorithm in [LT09].

Example: Basic Degrees of E6 (ex-d80f8f)

The product of the basic degrees is the order of the Coxeter group; the sum of the basic degrees is the sum of the rank and the number of positive roots.

> W := CoxeterGroup("E6");
> degs := BasicDegrees(W);
> degs;
[ 2, 5, 6, 8, 9, 12 ]
> &*degs eq #W;
true
> &+degs eq NumPosRoots(W) + Rank(W);
true

Run in calculator (opens in a new tab)

BruhatLessOrEqual(x, y): GrpPermElt, GrpPermElt -> BoolElt

If Coxeter group element \(x\) is less than or equal to \(y\) in the Bruhat order [Deo77]. Suppose \(x\) is an element of the Coxeter group \(W\). The Bruhat order is the partial order generated by the relations: \(x \leq xw\) if \(l(x) < l(xw)\), and \(xw \leq x\) if \(l(xw) < l(x)\), for \(x\in W\) and \(w\) a reflection. If \(l(xw) = l(x) + 1\), then \(x\) is called a Bruhat descendant of \(xw\). The algorithm used is a straightforward recursive procedure.

BruhatDescendants(x): GrpPermElt -> SetEnum
z: GrpPermElt                    Default: 

Let \(x\) be an element of the Coxeter group \(W\), then the returned set \(S\) contains the Bruhat descendants of \(x\). If \(l(yw) = l(y) + 1\), then \(y\) is called a Bruhat descendant of \(yw\). If the optional parameter \(z\) is set, only those descendants \(y\) with \(z \leq y\) are returned. Algorithm: For each fundamental reflection in \(x\) it is tested whether leaving it out decreases the length of \(x\) by exactly 1. If so, it is included in the result. In particular, this algorithm does not use BruhatLessOrEqual.

BruhatDescendants(X): SetEnum -> SetEnum
z: GrpPermElt                    Default: 

Let \(X\) consist of elements of the Coxeter group \(W\), then the returned set \(S\) contains the Bruhat descendants of every element of \(X\).

If the optional parameter \(z\) is set, only those \(w\) are returned for which \(z \leq w\) in the Bruhat ordering.

Example: Bruhat Descendants (ex-3232ff)

Run in calculator (opens in a new tab)

Bruhat descendants:

> R := RootDatum("D4" : Isogeny := "SC");
> W := CoxeterGroup(GrpPermCox, R);
> Wfp,phi := CoxeterGroup(GrpFPCox, W);
> x := W.1*W.3*W.2*W.4*W.2*W.2*W.2*W.1;
> Eltseq(phi(x));
[ 1, 3, 2, 4, 2, 1 ]
> S := BruhatDescendants(x);
> { Eltseq(phi(w)) : w in S };
{
     [ 1, 3, 2, 4, 2 ],
     [ 3, 2, 4, 2, 1 ],
     [ 1, 2, 4, 2, 1 ],
     [ 1, 3, 2, 1, 4 ],
     [ 1, 3, 4, 2, 1 ]
}

Run in calculator (opens in a new tab)