<html><head><title>[NQL] 4 The underlying functions</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a href = "theindex.htm">Index</a>] <h1>4 The underlying functions</h1><p> <P> <H3>Sections</H3> <oL> <li> <A HREF="CHAP004.htm#SECT001">Nilpotent Quotient Systems for invariant L-presentations</a> <li> <A HREF="CHAP004.htm#SECT002">Attributes of L-presented groups related with the nilpotent quotient algorithm</a> <li> <A HREF="CHAP004.htm#SECT003">The Info-Class InfoNQL</a> </ol><p> <p> <p> <h2><a name="SECT001">4.1 Nilpotent Quotient Systems for invariant L-presentations</a></h2> <p><p> For an invariantly <var>L</var>-presented group <var>G</var>, our algorithm computes a nilpotent presentation for <var>G/gamma<sub>c+1</sub>(G)</var> by computing a <var>weighted nilpotent quotient system</var> for <var>G/G'</var> and extending it inductively to a weighted nilpotent quotient system for <var>G/gamma<sub>c+1</sub>(G)</var>. <p> In the <font face="Gill Sans,Helvetica,Arial">NQL</font> package, a weighted nilpotent quotient system is a record containing the following entries: <p> <p> <dl compact> <dt><var>Lpres</var> <dd> the invariantly <var>L</var>-presented group <var>G</var>. <p> <dt><var>Pccol</var> <dd> <code>FromTheLeftCollector</code> of the nilpotent quotient represented by this quotient system. <p> <dt><var>Imgs</var> <dd> the images of the generators of the <var>L</var>-presented group <var>G</var> under the epimorphism onto the nilpotent quotient <var>Pccol</var>. For each generator of <var>G</var> there is an integer or a generator exponent list. If the image is an integer <var>int</var>, the image is a definition of the <var>int</var>-th generator of the nilpotent presentation <var>Pccol</var>. <p> <dt><var>Epimorphism</var><dd> an epimorphism from the <var>L</var>-presented group <var>G</var> onto its nilpotent quotient <var>Pccol</var> with the images of the generators given by <var>Imgs</var>. <p> <dt><var>Weights</var> <dd> a list of the weight of each generator of the nilpotent presentation <var>Pccol</var>. <p> <var>Definitions</var> <dt> <dd> the definition of each generator of <var>Pccol</var>. Each generator in the quotient system has a definition as an image or as a commutator of the form <var>[a<sub>j</sub>,a<sub>i</sub>]</var> where <var>a<sub>j</sub></var> and <var>a<sub>i</sub></var> are generators of a certain weight. If the <var>i</var>-th entry is an integer, the <var>i</var>-th generator of <var>Pccol</var> has a definition as an image. Otherwise, the <var>i</var>-th entry is a <var>2</var>-tuple <var>[k,l]</var> and the <var>i</var>-th generator has a definition as commutator <var>[a<sub>k</sub>,a<sub>l</sub>]</var>. </dl> <p> A weighted nilpotent quotient system of an invariantly <var>L</var>-presented group can be computed with the following functions. <p> <a name = "SSEC001.1"></a> <li><code>InitQuotientSystem( </code><var>LpGroup</var><code> ) O</code> <p> computes a weighted nilpotent quotient system for the abelian quotient of the <var>L</var>-presented group <var>LpGroup</var>. <p> <a name = "SSEC001.2"></a> <li><code>ExtendQuotientSystem( </code><var>QS</var><code> ) F</code> <p> extends the weighted nilpotent quotient system <var>QS</var> for a class-<var>c</var> quotient of an invariantly <var>L</var>-presented group to a weighted nilpotent quotient system of its class-<var>c+1</var> quotient. <p> <pre> gap> G := ExamplesOfLPresentations( 1 ); <L-presented group on the generators [ a, b, c, d ]> gap> Q := InitQuotientSystem( G ); rec( Lpres := <L-presented group on the generators [ a, b, c, d ]>, Pccol := <<from the left collector with 3 generators>>, Imgs := [ 1, [ 2, 1, 3, 1 ], 2, 3 ], Epimorphism := [ a, b, c, d ] -> [ g1, g2*g3, g2, g3 ], Weights := [ 1, 1, 1 ], Definitions := [ 1, 3, 4 ] ) gap> ExtendQuotientSystem( Q ); rec( Lpres := <L-presented group on the generators [ a, b, c, d ]>, Pccol := <<from the left collector with 5 generators>>, Imgs := [ 1, [ 2, 1, 3, 1 ], 2, 3 ], Definitions := [ 1, 3, 4, [ 2, 1 ], [ 3, 1 ] ], Weights := [ 1, 1, 1, 2, 2 ], Epimorphism := [ a, b, c, d ] -> [ g1, g2*g3, g2, g3 ] ) </pre> <p> <p> <h2><a name="SECT002">4.2 Attributes of L-presented groups related with the nilpotent quotient algorithm</a></h2> <p><p> To avoid repeated extensions of a weighted nilpotent quotient system the largest known quotient system is stored as an attribute of the invariantly <var>L</var>-presented group. For non-invariantly <var>L</var>-presented groups (or groups which are not known to be invariantly <var>L</var>-presented) the known epimorphisms onto the nilpotent quotients are stored as an attribute. <p> <a name = "SSEC002.1"></a> <li><code>NilpotentQuotientSystem( </code><var>LpGroup</var><code> ) A</code> <p> stores the largest known weighted nilpotent quotient system of an invariantly <var>L</var>-presented group. <p> <pre> gap> G := ExamplesOfLPresentations( 1 );; gap> NilpotentQuotient( G, 5 ); Pcp-group with orders [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ] gap> NilpotentQuotientSystem( G ); rec( Lpres := <L-presented group on the generators [ a, b, c, d ]>, Pccol := <<from the left collector with 10 generators>>, Imgs := [ 1, [ 2, 1, 3, 1 ], 2, 3 ], Definitions := [ 1, 3, 4, [ 2, 1 ], [ 3, 1 ], [ 4, 2 ], [ 4, 3 ], [ 7, 1 ], [ 8, 2 ], [ 8, 3 ] ], Weights := [ 1, 1, 1, 2, 2, 3, 3, 4, 5, 5 ], Epimorphism := [ a, b, c, d ] -> [ g1, g2*g3, g2, g3 ] ) gap> NilpotencyClassOfGroup( PcpGroupByCollectorNC( last.Pccol ) ); 5 </pre> <p> <a name = "SSEC002.2"></a> <li><code>NilpotentQuotients( </code><var>LpGroup</var><code> ) A</code> <p> stores all known epimorphisms onto the nilpotent quotients of <var>LpGroup</var>. The nilpotent quotients are accessible by the operation <code>Range</code>. <p> <pre> gap> G:=ExamplesOfLPresentations( 3 );; gap> HasIsInvariantLPresentation( G ); false gap> NilpotentQuotient( G, 3 ); Pcp-group with orders [ 0, 2, 2, 2 ] gap> NilpotentQuotients( G ); [ [ a, t, u ] -> [ g2, g1, g2 ], [ a, t, u ] -> [ g2, g1, g2 ], [ a, t, u ] -> [ g2, g1, g2 ] ] gap> Range( last[2] ); Pcp-group with orders [ 0, 2, 2 ] </pre> The underlying invariant <var>L</var>-presentation has stored its largest weighted nilpotent quotient system as an attribute. <pre> gap> NilpotentQuotientSystem( UnderlyingInvariantLPresentation( G ) ); rec( Lpres := <L-presented group on the generators [ a, t, u ]>, Pccol := <<from the left collector with 9 generators>>, Imgs := [ 1, 2, 3 ], Definitions := [ 1, 2, 3, [ 2, 1 ], [ 3, 2 ], [ 4, 1 ], [ 4, 2 ], [ 5, 2 ], [ 5, 3 ] ], Weights := [ 1, 1, 1, 2, 2, 3, 3, 3, 3 ], Epimorphism := [ a, t, u ] -> [ g1, g2, g3 ] ) </pre> <p> <p> <h2><a name="SECT003">4.3 The Info-Class InfoNQL</a></h2> <p><p> To get some information about the progress of the algorithm, one can use the info class <code>InfoNQL</code>. <p> <a name = "SSEC003.1"></a> <li><code>InfoNQL</code> <p> is the info class of the <font face="Gill Sans,Helvetica,Arial">NQL</font>-package. If the info-level is <var>1</var>, the info-class gives further information on the progress of the nilpotent quotient algorithm for <var>L</var>-presented groups. The info-level <var>2</var> also includes some information on the runtime of our algorithm while the info-level <var>3</var> is mainly used for debugging-purposes. An example of such a session for the Grigorchuk group is shown below: <p> <pre> gap> SetInfoLevel( InfoNQL, 1 );; gap> G:=ExamplesOfLPresentations( 1 ); #I The Grigorchuk group on 4 generators <L-presented group on the generators [ a, b, c, d ]> gap> NilpotentQuotient( G, 3 ); #I Class 1: 3 generators with relative orders: [ 2, 2, 2 ] #I Class 2: 2 generators with relative orders: [ 2, 2 ] #I Class 3: 2 generators with relative orders: [ 2, 2 ] Pcp-group with orders [ 2, 2, 2, 2, 2, 2, 2 ] gap> SetInfoLevel( InfoNQL, 2 ); gap> NilpotentQuotient( G, 5 ); #I Time spent for spinning algo: 0:00:00.004 #I Class 4: 1 generators with relative orders: [ 2 ] #I Runtime for this step 0:00:00.028 #I Time spent for spinning algo: 0:00:00.008 #I Class 5: 2 generators with relative orders: [ 2, 2 ] #I Runtime for this step 0:00:00.036 Pcp-group with orders [ 2, 2, 2, 2, 2, 2, 2, 2, 2, 2 ] </pre> <p> <a name = "SSEC003.2"></a> <li><code>InfoNQL_MAX_GENS </code> <p> this global variable sets the limit of generators whose relative order will be shown on each step of the nilpotent quotient algorithm, if the info-level of <code>InfoNQL</code> is positive. <p> <p> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a href = "theindex.htm">Index</a>] <P> <address>NQL manual<br>November 2008 </address></body></html>