%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Chapter{The GAP Package Unipot}
This chapter describes the package {\Unipot}. Mainly, the package
provides the ability to compute with elements of unipotent subgroups of
Chevalley groups, but also some properties of this groups.
In this chapter we will refer to unipotent subgroups of Chevalley groups
as ``unipotent subgroups'' and to elements of unipotent subgroups as
``unipotent elements''. Specifically, we only consider unipotent
subgroups generated by all positive root elements.
In this section we will describe the general functionality provided by
this package.
\>`UnipotChevInfo' V
`UnipotChevInfo' is an `InfoClass' used in this package. `InfoLevel' of
this `InfoClass' is set to 1 by default and can be changed to any level
by `SetInfoLevel( UnipotChevInfo, <n> )'.
Following levels are used throughout the package: \beginlist \itemitem{1.}%ordered{1}
--- \itemitem{2.}
When calculating the order of a finite unipotent subgroup, the power
presentation of this number is printed.
(See "Size!for `UnipotChevSubGr'" for an example) \itemitem{3.}
When comparing unipotent elements, output, for which of them the
canonical form must be computed.
(See "Equality!for UnipotChevElem" for an example) \itemitem{4.}
--- \itemitem{5.}
While calculating the canonical form, output the different steps. \itemitem{6.}
The process of calculating the Chevalley commutator constants is
printed on the screen \endlist
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Unipotent subgroups of Chevalley groups}
In this section we will describe the functionality for unipotent
subgroups provided by this package.
\>IsUnipotChevSubGr( <grp> ) C
Category for unipotent subgroups.
\>UnipotChevSubGr( <type>, <n>, <F> ) F
`UnipotChevSubGr' returns the unipotent subgroup $U$ of the Chevalley
group of type <type>, rank <n> over the ring <F>.
<type> must be one of `"A"', `"B"', `"C"', `"D"', `"E"', `"F"', `"G"'.
For the type `"A"', must be a positive integer.
For the types `"B"' and `"C"', <n> must be a positive integer $\geq 2$.
For the type `"D"', must be a positive integer $\geq 4$.
For the type `"E"', must be one of $6, 7, 8$.
For the type `"F"', must be $4$.
For the type `"G"', must be $2$.
\beginexample
gap> U_G2 := UnipotChevSubGr("G", 2, Rationals);
<Unipotent subgroup of a Chevalley group of type G2 over Rationals>
gap> IsUnipotChevSubGr(U_G2);
true \endexample \begintt
gap> UnipotChevSubGr("E", 3, Rationals);
Error, <n> must be one of 6, 7, 8 for type E called from
UnipotChevFamily( type, n, F ) called from
<function>( <arguments> ) called from read-eval-loop
Entering break read-eval-print loop ...
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue
brk> \endtt
\>PrintObj( <U> )!{for `UnipotChevSubGr'} M \>ViewObj( <U> )!{for `UnipotChevSubGr'} M
Special methods for unipotent subgroups. (see {\GAP} Reference Manual,
section "ref:View and Print" for general information on `View' and
`Print')
\beginexample
gap> Print(U_G2);
UnipotChevSubGr( "G", 2, Rationals )gap> View(U_G2);
<Unipotent subgroup of a Chevalley group of type G2 over Rationals>gap> \endexample
\>One( <U> )!{for `UnipotChevSubGr'} M \>OneOp( <U> )!{for `UnipotChevSubGr'} M
Special methods for unipotent subgroups. Return the identity
element of the group <U>. The returned element has
representation `UNIPOT_DEFAULT_REP' (see "UNIPOT_DEFAULT_REP").
\>Size( <U> )!{for `UnipotChevSubGr'} M
`Size' returns the order of a unipotent subgroup. This is a
special method for unipotent subgroups using the result in
Carter \cite{Car72}, Theorem 5.3.3 (ii).
\beginexample
gap> SetInfoLevel( UnipotChevInfo, 2 );
gap> Size( UnipotChevSubGr("E", 8, GF(7)) );
#I The order of this group is 7^120 which is
25808621098934927604791781741317238363169114027609954791128059842592785343731java.lang.NullPointerException
7437263620645695945672001
gap> SetInfoLevel( UnipotChevInfo, 1 ); \endexample
\>RootSystem( <U> )!{for `UnipotChevSubGr'} M
This method is similar to the method `RootSystem' for semisimple Lie
algebras (see Section "ref:Semisimple Lie Algebras and Root Systems" in
the {\GAP} Reference Manual for further information).
`RootSystem' returns the underlying root system of the unipotent subgroup
<U>. The returned object is from the category `IsRootSystem':
Additionally to the properties and attributes described in the Reference
Manual, following attributes are installed for the Root Systems by the
package {\Unipot}:
\>PositiveRootsFC( <R> ) A \>NegativeRootsFC( <R> ) A
The list of positive resp. negative roots of the root system <R>. Every
root is represented as a list of coefficients of the linear combination
in fundamental roots. E.g. let $r=\sum_{i=1}^l k_ir_i$, where $r_1, \dots, r_l$ are the fundamental roots, then $r$ is represented as the
list $[k_1, \dots, k_l]$.
\>GeneratorsOfGroup( <U> )!{for `UnipotChevSubGr'} M
This is a special Method for unipotent subgroups of finite Chevalley
groups.
\>Representative( <U> ) M
This method returns an element of the unipotent subgroup <U> with
indeterminates instead of ring elements. Such an element could be used
for symbolic computations (see "Symbolic Computation"). The returned
element has representation `UNIPOT_DEFAULT_REP' (see "UNIPOT_DEFAULT_REP").
This method returns the representative of the center of <U> without
calculating the center.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \Section{Elements of unipotent subgroups of Chevalley groups}
In this section we will describe the functionality for unipotent elements
provided by this package.
\>IsUnipotChevElem( <elm> ) C
Category for elements of a unipotent subgroup.
\>IsUnipotChevRepByRootNumbers( <elm> ) R \>IsUnipotChevRepByFundamentalCoeffs( <elm> ) R \>IsUnipotChevRepByRoots( <elm> ) R
`IsUnipotChevRepByRootNumbers', `IsUnipotChevRepByFundamentalCoeffs' and
`IsUnipotChevRepByRoots' are different representations for unipotent
elements.
Roots of elements with representation `IsUnipotChevRepByRootNumbers' are
represented by their numbers (positions) in
`PositiveRoots(RootSystem(<U>))'.
Roots of elements with representation
`IsUnipotChevRepByFundamentalCoeffs' are represented by elements of
`PositiveRootsFC(RootSystem(<U>))'.
Roots of elements with representation `IsUnipotChevRepByRoots' are
represented by roots themself, i.e. elements of
`PositiveRoots(RootSystem(<U>))'.
(See "UnipotChevElemByRootNumbers", "UnipotChevElemByFundamentalCoeffs"
and "UnipotChevElemByRoots" for examples.)
\>`UNIPOT_DEFAULT_REP' V
This variable contains the default representation for newly created
elements, e.g. created by `One' or `Random'. When {\Unipot} is loaded,
the default representation is `IsUnipotChevRepByRootNumbers' and can be
changed by assigning a new value to `UNIPOT_DEFAULT_REP'.
*Note* that {\Unipot} doesn't check the type of this value, i.e. you may
assign any value to `UNIPOT_DEFAULT_REP', which may result in errors in
following commands:
\>UnipotChevElemByRootNumbers( <U>, <roots>, <felems> ) O \>UnipotChevElemByRootNumbers( <U>, <root>, <felem> ) O \>UnipotChevElemByRN( <U>, <roots>, <felems> ) O \>UnipotChevElemByRN( <U>, <root>, <felem> ) O
`UnipotChevElemByRootNumbers' returns an element of a unipotent subgroup
<U> with representation `Is\-UnipotChevRepByRootNumbers' (see "IsUnipotChevRepByRootNumbers").
<roots> should be a list of root numbers, i.e. integers from the range 1,
..., `Length(PositiveRoots(Root\-System(<U>)))'. And a list of
corresponding ring elements or indeterminates over that ring (see {\GAP}
Reference Manual, "ref:Indeterminate" for general information on
indeterminates or section "Symbolic computation" of this manual for
examples).
The second variant of `UnipotChevElemByRootNumbers' is an abbreviation
for the first one if <roots> and <felems> contain only one element.
`UnipotChevElemByRN' is just a synonym for `UnipotChevElemByRootNumbers'.
In this example we create two elements: $x_{r_1}( 2 ) . x_{r_5}( 7 )$ and
$x_{r_1}( 2 )$, where $r_i, i = 1, \dots, 6$ are the positive roots in
`PositiveRoots(RootSystem(<U>))' and $x_{r_i}(t), i = 1, \dots, 6$ the
corresponding root elements.
\>UnipotChevElemByFundamentalCoeffs( <U>, <roots>, <felems> ) O \>UnipotChevElemByFundamentalCoeffs( <U>, <root>, <felem> ) O \>UnipotChevElemByFC( <U>, <roots>, <felems> ) O \>UnipotChevElemByFC( <U>, <root>, <felem> ) O
`UnipotChevElemByFundamentalCoeffs' returns an element of a unipotent
subgroup <U> with representation `IsUnipotChevRepByFundamentalCoeffs'
(see "IsUnipotChevRepByFundamentalCoeffs").
<roots> should be a list of elements of
`PositiveRootsFC(Root\-System(<U>))'. And a list of
corresponding ring elements or indeterminates over that ring (see {\GAP}
Reference Manual, "ref:Indeterminate" for general information on
indeterminates or section "Symbolic computation" of this manual for
examples).
The second variant of `UnipotChevElemByFundamentalCoeffs' is an
abbreviation for the first one if <roots> and <felems> contain only one
element.
`UnipotChevElemByFC' is just a synonym for
`UnipotChevElemByFundamentalCoeffs'.
In this example we create the same two elements as in "UnipotChevElemByRootNumbers": $x_{[ 1, 0 ]}( 2 ) . x_{[ 3, 1 ]}( 7 )$
and $x_{[ 1, 0 ]}( 2 )$, where $[ 1, 0 ] = 1r_1 + 0r_2 = r_1$ and $[ 3, 1
] = 3r_1 + 1r_2=r_5$ are the first and the fifth positive roots of
`PositiveRootsFC(RootSystem(<U>))' respectively.
\>UnipotChevElemByRoots( <U>, <roots>, <felems> ) O \>UnipotChevElemByRoots( <U>, <root>, <felem> ) O \>UnipotChevElemByR( <U>, <roots>, <felems> ) O \>UnipotChevElemByR( <U>, <root>, <felem> ) O
`UnipotChevElemByRoots' returns an element of a unipotent subgroup
with representation `IsUnipotChev\-RepByRoots' (see "IsUnipotChevRepByRoots").
<roots> should be a list of elements of `PositiveRoots(%
Root\-System(<U>))'. And a list of corresponding ring elements
or indeterminates over that ring (see {\GAP} Reference Manual, "ref:Indeterminate" for general information on indeterminates or section "Symbolic computation" of this manual for examples).
The second variant of `UnipotChevElemByRoots' is an abbreviation for the
first one if <roots> and <felems> contain only one element.
`UnipotChevElemByR' is just a synonym for `UnipotChevElemByRoots'.
In this example we create again the two elements as in previous examples:
$x_{[ 2, -1 ]}( 2 ) . x_{[ 3, -1 ]}( 7 )$ and $x_{[ 2, -1 ]}( 2 )$, where
$[ 2, -1 ] = r_1$ and $[ 3, -1 ] = r_5$ are the first and the fifth
positive roots of `PositiveRoots(RootSystem( <U>))' respectively.
\>UnipotChevElemByRootNumbers( <x> )!{element conversion} O \>UnipotChevElemByFundamentalCoeffs( <x> )!{element conversion} O \>UnipotChevElemByRoots( <x> )!{element conversion} O
These three methods are provided for converting a unipotent element to
the respective representation.
If <x> has already the required representation, then <x> itself is
returned. Otherwise a *new* element with the required representation is
generated.
*Note:* If some attributes of <x> are known (e.g `Inverse' (see "Inverse!for `UnipotChevElem'") or `CanonicalForm' (see "CanonicalForm")), then they are ``converted'' to the new representation,
too.
\){\fmark}UnipotChevElemByRootNumbers( <U>, <list> ) O \){\fmark}UnipotChevElemByRoots( <U>, <list> ) O \){\fmark}UnipotChevElemByFundamentalCoeffs( <U>, <list> ) O
*DEPRECATED* These are old versions of `UnipotChevElemByXX' (from
{\Unipot} 1.0 and 1.1). They are deprecated now and exist for
compatibility only. They may be removed at any time.
\>CanonicalForm( <x> ) A
`CanonicalForm' returns the canonical form of . For more information
on the canonical form see Carter \cite{Car72}, Theorem 5.3.3 (ii). It
says:
Each element of a unipotent subgroup $U$ of a Chevalley group with root
system $\Phi$ is uniquely expressible in the form
$$ \prod_{r_i\in\Phi^+} x_{r_i}(t_i),
$$
where the product is taken over all positive roots in increasing order.
So if we call the positive roots $r_1,\dots,r_6$, we have $ z =
x_{r_2}(3)x_{r_1}(2) = x_{r_1}( 2 ) x_{r_2}( 3 ) x_{r_3}( 6 ) x_{r_4}( 12
) x_{r_5}( 24 ) x_{r_6}( -72 )$.
\>PrintObj( <x> )!{for `UnipotChevElem'} M \>ViewObj( <x> )!{for `UnipotChevElem'} M
Special methods for unipotent elements. (see {\GAP} Reference Manual,
section "ref:View and Print" for general information on `View' and
`Print'). The output depends on the representation of .
`ShallowCopy' creates a copy of . The returned object is *not
identical* to <x> but it is *equal* to <x> w.r.t. the equality operator
`='. *Note* that `CanonicalForm' and `Inverse' of (if known) are
identical to `CanonicalForm' and `Inverse' of the returned object.
(See {\GAP} Reference Manual, section "ref:Duplication of Objects" for
further information on copyability)
\>`<x> = <y>'{Equality!for UnipotChevElem}@{Equality!for `UnipotChevElem'} M \indextt{\\=}
Special method for unipotent elements. If <x> and <y> are identical or
are products of the *same* root elements then `true' is returned.
Otherwise `CanonicalForm' (see "CanonicalForm") of both arguments must be
computed (if not already known), which may be expensive. If the canonical
form of one of the elements must be calculated and `InfoLevel' of
`UnipotChevInfo' is at least 3, the user is notified about this:
\beginexample
gap> y := UnipotChevElemByRN( U_G2, [1,5], [2,7] );
x_{1}( 2 ) * x_{5}( 7 )
gap> z := UnipotChevElemByRN( U_G2, [5,1], [7,2] );
x_{5}( 7 ) * x_{1}( 2 )
gap> SetInfoLevel( UnipotChevInfo, 3 );
gap> y=z;
#I CanonicalForm for the 1st argument is not known.
#I computing it may take a while.
#I CanonicalForm for the 2nd argument is not known.
#I computing it may take a while.
true
gap> SetInfoLevel( UnipotChevInfo, 1 ); \endexample
\>`<x> \< <y>'{Less than!for UnipotChevElem}@{Less than!for `UnipotChevElem'} M \indextt{\\\<}
Special Method for `UnipotChevElem'
This is needed e.g. by `AsSSortetList'.
The ordering is computed in the following way:
Let $x = x_{r_1}(s_1) ... x_{r_n}(s_n)$
and $y = x_{r_1}(t_1) ... x_{r_n}(t_n)$, then
$$ x \< y \quad\Leftrightarrow\quad [ s_1, \dots, s_n ] \< [ t_1, \dots, t_n ], $$
where the lists are compared lexicographically.
e.g. for $x = x_{r_1}(1)x_{r_2}(1) = x_{r_1}(1)x_{r_2}(1)x_{r_3}(0)$ (field elems: `[ 1, 1, 0 ]')
and $y = x_{r_1}(1)x_{r_3}(1) = x_{r_1}(1)x_{r_2}(0)x_{r_3}(1)$ (field elems: `[ 1, 0, 1 ]')
we have $y \< x$ (above lists ordered lexicographically).
\>`<x> * <y>'{Multiplication!for UnipotChevElem}@{Multiplication!for `UnipotChevElem'} M \indextt{\\\*}
Special method for unipotent elements. The expressions in the form
$x_r(t)x_r(u)$ will be reduced to $x_r(t+u)$ whenever possible.
Special method for unipotent elements. `OneOp' returns the multiplicative
neutral element of <x>. This is equal to `<x>^0'.
\>Inverse( <x> )!{for `UnipotChevElem'} M \>InverseOp( <x> )!{for `UnipotChevElem'} M
Special methods for unipotent elements. We are using the fact
$$ \Bigl( x_{r_1}( t_1) . . . x_{r_m}(t_m) \Bigr)^{-1}
= x_{r_m}(-t_m) . . . x_{r_1}(-t_1) \.
$$
\>IsOne( <x> ) M
Special method for unipotent elements. Returns `true' if and only if
is equal to the identity element.
\>`<x> ^ <i>'{Powers!of UnipotChevElem}@{Powers!of `UnipotChevElem'} M
Integral powers of the unipotent elements are calculated by the default
methods installed in {\GAP}. But special (more efficient) methods are
instlled for root elements and for the identity.
\>`<x> ^ <y>'{Conjugation!of UnipotChevElem}@{Conjugation!of `UnipotChevElem'} M
Conjugation of two unipotent elements, i.e. $x^y = y^{-1}xy$. The
representation of the result will be the representation of <x>.
\>Comm( <x>, <y> )!{for `UnipotChevElem'} M \>Comm( <x>, <y>, "canonical" )!{for `UnipotChevElem'} M
Special methods for unipotent elements.
`Comm' returns the commutator of and , i.e. $ ^{-1} . ^{-1}
. <x> . <y>$. The second variant returns the canonical form of the
commutator. In some cases it may be more efficient than `CanonicalForm(
Comm( <x>, <y> ) )'
\>IsRootElement( <x> ) P
`IsRootElement' returns `true' if and only if <x> is a {\it root
element}, i.e.\ $<x>=x_{r}(t)$ for some root $r$. We store this property
immediately after creating objects.
*Note:* the canonical form of <x> may be a root element even if <x> isn't
one.
In some cases, calculation with explicite elements is not enough.
{\Unipot} povides a way to do symbolic calculations with unipotent
elements for this purpose. This is done by using indeterminates (see
{\GAP} Reference Manual, "ref:Indeterminates" for more information) over
the underlying field instead of the field elements.
\beginexample
gap> U_G2 := UnipotChevSubGr("G", 2, Rationals);;
gap> a := Indeterminate( Rationals, "a" );
a
gap> b := Indeterminate( Rationals, "b", [a] );
b
gap> c := Indeterminate( Rationals, "c", [a,b] );
c
gap> x := UnipotChevElemByFC(U_G2, [ [3,1], [1,0], [0,1] ], [a,b,c] );
x_{[ 3, 1 ]}( a ) * x_{[ 1, 0 ]}( b ) * x_{[ 0, 1 ]}( c )
gap> CanonicalForm(x);
x_{[ 1, 0 ]}( b ) * x_{[ 0, 1 ]}( c ) * x_{[ 3, 1 ]}( a ) *
x_{[ 3, 2 ]}( a*c )
gap> CanonicalForm(x^-1);
x_{[ 1, 0 ]}( -b ) * x_{[ 0, 1 ]}( -c ) * x_{[ 1, 1 ]}( b*c ) *
x_{[ 2, 1 ]}( -b^2*c ) * x_{[ 3, 1 ]}( -a+b^3*c ) * x_{[ 3, 2 ]}( b^3*c^2 ) \endexample
¤ Dauer der Verarbeitung: 0.17 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.