Constructing Root Data#

We first describe some optional parameters that are common to many functions described below.

Isogeny : Any : “Ad”

The optional parameter Isogeny specifies the isomorphism class of the root datum within the Cartan equivalence class (see Subsection Isogeny of Split Reduced Root Data). For irreducible Cartan names, Isogeny can be one of the following:

  1. A string: "Ad" for adjoint or "SC" for simply connected.

2. An integer giving the size of the isogeny subgroup within the fundamental group. The root datum must be absolutely irreducible. This does not work in type \(D_n\) with \(n\) even and \(\hbox{\tt Isogeny}=2\), since in this case there are three distinct isomorphism classes (see the example below to create these data).

  1. An injection of an abelian group into the fundamental group.

For compound Cartan names, Isogeny can be a string ("Ad" or "SC"); an injection into the fundamental group; or a list of strings, integers and injections (one for each direct summand).

Signs : Any : 1

Many of the constants associated with root data depend on the choice of the sign \(\epsilon_{rs}\) for each extraspecial pair \((r,s)\). This parameter allows the user to fix these signs for the root datum \(R\) by giving a sequence \(s\) of length NumExtraspecialPairs(R) consisting of integers \(1\) or \(-1\). It is also possible to set Signs to \(1\) instead of a sequence of all \(1\) and to \(-1\) instead of a sequence of all \(-1\).

Twist : Any : 1

This optional parameter defines a \(\Gamma\)-action of an extended root datum and will accept the following values:

1. a homomorphism from \(\Gamma\) into Sym(2*N), where \(N\) is the number of positive roots, specifying the action of \(\Gamma\) on the (co)roots. (Only for semisimple root data).

2. an integer \(i\) giving the order of \(\Gamma\), e.g., \(1,2,3,6\) for \({}^1D_4\), \({}^2D_4\), \({}^3D_4\), \({}^6D_4\) (only if \(i = 1\) or the root datum is irreducible).

3. \(\langle D,i \rangle\), where \(D\) is a set of distinguished orbits as sets of integers and \(i\) (integer) is the order of the Dynkin diagram symmetry involved (only for irreducible root data).

4. \(\langle \Gamma,ims \rangle\), where \(\Gamma\) is the acting group and \(ims\) define images either as permutations of the simple roots or as permutation of all roots (only for semisimple root data).

5. \(\langle \Gamma, imsR, imsC \rangle\), where \(\Gamma\) is the acting group and \(imsR\) (\(imsC\)) is a sequence of matrices defining the action of \(\Gamma\) on the root space (coroot space).

Nonreduced : SetEnum : {}

The optional argument Nonreduced is used to give the set of indices of the nonreduced simple roots. Note that a root datum cannot be both twisted and nonreduced.

  1. : MonStgElt -> RootDtm

Isogeny : Any : “Ad”

Signs : Any : 1

Twist : Any : 1

A root datum with Cartan name given by the string \(N\) (see Section Finite and Affine Coxeter Groups). In addition to the possible Cartan names described in Section Finite and Affine Coxeter Groups, this function will also accept "Tn" as a component of the Cartan name, which stands for an \(n\)-dimensional toral subdatum. Note, however, that this addition is for input only and will not appear in the string returned by CartanName when applied to the resulting root datum (see example below).

If the optional parameter Isogeny is a list, its length should be equal to the total number of components. Entries of this list corresponding to toral components will be ignored.

If the corresponding Coxeter group is infinite affine, an error is flagged.

Examples of adjoint and simply connected irreducible root data. > RootDatum(“E6”); Adjoint root datum of type E6 > RootDatum(“E6” : Isogeny := “SC”); Simply connected root datum of type E6 With nonirreducible root data the isogeny can be given as a list. > R := RootDatum(“A5 B3” : Isogeny := [* 3, “Ad” *]); > R : Maximal; Root datum of type A5 B3 with simple roots [1 0 0 0 0 0 0 0] [0 1 0 0 0 0 0 0] [0 0 1 0 0 0 0 0] [0 0 0 1 0 0 0 0] [1 2 0 1 3 0 0 0] [0 0 0 0 0 1 0 0] [0 0 0 0 0 0 1 0] [0 0 0 0 0 0 0 1] and simple coroots [ 2 -1 0 0 0 0 0 0] [-1 2 -1 0 -1 0 0 0] [ 0 -1 2 -1 1 0 0 0] [ 0 0 -1 2 -1 0 0 0] [ 0 0 0 -1 1 0 0 0] [ 0 0 0 0 0 2 -1 0] [ 0 0 0 0 0 -1 2 -1] [ 0 0 0 0 0 0 -2 2] > > RootDatum(“E6 A3 B4” : Isogeny := “SC”); Simply connected root datum of type E6 A3 B4 Nonsemisimple root data can be constructed by specifying a central torus. > R := RootDatum(“B3 T2 A2” : Isogeny := [* “SC”, 0, “Ad” *]); > R; R: Root datum of type B3 A2 > Dimension(R), Rank(R); 7 5 > SimpleCoroots(R); [ 1 0 0 0 0 0 0] [ 0 1 0 0 0 0 0] [ 0 0 1 0 0 0 0] [ 0 0 0 0 0 2 -1] [ 0 0 0 0 0 -1 2] The following code creates the three root data of type \(D_6\) with isogeny groups of size 2 using injections into the fundamental group. > G< a, b > := FundamentalGroup(“D6”); > G; Abelian Group isomorphic to Z/2 + Z/2 Defined on 2 generators Relations: 2*a = 0 2*b = 0 > _, inj1 := sub< G | a >; > R1 := RootDatum(“D6” : Isogeny := inj1); > _, inj2 := sub< G | b >; > R2 := RootDatum(“D6” : Isogeny := inj2); > _, inj3 := sub< G | a*b >; > R3 := RootDatum(“D6” : Isogeny := inj3);

Examples of extended root data: > R := RootDatum(“A5” : Twist := 2 ); R; R: Twisted adjoint root datum of type 2A5,3 > R eq RootDatum(“A5” : Twist := < Sym(2), [Sym(5)|(1,5)(2,4)] > ); true > R eq RootDatum(“A5” : Twist := < 1,5,2,4,3, 2 > ); true > RootDatum(“D4” : Twist := 1); Adjoint root datum of type D4 > RootDatum(“D4” : Twist := 2); Twisted adjoint root datum of type 2D4,3 > RootDatum(“D4” : Twist := 3); Twisted adjoint root datum of type 3D4,2 > RootDatum(“D4” : Twist := 6); Twisted adjoint root datum of type 6D4,2 > > R := RootDatum(“A2”); > TwistedRootDatum(R : Twist := 2); Twisted adjoint root datum of type 2A2,1

RootDatum(C) : AlgMatElt -> RootDtm

Isogeny : Any : “Ad”

Signs : Any : 1

Twist : Any : 1

Nonreduced : SetEnum : {}

A semisimple root datum with crystallographic Cartan matrix \(C\). If the corresponding Coxeter group is infinite, an error is flagged.

RootDatum(D) : GrphDir -> RootDtm

Isogeny : Any : “Ad”

Signs : Any : 1

Twist : Any : 1

Nonreduced : SetEnum : {}

A semisimple root datum with Dynkin digraph \(D\). If the corresponding Coxeter group is infinite, an error is flagged.

RootDatum(A, B) : Mtrx, Mtrx -> RootDtm

Signs : Any : 1

Twist : Any : 1

Nonreduced : SetEnum : {}

The root datum with simple roots given by the rows of the matrix \(A\) and simple coroots given by the rows of the matrix \(B\). The matrices \(A\) and \(B\) must have the following properties:

1. \(A\) and \(B\) must be integral matrices with the same number of rows and the same number of columns;

  1. the number of columns must be at least the number of rows; and

  2. \(AB^t\) must be the Cartan matrix of a finite Coxeter group.

An example of a nonsemisimple root system of type \(G_2\): > A := Matrix(2,3, [1,-1,0, -1,1,-1]); > B := Matrix(2,3, [1,-1,1, 0,1,-1]); > RootDatum(A, B); Root datum of type G2 An example of a non-reduced root datum and usage of Nonreduced argument: > C := CoxeterMatrix(“B2B2”); > RootDatum(C); Adjoint root datum of type B2 B2 > RootDatum(C : Nonreduced:=2); Adjoint root datum of type BC2 B2 > RootDatum(C : Nonreduced:=4); Adjoint root datum of type B2 BC2 > RootDatum(C : Nonreduced:=2,4); Adjoint root datum of type BC2 BC2

IrreducibleRootDatum(X, n) : MonStgElt, RngIntElt -> RootDtm

Signs : Any : 1

Twist : Any : 1

The irreducible root datum with Cartan name \(X_n\).

(X, n) : MonStgElt, RngIntElt -> RootDtm

Signs : Any : 1

Twist : Any : 1

The standard root datum with Cartan name \(X_n\), i.e. the root datum with the standard inner product equal to the Coxeter form up to a constant. For technical reasons, this is only possible for the classical types, i.e. \(X\) must be "A", "B", "C", or "D". Note that the standard root datum is not semisimple for type \(A_n\).

These functions are useful in loops. > for X in [“A”,”B”,”G”] do > print NumPosRoots(IrreducibleRootDatum(X, 2)); > end for; 3 4 6

ToralRootDatum(n) : RngIntElt -> RootDtm

Twist : Any : 1

The toral root datum of dimension \(n\), i.e., the \(n\)-dimensional root datum with no roots or coroots.

Toral root datum of dimension 3 and a twisted version of it: > ToralRootDatum(3); Toral root datum of dimension 3 > M := Matrix(Rationals(),3,3,[0,1,0,1,0,0,0,0,1]);M; [0 1 0] [1 0 0] [0 0 1] > ToralRootDatum(3 : Twist := <Sym(2),[M],[M]>); Twisted toral root datum of dimension 3

TrivialRootDatum() : -> RootDat

The trivial root datum of dimension \(0\).

sparse-root-data-create#

Constructing Sparse Root Data.

Sparse root data differ from the usual root data only in the internal representation of the objects. The internal representation is less memory expensive and requires less time for creation. Sparse root data have type RootDtmSprs, which is a subcategory of RootDtm.

There are some limitation on the root data which can have sparse representation. First, sparse representation only makes sense for classical root data, that is of types \(A\), \(B\), \(C\) and \(D\). At the moment only root data with a connected Coxeter diagram may have sparse representation and no twisted sparse root data can be constructed.

SparseRootDatum(N): MonStgElt RootDtmSprs#
SparseRootDatum(N): MonStgElt RootDtmSprs#
SparseRootDatum(C): AlgMatElt RootDtmSprs#
SparseRootDatum(D): GrphDir RootDtmSprs#
SparseRootDatum(R): RootSys RootDtmSprs#
SparseRootDatum(A, B): Mtrx, Mtrx RootDtmSprs#
SparseIrreducibleRootDatum(X, n): MonStgElt, RngIntElt RootDtmSprs#
SparseStandardRootDatum(X, n): MonStgElt, RngIntElt RootDtmSprs#

These functions have the same syntax as their counterparts without the “Sparse” in the name (see Section Constructing Root Data). The root datum returned has sparse representation. See [Cohen et al., 2008] for the algorithms used to construct sparse root data.

Example: Sprs RD#
> SparseRootDatum("A2");
Sparse adjoint root datum of dimension 2 of type A2
> SparseStandardRootDatum("A", 2);
Sparse root datum of dimension 3 of type A2
> SparseRootDatum("A2") eq RootDatum("A2");
true
%%a> assert $1;
SparseRootDatum(R): RootDtm RootDtmSprs#

Return a sparse root datum equal to the root datum \(R\).

RootDatum(R): RootDtmSprs RootDtm#

Return a non-sparse root datum equal to the root datum \(R\).

Example: Sprs R Dsumsub#

Due to the restrictions mentioned above, some operations that create new root data, will return a non-sparse root datum even though the input was sparse.

> R := SparseRootDatum("A2");
> T := ToralRootDatum(3);
> R+T;
Sparse root datum of dimension 5 of type A2
> R+R;
Adjoint root datum of dimension 4 of type A2 A2