<html><head><title>[IRREDSOL] 5 Primitive solvable groups</title></head> <body text="#000000" bgcolor="#ffffff"> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a href = "theindex.htm">Index</a>] <h1>5 Primitive solvable groups</h1><p> <P> <H3>Sections</H3> <oL> <li> <A HREF="CHAP005.htm#SECT001">Translating between irreducible solvable matrix groups and primitive solvable groups</a> <li> <A HREF="CHAP005.htm#SECT002">Finding primitive pc groups with given properties</a> <li> <A HREF="CHAP005.htm#SECT003">Finding primitive solvable permutation groups with given properties</a> <li> <A HREF="CHAP005.htm#SECT004">Recognizing primitive solvable groups</a> </ol><p> <p> A finite group <var>G</var> is called <em>primitive</em>if it has a maximal subgroup <var>M</var> with trivial core; the group acts faithfully and primitively on the cosets of such a maximal subgroup. <p> Now assume that <var>G</var> is primitive and solvable. Then there exists a unique conjugacy class of such maximal subgroups; the index of <var>M</var> in <var>G</var> is called the degree of <var>G</var>. Moreover, <var><var>M</var></var> complements the socle <var>N</var> of <var><var>G</var></var>. THe socle <var>N</var> coincides with the Fitting subgroup of <var>G</var>; it is the unique minimal normal subgroup <var>N</var> of <var>G</var>. Therefore, the index of <var>M</var> in <var>G</var> is a prime power, <var>p<sup>n</sup></var>, say. Regarding <var>N</var> as a <var><font face="helvetica,arial">F</font><sub>p</sub></var>-vector space, <var>M</var> acts as an irreducible subgroup of <var>GL(n,p)</var> on <var>N</var>. Conversely, if <var>M</var> is an irreducible solvable subgroup of <var>GL(n,p)</var>, and <var>V = <font face="helvetica,arial">F</font><sub>p</sub><sup>n</sup></var>, then the split extension of <var>V</var> by <var>M</var> is a primitive solvable group. This establishes a well known bijection between the isomorphism types (or, equivalently, the <var>Sym(p<sup>n</sup>)</var>-conjugacy classes) of primitive solvable groups of degree <var><var>p</var><sup><</sup>n></var> and the conjugacy classes of irreducible solvable subgroups of <var>GL(n, p)</var>. <p> The <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> package provides functions for translating between primitive solvable groups and irreducible solvable matrix groups, which are described in Section <a href="CHAP005.htm#SECT001">Translating between irreducible solvable matrix groups and primitive solvable groups</a>. Moreover, there are functions for finding primitive solvable groups with given properties, see Section <a href="CHAP005.htm#SECT002">Finding primitive pc groups with given properties</a> and <a href="CHAP005.htm#SECT003">Finding primitive solvable permutation groups with given properties</a>. <p> <p> <h2><a name="SECT001">5.1 Translating between irreducible solvable matrix groups and primitive solvable groups</a></h2> <p><p> <a name = "SSEC001.1"></a> <li><code>PrimitivePcGroupIrreducibleMatrixGroup(</code><var>G</var><code>) F</code> <a name = "SSEC001.1"></a> <li><code>PrimitivePcGroupIrreducibleMatrixGroupNC(</code><var>G</var><code>) F</code> <p> For a given irreducible solvable matrix group <var>G</var> over a prime field, this function returns a primitive pc group <var>H</var> which is the split extension of <var>G</var> with its natural underlying vector space <var>V</var>. The <code>NC</code> version does not check whether <var>G</var> is over a prime field, or whether <var>G</var> is irreducible. The group <var>H</var> has an attribute <code>Socle</code> (see <a href="../../../doc/htm/ref/CHAP037.htm#SSEC012.10">Socle</a> in the <font face="Gill Sans,Helvetica,Arial">GAP</font> reference manual, corresponding to <var>V</var>. If the package <font face="Gill Sans,Helvetica,Arial">CRISP</font> is loaded, then the attribute <code>SocleComplement</code> (see <a href="../../crisp/htm/CHAP004.htm#SSEC003.2">crisp:SocleComplement</a> in the <font face="Gill Sans,Helvetica,Arial">CRISP</font> manual) is set to a subgroup of <var>H</var> isomorphic with <var>G</var>. <p> <pre> gap> PrimitivePcGroupIrreducibleMatrixGroup ( > IrreducibleSolvableMatrixGroup (4,2,2,3)); <pc group of size 160 with 6 generators> </pre> <p> <a name = "SSEC001.2"></a> <li><code>PrimitivePermutationGroupIrreducibleMatrixGroup(</code><var>G</var><code>) F</code> <a name = "SSEC001.2"></a> <li><code>PrimitivePermutationGroupIrreducibleMatrixGroupNC(</code><var>G</var><code>) F</code> <p> For a given irreducible solvable matrix group <var>G</var> over a prime field, this function returns a primitive permutation group <var>H</var>, representing the affine action of <var>G</var> on its natural vector space <var>V</var>. The <code>NC</code> version does not check whether <var>G</var> is over a prime field, or whether <var>G</var> is irreducible. The group <var>H</var> has an attribute <code>Socle</code> (see <a href="../../../doc/htm/ref/CHAP037.htm#SSEC012.10">Socle</a> in the <font face="Gill Sans,Helvetica,Arial">GAP</font> reference manual, corresponding to <var>V</var>. If the package <font face="Gill Sans,Helvetica,Arial">CRISP</font> is loaded, then the attribute <code>SocleComplement</code> (see <a href="../../crisp/htm/CHAP004.htm#SSEC003.2">crisp:SocleComplement</a> in the <font face="Gill Sans,Helvetica,Arial">CRISP</font> manual) is set to a subgroup of <var>H</var> isomorphic with <var>G</var>. <p> <pre> gap> PrimitivePermutationGroupIrreducibleMatrixGroup ( > IrreducibleSolvableMatrixGroup (4,2,2,3)); <permutation group of size 160 with 6 generators> </pre> <p> <a name = "SSEC001.3"></a> <li><code>IrreducibleMatrixGroupPrimitiveSolvableGroup(</code><var>G</var><code>) F</code> <a name = "SSEC001.3"></a> <li><code>IrreducibleMatrixGroupPrimitiveSolvableGroupNC(</code><var>G</var><code>) F</code> <p> For a given primitive solvable group <var>G</var>, this function returns a matrix group obtained from the conjugation action of <var>G</var> on its unique minimal normal subgroup <var>N</var>, regarded as a vector space over <var><font face="helvetica,arial">F</font><sub>p</sub></var>, where <var>p</var> is the exponent of <var>N</var>. The <var><font face="helvetica,arial">F</font><sub>p</sub></var>-basis of <var>N</var> is chosen arbitrarily, so that the matrix group returned is unique only up to conjugacy in the relevant <var>GL(n, p)</var>. The NC version does not check whether <var>G</var> is primitive and solvable. <p> <pre> gap> IrreducibleMatrixGroupPrimitiveSolvableGroup (SymmetricGroup (4)); Group([ <an immutable 2x2 matrix over GF2>, <an immutable 2x2 matrix over GF2> , <an immutable 2x2 matrix over GF2>, <an immutable 2x2 matrix over GF2> ]) </pre> <p> <p> <h2><a name="SECT002">5.2 Finding primitive pc groups with given properties</a></h2> <p><p> <a name = "SSEC002.1"></a> <li><code>AllPrimitivePcGroups(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns a list of all primitive solvable pc groups <var>G</var> in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library for which the return value of <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions which take a pc group as their only argument and return a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its equivalents, see below. <p> The following functions <var>func_i</var> are handled particularly efficiently. <p> <dl compact> <dt>--<dd><code>Degree</code>, <code>NrMovedPoints</code>, <code>LargestMovedPoint</code> <dt>--<dd><code>Order</code>, <code>Size</code> </dl> <p> Note that there is also a function <code>IteratorPrimitivePcGroups</code> (see <a href="CHAP005.htm#SSEC002.3">IteratorPrimitivePcGroups</a>) which allows one to run through the list produced by <code>AllPrimitivePcGroups</code> without having to store all the groups in the list simultaneously. <p> <pre> gap> AllPrimitivePcGroups (Degree, [1..255], Order, [168]); [ <pc group of size 168 with 5 generators> ] </pre> <p> <a name = "SSEC002.2"></a> <li><code>OnePrimitivePcGroup(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns one primitive solvable pc group <var>G</var> in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library for which the return value of <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>, or <code>fail</code> if no such group exists. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions which take a pc group as their only argument and return a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its, equivalents, <code>NrMovedPoints</code> or <code>LargestMovedPoint</code>. <p> For a list of functions which are handled particularly efficiently, see <a href="CHAP005.htm#SSEC002.1">AllPrimitivePcGroups</a>. <p> <pre> gap> OnePrimitivePcGroup (Degree, [256], Order, [256*255]); <pc group of size 65280 with 11 generators> </pre> <p> <a name = "SSEC002.3"></a> <li><code>IteratorPrimitivePcGroups(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns an iterator which runs through the list of all primitive solvable pc groups <var>G</var> in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library such that <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions taking a pc group as their only argument and returning a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its, equivalents, <code>NrMovedPoints</code> or <code>LargestMovedPoint</code>. For a list of functions which are handled particularly efficiently, see <a href="CHAP005.htm#SSEC002.1">AllPrimitivePcGroups</a>. <p> Using <p> <code>IteratorPrimitivePcGroups</code>(<var>func_1</var>, <var>arg_1</var>, <var>func_2</var>, <var>arg_2</var>, ...)) <p> is functionally equivalent to <p> <code>Iterator</code>(<code>AllPrimitivePcGroups</code>(<var>func_1</var>, <var>arg_1</var>, <var>func_2</var>, <var>arg_2</var>, ...)) <p> (see <a href="../../../doc/htm/ref/CHAP028.htm#SECT007">Iterators</a> in the <font face="Gill Sans,Helvetica,Arial">GAP</font> reference manual for details) but does not compute all relevant pc groups at the same time. This may save some memory. <p> <p> <h2><a name="SECT003">5.3 Finding primitive solvable permutation groups with given properties</a></h2> <p><p> <a name = "SSEC003.1"></a> <li><code>AllPrimitiveSolvablePermutationGroups(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns a list of all primitive solvable permutation groups <var>G</var> corresponding to irreducible matrix groups in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library for which the return value of <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions which take a permutation group as their only argument and return a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its equivalents, see below. <p> The following functions <var>func_i</var> are handled particularly efficiently. <p> <dl compact> <p> <dt>--<dd><code>Degree</code>, <code>NrMovedPoints</code>, <code>LargestMovedPoint</code> <dt>--<dd><code>Order</code>, <code>Size</code> </dl> <p> Note that there is also a function <code>IteratorPrimitivePermutationGroups</code> (see <a href="CHAP005.htm#SSEC003.3">IteratorPrimitivePermutationGroups</a>) which allows one to run through the list produced by <code>AllPrimitivePcGroups</code> without having to store all of the groups simultaneously. <p> <pre> gap> AllPrimitiveSolvablePermutationGroups (Degree, [1..100], Order, [72]); [ Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,4)(3,7)(6,8), (2,3)(5,6)(8,9), (4,7)(5,8)(6,9) ]), Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,5,3,9)(4,8,7,6), (2,7,3,4)(5,8,9,6), (2,3)(4,7)(5,9)(6,8) ]), Group([ (1,4,7)(2,5,8)(3,6,9), (1,2,3)(4,5,6)(7,8,9), (2,5,6,7,3,9,8,4) ]) ] gap> List (last, IdGroup); [ [ 72, 40 ], [ 72, 41 ], [ 72, 39 ] ] </pre> <p> <a name = "SSEC003.2"></a> <li><code>OnePrimitiveSolvablePermutationGroup(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns one primitive solvable permutation group <var>G</var> corresponding to irreducible matrix groups in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library for which the return value of <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>, or <code>fail</code> if no such group exists. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions which take a permutation group as their only argument and return a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its, equivalents, <code>NrMovedPoints</code> or <code>LargestMovedPoint</code>. <p> For a list of functions which are handled particularly efficiently, see <a href="CHAP005.htm#SSEC003.1">AllPrimitiveSolvablePermutationGroups</a>. <p> <pre> gap> OnePrimitiveSolvablePermutationGroup (Degree, [1..100], Size, [123321]); fail </pre> <p> <a name = "SSEC003.3"></a> <li><code>IteratorPrimitivePermutationGroups(</code><var>func_1</var><code>, </code><var>arg_1</var><code>, </code><var>func_2</var><code>, </code><var>arg_2</var><code>, ...) F</code> <p> This function returns an iterator which runs through the list of all primitive solvable groups <var>G</var> in the <font face="Gill Sans,Helvetica,Arial">IRREDSOL</font> library such that <var><var>func<sub>i</sub></var>(G)</var> lies in <var>arg_i</var>. The arguments <var>func_1</var>, <var>func_2</var>, ..., must be <font face="Gill Sans,Helvetica,Arial">GAP</font> functions taking a pc group as their only argument and returning a value, and <var>arg_1</var>, <var>arg_2</var>, ..., must be lists. If <var>arg_i</var> is not a list, <var>arg_i</var> is replaced by the list <code>[</code><var>arg_i</var><code>]</code>. One of the functions must be <code>Degree</code> or one of its, equivalents, <code>NrMovedPoints</code> or <code>LargestMovedPoint</code>. For a list of functions which are handled particularly efficiently, see <a href="CHAP005.htm#SSEC003.1">AllPrimitiveSolvablePermutationGroups</a>. <p> Using <p> <code>IteratorPrimitiveSolvablePermutationGroups</code>(<var>func_1</var>, <var>arg_1</var>, <var>func_2</var>, <var>arg_2</var>, ...)) <p> is functionally equivalent to <p> <code>Iterator</code>(<code>AllPrimitiveSolvablePermutationGroups</code>(<var>func_1</var>, <var>arg_1</var>, <var>func_2</var>, <var>arg_2</var>, ...)) <p> (see <a href="../../../doc/htm/ref/CHAP028.htm#SECT007">Iterators</a> in the <font face="Gill Sans,Helvetica,Arial">GAP</font> reference manual for details) but does not compute all relevant pc groups at the same time. This may save some memory. <p> <p> <h2><a name="SECT004">5.4 Recognizing primitive solvable groups</a></h2> <p><p> <a name = "SSEC004.1"></a> <li><code>IdPrimitiveSolvableGroup(</code><var>G</var><code>) F</code> <a name = "SSEC004.1"></a> <li><code>IdPrimitiveSolvableGroupNC(</code><var>G</var><code>) F</code> <p> returns the id of the primitive solvable group <var>G</var>. This is the same as the id of <code>IrreducibleMatrixGroupPrimitiveSolvableGroup(</code><var>G</var><code>)</code>, see <a href="CHAP005.htm#SSEC001.3">IrreducibleMatrixGroupPrimitiveSolvableGroup</a> and <a href="CHAP003.htm#SSEC001.3">IdIrreducibleSolvableMatrixGroup</a>. Note that two primitive solvable groups are isomorphic if, and only if, their ids returned by <code>IdPrimitivePcGroup</code> are the same. The NC version does not check whether <var>G</var> is primitive and solvable. <p> <pre> gap> G := PrimitivePcGroupIrreducibleMatrixGroup (\ > IrreducibleSolvableMatrixGroup (6,2,3,3)); <pc group of size 8064 with 10 generators> gap> IdPrimitiveSolvableGroup (G); [ 6, 2, 3, 3 ] </pre> <p> <p> [<a href = "chapters.htm">Up</a>] [<a href ="CHAP004.htm">Previous</a>] [<a href = "theindex.htm">Index</a>] <P> <address>IRREDSOL manual<br>February 2007 </address></body></html>