<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> n := 2; 2 gap> F := FreeGroup( n ); <free group on the generators [ f1, f2 ]> gap> c := 3; 3 gap> N := NilpotentQuotient( F, c ); Pcp-group with orders [ 0, 0, 0, 0, 0 ] gap> mo := MalcevObjectByTGroup( N ); <<Malcev object of dimension 5>> gap> dim := Dimension( mo ); 5 gap> UnderlyingGroup( mo ); Pcp-group with orders [ 0, 0, 0, 0, 0 ] gap> UnderlyingLieAlgebra( mo ); <Lie algebra of dimension 5 over Rationals> gap> g := MalcevGrpElementByExponents( mo, [1,1,0,2,-1/2] ); [ 1, 1, 0, 2, -1/2 ] gap> x := MalcevLieElementByCoefficients( mo, [1/2, 2, -1, 3, 5 ] ); [ 1/2, 2, -1, 3, 5 ] gap> h := RandomGrpElm( mo ); [ 5, -3, 0, -2, 8 ] gap> y := RandomLieElm( mo ); [ 3, 9, 5, 5, 2 ] gap> z := Log( g ); [ 1, 1, -1/2, 7/3, -1/3 ] gap> Exp( z ) = g; true gap> k := Exp( y ); [ 3, 9, 37/2, 77/4, 395/4 ] gap> Log( k ) = y; true gap> g*h; [ 6, -2, 5, 10, -15/2 ] gap> Comm(g,h); [ 0, 0, 8, 10, -18 ] gap> Comm(x,y); [ 0, 0, 3/2, -25/4, -79/4 ] gap> indets := List( List( [1..dim], i->Concatenation( "a_", String(i) ) ), > x->Indeterminate( Rationals, x : new ) ); [ a_1, a_2, a_3, a_4, a_5 ] gap> g_sym := MalcevSymbolicGrpElementByExponents( mo, indets ); [ a_1, a_2, a_3, a_4, a_5 ] gap> 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> 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>