Sophie

Sophie

distrib > * > 2010.0 > * > by-pkgid > 0c1f9463f03451b5503f0c33beb88a98 > files > 1736

gap-system-4.4.12-5mdv2010.0.x86_64.rpm

<html><head><title>[Example] 2 Computing the Mal'cev correspondence</title></head>
<body text="#000000" bgcolor="#ffffff">
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP001.htm">Previous</a>] [<a href ="CHAP003.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<h1>2 Computing the Mal'cev correspondence</h1><p>
<P>
<H3>Sections</H3>
<oL>
<li> <A HREF="CHAP002.htm#SECT001">The main functions</a>
<li> <A HREF="CHAP002.htm#SECT002">An example application</a>
</ol><p>
<p>
<p>
<h2><a name="SECT001">2.1 The main functions</a></h2>
<p><p>
Let <var>G</var> be a <var>T</var>-group
and <var>hatG</var> its <var><font face="helvetica,arial">Q</font></var>-powered hull.
In this chapter we describe functionality 
for setting up the 
Mal'cev correspondence
between <var>hatG</var> and the Lie algebra <var>L(G)</var>.
<p>
The data structures needed for computations with <var>hatG</var> and 
<var>L(G)</var> are 
stored in a so-called Mal'cev object.
Computational representations of 
elements of <var>hatG</var>, respectively <var>L(G)</var>, 
will be called Mal'cev group elements, respectively 
Mal'cev Lie elements.
<p>
<li><code>MalcevObjectByTGroup( </code><var>N</var><code> )</code>
<p>
If <var>N</var> is a a T-group 
(i.e. a finitely generated torsion-free nilpotent group),
given by a polycyclic presentation with respect to a Mal'cev basis,
then this function computes the Mal'cev correspondence for <var>N</var> 
and stores the result in a so-called Mal'cev object. 
Otherwise this function returns <code>fail</code>.
In the moment this function is restricted to groups <var>N</var>
of nilpotency class at most 9.
<p>
<li><code>UnderlyingGroup( </code><var>mo</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> this function returns the T-group,
which was used to build <var>mo</var>.
<p>
<li><code>UnderlyingLieAlgebra( </code><var>mo</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> this function returns the Lie algebra,
which underlies the correspondence described by <var>mo</var>.
<p>
<li><code>Dimension( </code><var>mo</var><code> )</code>
<p>
returns the dimension of the Lie algebra that underlies the Mal'cev object <var>mo</var>.
<p>
<li><code>MalcevGrpElementByExponents( </code><var>mo</var><code>, </code><var>exps</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> and an exponent vector <var>exps</var> with rational 
entries, this functions returns the Mal'cev group element, which 
has exponents <var>exps</var> with respect to the Mal'cev basis of the underlying
group of <var>mo</var>.
<p>
<li><code>MalcevLieElementByCoefficients( </code><var>mo</var><code>, </code><var>coeffs</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> and a coefficient vector <var>coeffs</var> with rational 
entries, this functions returns the Mal'cev Lie element, which 
has coefficients  <var>coeffs</var> with respect to the basis of the underlying
Lie algebra of <var>mo</var>.
<p>
<li><code>RandomGrpElm( </code><var>mo</var><code>, </code><var>range</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> this function returns the output of 
MalcevGrpElementByExponents( <var>mo</var>, <var>exps</var> ), where <var>exps</var> is an
exponent vector whose entries are randomly chosen integers between 
-<var>range</var> and <var>range</var>.
<p>
<li><code>RandomLieElm( </code><var>mo</var><code>, </code><var>range</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> this function returns the output of 
MalcevLieElementByExponents( <var>mo</var>, <var>coeffs</var> ), where <var>coeffs</var> is 
a coefficient vector whose entries are randomly chosen integers between 
-<var>range</var> and <var>range</var>.
<p>
<li><code>Log( </code><var>g</var><code> )</code>
<p>
For Mal'cev group element <var>g</var> this function returns the corresponding
Mal'cev Lie element.
<p>
<li><code>Exp( </code><var>x</var><code> )</code>
<p>
For Mal'cev Lie element <var>x</var> this function returns the corresponding
Mal'cev group element.
<p>
<li><code></code><var>g</var><code> * </code><var>h</var><code></code>
<p>
returns the product of Mal'cev group elements.
<p>
<li><code>Comm( </code><var>x</var><code>, </code><var>y</var><code> )</code>
<p>
If <var>x</var>,<var>y</var> are Mal'cev group elements, then this function returns
the group theoretic commutator of <var>x</var> and <var>y</var>.
If <var>x</var>,<var>y</var> are Mal'cev Lie elements, then this functions returns
the Lie commutator of <var>x</var> and <var>y</var>.
<p>
<li><code>MalcevSymbolicGrpElementByExponents( </code><var>mo</var><code>, </code><var>exps</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> and an exponent vector <var>exps</var> with rational 
indeterminates as entries, 
this functions returns the Mal'cev group element, which 
has exponents <var>exps</var> with respect to the Mal'cev basis of the underlying
group of <var>mo</var>.
<p>
<li><code>MalcevLieElementByCoefficients( </code><var>mo</var><code>, </code><var>coeffs</var><code> )</code>
<p>
For a Mal'cev object <var>mo</var> and a coefficient vector <var>coeffs</var> with rational 
indeterminates as entries, 
this functions returns the Mal'cev Lie element, which 
has coefficients  <var>coeffs</var> with respect to the basis of the underlying
Lie algebra of <var>mo</var>.
<p>
<p>
<h2><a name="SECT002">2.2 An example application</a></h2>
<p><p>
<pre>
gap&gt; n := 2;
2
gap&gt; F := FreeGroup( n );
&lt;free group on the generators [ f1, f2 ]&gt;
gap&gt; c := 3;
3
gap&gt; N := NilpotentQuotient( F, c );
Pcp-group with orders [ 0, 0, 0, 0, 0 ]

gap&gt; mo := MalcevObjectByTGroup( N );
&lt;&lt;Malcev object of dimension 5&gt;&gt;
gap&gt; dim := Dimension( mo );
5
gap&gt; UnderlyingGroup( mo );
Pcp-group with orders [ 0, 0, 0, 0, 0 ]
gap&gt; UnderlyingLieAlgebra( mo );
&lt;Lie algebra of dimension 5 over Rationals&gt;

gap&gt; g := MalcevGrpElementByExponents( mo, [1,1,0,2,-1/2] );
[ 1, 1, 0, 2, -1/2 ]
gap&gt; x := MalcevLieElementByCoefficients( mo, [1/2, 2, -1, 3, 5 ] );
[ 1/2, 2, -1, 3, 5 ]

gap&gt; h := RandomGrpElm( mo );
[ 5, -3, 0, -2, 8 ]
gap&gt; y := RandomLieElm( mo );
[ 3, 9, 5, 5, 2 ]

gap&gt; z := Log( g );
[ 1, 1, -1/2, 7/3, -1/3 ]
gap&gt; Exp( z ) = g;
true
gap&gt; k := Exp( y );
[ 3, 9, 37/2, 77/4, 395/4 ]
gap&gt; Log( k ) = y;
true

gap&gt; g*h;
[ 6, -2, 5, 10, -15/2 ]
gap&gt; Comm(g,h);
[ 0, 0, 8, 10, -18 ]
gap&gt; Comm(x,y);
[ 0, 0, 3/2, -25/4, -79/4 ]

gap&gt; indets := List( List( [1..dim], i-&gt;Concatenation( "a_", String(i) ) ),
&gt;                   x-&gt;Indeterminate( Rationals, x : new ) );
[ a_1, a_2, a_3, a_4, a_5 ]
gap&gt; g_sym := MalcevSymbolicGrpElementByExponents( mo, indets );
[ a_1, a_2, a_3, a_4, a_5 ]
gap&gt; x_sym := Log( g_sym );
[ a_1, a_2, -1/2*a_1*a_2+a_3, 1/12*a_1^2*a_2+1/4*a_1*a_2-1/2*a_1*a_3+a_4,
  -1/12*a_1*a_2^2+1/4*a_1*a_2-1/2*a_2*a_3+a_5 ]
gap&gt; g_sym * g;
[ a_1+1, a_2+1, a_2+a_3, a_3+a_4+2, 1/2*a_2^2+1/2*a_2+a_3+a_5-1/2 ]
</pre>
<p>
<p>
[<a href = "chapters.htm">Up</a>] [<a href ="CHAP001.htm">Previous</a>] [<a href ="CHAP003.htm">Next</a>] [<a href = "theindex.htm">Index</a>]
<P>
<address>Example manual<br>June 2007
</address></body></html>