<html><head><title>[Polycyclic] 4 Pcp-groups - polycyclically presented groups</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a href ="CHAP005.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <h1>4 Pcp-groups - polycyclically presented groups</h1><p> <P> <H3>Sections</H3> <oL> <li> <A HREF="CHAP004.htm#SECT001">Pcp-elements -- elements of a pc-presented group</a> <li> <A HREF="CHAP004.htm#SECT002">Methods for pcp-elements</a> <li> <A HREF="CHAP004.htm#SECT003">Pcp-groups - groups of pcp-elements</a> </ol><p> <p> <p> <h2><a name="SECT001">4.1 Pcp-elements -- elements of a pc-presented group</a></h2> <p><p> A <strong>pcp-element</strong> is an element of a group defined by a consistent pc-presentation given by a collector. Suppose that <var>g<sub>1</sub>, ..., g<sub>n</sub></var> are the defining generators of the collector. Recall that each element <var>g</var> in this group can be written uniquely as a collected word <var>g<sub>1</sub><sup>e_1</sup> cdotsg<sub>n</sub><sup>e_n</sup></var> with <var>e<sub>i</sub> in<font face="helvetica,arial">Z</font></var> and <var>0 leqe<sub>i</sub> < r<sub>i</sub></var> for <var>i in I</var>. The integer vector <var>[e<sub>1</sub>, ..., e<sub>n</sub>]</var> is called the <strong>exponent vector</strong> of <var>g</var>. The following functions can be used to define pcp-elements via their exponent vector or via an arbitrary generator exponent word as introduced in Section <a href="CHAP003.htm">Collectors</a>. <p> <a name = "SSEC001.1"></a> <li><code>PcpElementByExponentsNC( </code><var>coll</var><code>, </code><var>exp</var><code> )</code> <a name = "SSEC001.1"></a> <li><code>PcpElementByExponents( </code><var>coll</var><code>, </code><var>exp</var><code> )</code> <p> returns the pcp-element with exponent vector <var>exp</var>. The exponent vector is considered relative to the defining generators of the pc-presentation. <p> <a name = "SSEC001.2"></a> <li><code>PcpElementByGenExpListNC( </code><var>coll</var><code>, </code><var>word</var><code> )</code> <a name = "SSEC001.2"></a> <li><code>PcpElementByGenExpList( </code><var>coll</var><code>, </code><var>word</var><code> )</code> <p> returns the pcp-element with generators exponent list <var>word</var>. This list <var>word</var> consists of a sequence of generator numbers and their corresponding exponents and is of the form <var>[i<sub>1</sub>, e<sub>i_1</sub>, i<sub>2</sub>, e<sub>i_2</sub>, ..., i<sub>r</sub>, e<sub>i_r</sub>]</var>. The generators exponent list is considered relative to the defining generators of the pc-presentation. <p> These functions return pcp-elements in the category <code>IsPcpElement</code>. Presently, the only representation implemented for this category is <code>IsPcpElementRep</code>. (This allows us to be a little sloppy right now. The basic set of operations for <code>IsPcpElement</code> has not been defined yet. This is going to happen in one of the next version, certainly as soon as the need for different representations arises.) <p> <a name = "SSEC001.3"></a> <li><code>IsPcpElement( </code><var>obj</var><code> )</code> <p> returns true if the object <var>obj</var> is a pcp-element. <p> <a name = "SSEC001.4"></a> <li><code>IsPcpElementRep( </code><var>obj</var><code> )</code> <p> returns true if the object <var>obj</var> is represented as a pcp-element. <p> <p> <h2><a name="SECT002">4.2 Methods for pcp-elements</a></h2> <p><p> Now we can describe attributes and functions for pcp-elements. The four basic attributes of a pcp-element, <code>Collector</code>, <code>Exponents</code>, <code>GenExpList</code> and <code>NameTag</code> are computed at the creation of the pcp-element. All other attributes are determined at runtime. <p> Let <var>g</var> be a pcp-element and <var>g<sub>1</sub>, ..., g<sub>n</sub></var> a polycyclic generating sequence of the underlying pc-presented group. Let <var>C<sub>1</sub>, ..., C<sub>n</sub></var> be the polycyclic series defined by <var>g<sub>1</sub>, ..., g<sub>n</sub></var>. <p> The <strong>depth</strong> of a non-trivial element <var>g</var> of a pcp-group (with respect to the defining generators) is the integer <var>i</var> such that <var>g inC<sub>i</sub> setminusC<sub>i+1</sub></var>. The depth of the trivial element is defined to be <var>n+1</var>. If <var>gnot=1</var> has depth <var>i</var> and <var>g<sub>i</sub><sup>e_i</sup> cdotsg<sub>n</sub><sup>e_n</sup></var> is the collected word for <var>g</var>, then <var>e<sub>i</sub></var> is the <strong>leading exponent</strong> of <var>g</var>. <p> If <var>g</var> has depth <var>i</var>, then we call <var>r<sub>i</sub> = [C<sub>i</sub>:C<sub>i+1</sub>]</var> the <strong>factor order</strong> of <var>g</var>. If <var>r<infty</var>, then the smallest positive integer <var>l</var> with <var>g<sup>l</sup> inC<sub>i+1</sub></var> is the called <strong>relative order</strong> of <var>g</var>. If <var>r=infty</var>, then the relative order of <var>g</var> is defined to be <var>0</var>. The index <var>e</var> of <var>langleg,C<sub>i+1</sub>rangle</var> in <var>C<sub>i</sub></var> is called <strong>relative index</strong> of <var>g</var>. We have that <var>r = el</var>. <p> We call a pcp-element <strong>normed</strong>, if its leading exponent is equal to its relative index. For each pcp-element <var>g</var> there exists an integer <var>e</var> such that <var>g<sup>e</sup></var> is normed. <p> <p> <a name = "SSEC002.1"></a> <li><code>Collector( </code><var>g</var><code> )</code> <p> the collector to which the pcp-element <var>g</var> belongs. <p> <a name = "SSEC002.2"></a> <li><code>Exponents( </code><var>g</var><code> )</code> <p> returns the exponent vector of the pcp-element <var>g</var> with respect to the defining generating set of the underlying collector. <p> <a name = "SSEC002.3"></a> <li><code>GenExpList( </code><var>g</var><code> )</code> <p> returns the generators exponent list of the pcp-element <var>g</var> with respect to the defining generating set of the underlying collector. <p> <a name = "SSEC002.4"></a> <li><code>NameTag( </code><var>g</var><code> )</code> <p> the name used for printing the pcp-element <var>g</var>. Printing is done by using the name tag and appending the generator number of <var>g</var>. <p> <a name = "SSEC002.5"></a> <li><code>Depth( </code><var>g</var><code> )</code> <p> returns the depth of the pcp-element <var>g</var> relative to the defining generators. <p> <a name = "SSEC002.6"></a> <li><code>LeadingExponent( </code><var>g</var><code> )</code> <p> returns the leading exponent of pcp-element <var>g</var> relative to the defining generators. If <var>g</var> is the identity element, the functions returns 'fail' <p> <a name = "SSEC002.7"></a> <li><code>RelativeOrder( </code><var>g</var><code> )</code> <p> returns the relative order of the pcp-element <var>g</var> with respect to the defining generators. <p> <a name = "SSEC002.8"></a> <li><code>RelativeIndex( </code><var>g</var><code> )</code> <p> returns the relative index of the pcp-element <var>g</var> with respect to the defining generators. <p> <a name = "SSEC002.9"></a> <li><code>FactorOrder( </code><var>g</var><code> )</code> <p> returns the factor order of the pcp-element <var>g</var> with respect to the defining generators. <p> <a name = "SSEC002.10"></a> <li><code>NormingExponent( </code><var>g</var><code> )</code> <p> returns a positive integer <var>e</var> such that the pcp-element <var>g</var> raised to the power of <var>e</var> is normed. <p> <a name = "SSEC002.11"></a> <li><code>NormedPcpElement( </code><var>g</var><code> )</code> <p> returns the normed element corresponding to the pcp-element <var>g</var>. <p> <p> <h2><a name="SECT003">4.3 Pcp-groups - groups of pcp-elements</a></h2> <p><p> labelpcpgroup <p> A <strong>pcp-group</strong> is a group consisting of pcp-elements such that all pcp-elements in the group share the same collector. Thus the group <var>G</var> defined by a polycyclic presentation and all its subgroups are pcp-groups. <p> <a name = "SSEC003.1"></a> <li><code>PcpGroupByCollector( </code><var>coll</var><code> )</code> <a name = "SSEC003.1"></a> <li><code>PcpGroupByCollectorNC( </code><var>coll</var><code> )</code> <p> returns a pcp-group build from the collector <var>coll</var>. <p> The function calls <code>UpdatePolycyclicCollector</code> (see <a href="CHAP003.htm#SSEC001.6">UpdatePolycyclicCollector</a>) and checks the confluence (see <a href="CHAP003.htm#SSEC001.7">IsConfluent</a>) of the collector. <p> The non-check version bypasses these checks. <p> <a name = "SSEC003.2"></a> <li><code>Group( </code><var>gens</var><code>, </code><var>id</var><code> )</code> <p> returns the group generated by the pcp-elements <var>gens</var> with identity <var>id</var>. <p> <a name = "SSEC003.3"></a> <li><code>Subgroup( </code><var>G</var><code>, </code><var>gens</var><code> )</code> <p> returns a subgroup of the pcp-group <var>G</var> generated by the list <var>gens</var> of pcp-elements from <var>G</var>. <p> <pre> gap> ftl := FromTheLeftCollector( 2 );; gap> SetRelativeOrder( ftl, 1, 2 ); gap> SetConjugate( ftl, 2, 1, [2,-1] ); gap> UpdatePolycyclicCollector( ftl ); gap> G:= PcpGroupByCollectorNC( ftl ); Pcp-group with orders [ 2, 0 ] gap> Subgroup( G, GeneratorsOfGroup(G){[2]} ); Pcp-group with orders [ 0 ] </pre> <p> <p> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP003.htm">Previous</a>] [<a href ="CHAP005.htm">Next</a>] [<a href = "theindex.htm">Index</a>] <P> <address>Polycyclic manual<br>Februar 2009 </address></body></html>