Operations on Root Data
- R1 eq R2: RootDtm, RootDtm -> BoolElt
Returns
trueif, and only if, \(R_1\) and \(R_2\) are identical root data.
- IsIsomorphic(R1, R2): RootDtm, RootDtm -> BoolElt, [RngIntElt], Map
Returns
trueif, and only if, \(R_1\) and \(R_2\) are isomorphic root data. Iftrue, the second value returned is a sequence giving the simple root of \(R_2\) corresponding to each simple root of \(R_1\), and the third value returned is an isomorphism \(R_1\to R_2\). This function is currently only implemented for semisimple root data.
- IsCartanEquivalent(R1, R2): RootDtm, RootDtm -> BoolElt, SeqEnum
Returns
trueif and only if the root data \(R_1\) and \(R_2\) are Cartan equivalent; i.e. they have isomorphic Dynkin diagrams. Iftrue, the second value returned is a sequence giving the simple root of \(R_2\) corresponding to each simple root of \(R_1\).
- IsIsogenous(R1, R2): RootDtm, RootDtm -> BoolElt, SeqEnum, RootDtm, Map, Map, RootDtm, Map, Map
Returns
trueif, and only if, \(R_1\) and \(R_2\) are isogenous root data. Iftrue, the subsequent values returned are: a sequence giving the root of \(R_2\) corresponding to each root of \(R_1\), the corresponding adjoint root datum \(R_{ad}\), the morphisms \(R_{ad}\to R_1\) and \(R_{ad}\to R_2\), the corresponding simply connected root datum \(R_{sc}\), and the morphisms \(R_1\to R_{sc}\) and \(R_2\to R_{sc}\).
- Example: Isomorphism and Isogeny of Root Data (ex-864e8f)
Run in calculator (opens in a new tab)
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 diagram of the root datum \(R\) (Section Finite and Affine Coxeter Groups).
- DynkinDiagram(R): RootStr
Print the Dynkin diagram of 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: Dynkin and Coxeter Diagrams (ex-de9285)
> R := RootDatum("F4"); > DynkinDiagram(R); F4 1 - 2 =>= 3 - 4 > CoxeterDiagram(R); F4 1 - 2 === 3 - 4
- GammaAction(R): RootDtm -> Rec
The \(\Gamma\)-action of the root datum \(R\). This is a record consisting of four elements:
gammais the Group \(\Gamma\) acting on \(R\),perm_acis the homomorphism defining the permutation action of \(\Gamma\) on the set of all roots of \(R\), finallymats_rtandmats_coare sequences of matrices defining the action of \(\Gamma\) 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 \(\Gamma\) acting on the (co)root space \(V = {\mathbb{Q}}\otimes X\) of \(R\) as well as the embedding in \(V\).
- GammaOrbitOnRoots(R, r): RootDtm, RngIntElt -> GSetEnum
The orbit through the \(r\)th root of the \(\Gamma\)-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 \(\Gamma\)-action on the root datum \(R\) (Section Extended Root Data).
- GammaActionOnSimples(R): RootDtm -> HomGrp
The \([\Gamma]\)-action on the simple (co)roots of the root datum \(R\). (Section Extended Root Data). This function was called
GammaActionPiin the last release.
- OrbitsOnSimples(R): RootDtm -> SeqEnum[GSetEnum]
The sequence of all orbits of the \([\Gamma]\)-action on the simple (co)roots of the root datum \(R\) (Section Extended Root Data). This function was called
OrbitsPiin the last release.
- DistinguishedOrbitsOnSimples(R): RootDtm -> SeqEnum[GSetEnum]
The sequence of distinguished orbits of the \([\Gamma]\)-action on the simple (co)roots of the root datum \(R\) (Section Extended Root Data). This function was called
DistinguishedOrbitsPiin 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) rank of the root datum \(R\), i.e. the number of simple (co)roots.
- RelativeRank(R): RootDtm -> RngIntElt
The relative rank of 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 \(\Gamma\) divided by the kernel of the \([\Gamma]\)-action.
- Example: Operations for Twisted Root Data (ex-9c2a05)
Run in calculator (opens in a new tab)
Consider the twisted root datum of type \({}^2A_{3,1}\) with distinguished orbit \(\{2\}\):
> R := RootDatum( "A3" : Twist := < {{2}}, 2 > );
First, print out the action of \(\Gamma\) 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 \(\Gamma\)-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 \([\Gamma]\)-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: Order of a Group of Lie Type (ex-da6059)
Run in calculator (opens in a new tab)
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 \(\Lambda/{\mathbb{Z}}\Phi\) of the root datum \(R\) together with the projection \(\Lambda\rightarrow\Lambda/{\mathbb{Z}}\Phi\). See Subsection Isogeny of Split Reduced Root Data.
- IsogenyGroup(R): RootDtm -> GrpAb, Map
The isogeny group \(X/{\mathbb{Z}}\Phi\) of the root datum \(R\) together with the projection \(X\rightarrow X/{\mathbb{Z}}\Phi\). If \(R\) is semisimple, the injection \(X/{\mathbb{Z}}\Phi\rightarrow\Lambda/{\mathbb{Z}}\Phi\) is also returned. See Subsection Isogeny of Split Reduced Root Data.
- CoisogenyGroup(R): RootDtm -> GrpAb, Map
The coisogeny group \(Y/{\mathbb{Z}}\Phi^\star\) of the root datum \(R\) together with the projection \(Y\rightarrow Y/{\mathbb{Z}}\Phi^\star\). If \(R\) is semisimple, the projection \(Y/{\mathbb{Z}}\Phi^\star\rightarrow\Lambda/{\mathbb{Z}}\Phi\) is also returned. See Subsection Isogeny of Split Reduced Root Data.
- Example: Isogeny and Fundamental Groups (ex-2f8db1)
Run in calculator (opens in a new tab)
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)