Operations on Root Data

R1 eq R2 : RootDtm, RootDtm -> BoolElt
Returns true if, and only if, R1 and R2 are identical root data.
IsIsomorphic(R1, R2) : RootDtm, RootDtm -> BoolElt, [RngIntElt], Map
Returns true if, and only if, R1 and R2 are isomorphic root data. If true, the second value returned is a sequence giving the simple root of R2 corresponding to each simple root of R1, and the third value returned is an isomorphism R1to R2. This function is currently only implemented for semisimple root data.
IsCartanEquivalent(R1, R2) : RootDtm, RootDtm -> BoolElt, SeqEnum
Returns true if and only if the root data R1 and R2 are Cartan equivalent; i.e. they have isomorphic Dynkin diagrams. If true, the second value returned is a sequence giving the simple root of R2 corresponding to each simple root of R1.
IsIsogenous(R1, R2) : RootDtm, RootDtm -> BoolElt, SeqEnum, RootDtm, Map, Map, RootDtm, Map, Map
Returns true if, and only if, R1 and R2 are isogenousroot data. If true, the subsequent values returned are: a sequence giving the root of R2 corresponding to each root of R1, the corresponding adjoint root datum Rad, the morphisms Radto R1 and Radto R2, the corresponding simply connected root datum Rsc, and the morphisms R1to Rsc and R2to Rsc.

Example RootDtm_IsomorphismIsogeny (H104E8)

An example of isogenous root data:
> R1 := RootDatum("A3");
> R2 := RootDatum("A3" : Isogeny := "SC");
> R1 eq R2;
false
> IsIsomorphic(R1, R2);
false
> IsCartanEquivalent(R1, R2);
true [ 1, 2, 3 ]
> IsIsogenous(R1, R2);
true [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 ]
Adjoint root datum of type A3
Mapping from: RootDtm: ad to RootDtm: ad
Mapping from: RootDtm: ad to RootDtm: sc
Simply connected root datum of type A3
Mapping from: RootDtm: ad to RootDtm: sc
Mapping from: RootDtm: sc to RootDtm: sc
An example of distinct isomorphic root data:
> C := CartanMatrix("B2");
> R1 := RootDatum(C);
> R2 := RootDatum(Transpose(C));
> R1; R2;
Adjoint root datum of type B2
Adjoint root datum of type C2
> R1 eq R2;
false
> IsIsomorphic(R1, R2);
true [ 2, 1 ]
CartanName(R) : RootStr -> MonStgElt
The Cartan name of the root datum R (Section Finite and Affine Coxeter Groups).
TwistedCartanName(R) : RootDtm -> MonStgElt
The twisted Cartan name of the root datum R. E.g., "2A3,2".
CoxeterDiagram(R) : RootStr ->
Print the Coxeter diagramof the root datum R (Section Finite and Affine Coxeter Groups).
DynkinDiagram(R) : RootStr ->
Print the Dynkin diagramof the root datum R (Section Finite and Affine Coxeter Groups).
CoxeterMatrix(R) : RootStr -> AlgMatElt
The Coxeter matrix of the root datum R (Section Coxeter Matrices).
CoxeterGraph(R) : RootStr -> GrphUnd
The Coxeter graph of the root datum R (Section Coxeter Graphs).
CartanMatrix(R) : RootStr -> AlgMatElt
The Cartan matrix of the root datum R (Section Cartan Matrices).
DynkinDigraph(R) : RootStr -> GrphDir
The Dynkin digraph of the root datum R (Section Dynkin Digraphs).

Example RootDtm_Diagrams (H104E9)

> R := RootDatum("F4");
> DynkinDiagram(R);
F4    1 - 2 =>= 3 - 4
> CoxeterDiagram(R);
F4    1 - 2 === 3 - 4
GammaAction(R) : RootDtm -> Rec
The Γ-action of the root datum R. This is a record consisting of four elements: gamma is the Group Γ acting on R, perm_ac is the homomorphism defining the permutation action of Γ on the set of all roots of R, finally mats_rt and mats_co are sequences of matrices defining the action of Γ on the root and coroot spaces of R.
GammaRootSpace(R) : RootDtm -> GSetEnum, Map
GammaCorootSpace(R) : RootDtm -> GSetEnum, Map
Given a root datum R, create the fixed space of Γ acting on the (co)root space V = Q tensor X of R as well as the embedding in V.
GammaOrbitOnRoots(R,r) : RootDtm, RngIntElt -> GSetEnum
The orbit through the rth root of the Γ-action on the root datum R.
GammaOrbitsOnRoots(R) : RootDtm -> SeqEnum[GSetEnum]
PositiveGammaOrbitsOnRoots(R) : RootDtm -> SeqEnum[GSetEnum]
NegativeGammaOrbitsOnRoots(R) : RootDtm -> SeqEnum[GSetEnum]
ZeroGammaOrbitsOnRoots(R) : RootDtm -> SeqEnum[GSetEnum]
The sequence of all (respectively positive, negative and zero) orbits of the Γ-action on the root datum R (Section Extended Root Data).
GammaActionOnSimples(R) : RootDtm -> HomGrp
The [Γ]-action on the simple (co)roots of the root datum R. (Section Extended Root Data). This function was called GammaActionPi in the last release.
OrbitsOnSimples(R) : RootDtm -> SeqEnum[GSetEnum]
The sequence of all orbits of the [Γ]-action on the simple (co)roots of the root datum R (Section Extended Root Data). This function was called OrbitsPi in the last release.
DistinguishedOrbitsOnSimples(R) : RootDtm -> SeqEnum[GSetEnum]
The sequence of distinguished orbits of the [Γ]-action on the simple (co)roots of the root datum R (Section Extended Root Data). This function was called DistinguishedOrbitsPi in the last release.
BaseRing(R) : RootDtm -> RngInt
The base ring of the root datum R is the field of rational numbers.
Rank(R) : RootStr -> RngIntElt
AbsoluteRank(R) : RootDtm -> RngIntElt
The (absolute) rankof the root datum R, i.e. the number of simple (co)roots.
RelativeRank(R) : RootDtm -> RngIntElt
The relative rankof the root datum R, i.e. the number of simple (co)roots of the relative root system. This is the same as absolute rank for split root data.
Dimension(R) : RootStr -> RngIntElt
The dimension of the root datum R, i.e. the dimension of the (co)root space. This is at least as large as the rank, with equality when R is semisimple.
TwistingDegree(R) : RootDtm -> RngIntElt
The twisting degree of the root datum R, i.e. the order of Γ divided by the kernel of the [Γ]-action.
AnisotropicSubdatum(R) : RootDtm -> RootDtm
The anisitropic subdatum of the root datum R.

Example RootDtm_OperationsForTwistedRootData (H104E10)

Consider the twisted root datum of type ()2A3, 1 with distinguished orbit {2}:
> R := RootDatum( "A3" : Twist := < {{2}}, 2 > );
First, print out the action of Γ on the root datum:
> GammaAction(R);
rec<recformat<gamma: GrpPerm, perm_ac: HomGrp, mats_rt, mats_co> |
     gamma := Permutation group acting on a set of cardinality 4
     Order = 4 = 2^2
          (1, 2, 3, 4),
     perm_ac := Homomorphism of GrpPerm: $, Degree 4, Order 2^2 into GrpPerm: $,
     Degree 12, Order 2^10 * 3^5 * 5^2 * 7 * 11 induced by
          (1, 2, 3, 4) |--> (1, 3, 7, 9)(2, 4, 6, 5)(8, 10, 12, 11),
     mats_rt := [
          [ 0  0  1]
          [ 1  1  0]
          [-1  0  0]
     ],
     mats_co := [
          [ 0  0  1]
          [ 0  1  0]
          [-1  1  0]
     ]
     >
Compute the orbits of the Γ-action:
> PositiveGammaOrbitsOnRoots(R);
[
     GSet{ 2, 4, 5, 6 }
]
> NegativeGammaOrbitsOnRoots(R);
[
     GSet{ 8, 10, 11, 12 }
]
> ZeroGammaOrbitsOnRoots(R);
[
     GSet{ 1, 3, 7, 9 }
]
> &+[ Root(R,r) : r in ZeroGammaOrbitsOnRoots(R)[1] ];
(0 0 0)
Compute the [Γ]-action and its orbits:
> GammaActionOnSimples(R);
Homomorphism of GrpPerm: $, Degree 4, Order 2^2 into GrpPerm: $,
Degree 3, Order 2 * 3 induced by
     (1, 2, 3, 4) |--> (1, 3)
> OrbitsOnSimples(R);
[
     GSet{ 2 },
     GSet{ 1, 3 }
]
> DistinguishedOrbitsOnSimples(R);
[
     GSet{ 2 }
]
Absolute and relative rank and the twisting degree, as well as their appearance in the name of the root datum:
> AbsoluteRank(R);
3
> RelativeRank(R);
1
> TwistingDegree(R);
2
> R;
R: Twisted adjoint root datum of type 2A3,1
anisotropic subdatum:
> A := AnisotropicSubdatum(R); A;
A: Twisted root datum of type 2(A1 A1)2,0
> GammaAction(A)`perm_ac;
Homomorphism of GrpPerm: $, Degree 4, Order 2^2 into GrpPerm: $,
Degree 4, Order 2^2 induced by
     (1, 2, 3, 4) |--> (1, 2, 3, 4)
CoxeterGroupOrder(R) : RootStr -> RngIntElt
The order of the (split) Coxeter group of the root datum R.
GroupOfLieTypeOrder(R, q) : RootDtm, RngElt -> RngIntElt
The order of the group of Lie type with split root datum R over the field of cardinality q.
GroupOfLieTypeFactoredOrder(R, q) : RootDtm, RngElt -> RngIntElt
The factored order of the group of Lie type with split root datum R over the field of order q.

Example RootDtm_GroupOfLieTypeOrder (H104E11)

As well as accepting a specific prime power, these functions also take an indeterminate so that the generic order formula can be computed.
> P<q> := PolynomialRing(Integers());
> R := RootDatum("F4");
> GroupOfLieTypeFactoredOrder(R, q);
[
    <q - 1, 4>,
    <q, 24>,
    <q + 1, 4>,
    <q^2 - q + 1, 2>,
    <q^2 + 1, 2>,
    <q^2 + q + 1, 2>,
    <q^4 - q^2 + 1, 1>,
    <q^4 + 1, 1>
]
>
> R := RootDatum("B2");
> ord := GroupOfLieTypeOrder(R, q);
> forall{ q : q in [2..200] | not IsPrimePower(q) or
>   Evaluate(ord, q) eq GroupOfLieTypeOrder(R, q) };
true
FundamentalGroup(R) : RootDtm -> GrpAb, Map
The fundamental groupΛ/ZΦ of the root datum R together with the projection Λ -> Λ/ZΦ. See Subsection Isogeny of Split Reduced Root Data.
IsogenyGroup(R) : RootDtm -> GrpAb, Map
The isogeny groupX/ZΦ of the root datum R together with the projection X -> X/ZΦ. If R is semisimple, the injection X/ZΦ -> Λ/ZΦ is also returned. See Subsection Isogeny of Split Reduced Root Data.
CoisogenyGroup(R) : RootDtm -> GrpAb, Map
The coisogeny groupY/ZΦstar of the root datum R together with the projection Y -> Y/ZΦstar. If R is semisimple, the projection Y/ZΦstar -> Λ/ZΦ is also returned. See Subsection Isogeny of Split Reduced Root Data.

Example RootDtm_IsogenyGroups (H104E12)

In the semisimple case, the fundamental group contains the isogeny group, with quotient isomorphic to the coisogeny group.
> R := RootDatum("A5" : Isogeny := 3);
> F := FundamentalGroup(R);
> G := IsogenyGroup(R);
> H := CoisogenyGroup(R);
> #G * #H eq #F;
true
Nonsemisimple root data have infinite isogeny groups.
> R := StandardRootDatum("A", 5);
> IsogenyGroup(R);
Abelian Group isomorphic to Z
Defined on 1 generator (free)
V2.28, 13 July 2023