Constructing Root Data

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

var Isogeny: Any Default: "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 Dn with n even and Isogeny=2, since in this case there are three distinct isomorphism classes (see the example below to create these data).
3.
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).

var Signs: Any Default: 1 Many of the constants associated with root data depend on the choice of the sign ε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.

var Twist: Any Default: 1 This optional parameter defines a Γ-action of an extended root datum and will accept the following values:

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

2.
an integer i giving the order of Γ, e.g., 1, 2, 3, 6 for ()1D4, ()2D4, ()3D4, ()6D4 (only if i = 1 or the root datum is irreducible).

3.
< D, i >, 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.
< Γ, ims >, where Γ 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.
< Γ, imsR, imsC >, where Γ is the acting group and imsR (imsC) is a sequence of matrices defining the action of Γ on the root space (coroot space).

var Nonreduced: SetEnum Default: 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.

Contents

RootDatum(N) : MonStgElt -> RootDtm
    Isogeny: Any                        Default: "Ad"
    Signs: Any                          Default: 1
    Twist: Any                          Default: 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.

Example RootDtm_CreatingRootData (H104E1)

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 D6 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);

Example RootDtm_CreatingExtendedRootData (H104E2)

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                        Default: "Ad"
    Signs: Any                          Default: 1
    Twist: Any                          Default: 1
    Nonreduced: SetEnum                 Default: {}
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                        Default: "Ad"
    Signs: Any                          Default: 1
    Twist: Any                          Default: 1
    Nonreduced: SetEnum                 Default: {}
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                          Default: 1
    Twist: Any                          Default: 1
    Nonreduced: SetEnum                 Default: {}
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;
2.
the number of columns must be at least the number of rows; and
3.
ABt must be the Cartan matrix of a finite Coxeter group.

Example RootDtm_G2RootSystem (H104E3)

An example of a nonsemisimple root system of type G2:
> 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                          Default: 1
    Twist: Any                          Default: 1
The irreducible root datum with Cartan name Xn.
StandardRootDatum(X, n) : MonStgElt, RngIntElt -> RootDtm
    Signs: Any                          Default: 1
    Twist: Any                          Default: 1
The standard root datum with Cartan name Xn, 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 An.

Example RootDtm_IrreducibleRootDatum (H104E4)

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                          Default: 1
The toral root datum of dimension n, i.e., the n-dimensional root datum with no roots or coroots.

Example RootDtm_ToralRootData (H104E5)

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.

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 [CHM08] for the algorithms used to construct sparse root data.

Example RootDtm_SprsRD (H104E6)

> 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
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 RootDtm_SprsRDsumsub (H104E7)

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
V2.28, 13 July 2023