This is a method to construct up to isomorphism the groups of order
<var>p<sup>n</sup> cdotq</var> for different primes <var>p</var> and <var>q</var> which have a normal
Sylow subgroup. We first describe the main function for this method
and then functions for a slightly more low level access to the
algorithms.
<p>
Note that all functions described in this chapter rely on an
efficient method for <code>AutomorphismGroup</code> for <var>p</var>-groups. Such
a method is provided in the package AutPGrp.
Thus it is useful to install and load this share package before
using the functions described in this chapter.
<p>
<p>
<h2><a name="SECT001">5.1 The Main Function</a></h2>
<p><p>
<a name = "SSEC001.1"></a>
<li><code>CyclicSplitExtensionMethod( </code><var>p</var><code>, </code><var>n</var><code>, </code><var>q</var><code> ) F</code>
<li><code>CyclicSplitExtensionMethod( </code><var>p</var><code>, </code><var>n</var><code>, </code><var>q</var><code>, </code><var>uncoded</var><code> ) F</code>
<p>
Clearly, each of the computed groups is a split extension of a group
of order <var>p<sup>n</sup></var> and the cyclic group of order <var>q</var>. The output is a
record with three entries <var>up</var>, <var>down</var> and <var>both</var>. Each of these
contains a list of groups, <var>both</var> the nilpotent groups, <var>up</var> the
remaining groups with a normal Sylow <var>p</var>-subgroup and <var>down</var> the
remaining groups with normal Sylow <var>q</var>-subgroup.
<p>
As in Chapter <a href="CHAP004.htm">The Frattini Extension Method</a> all groups are
described as codes. Setting <var>uncoded</var> to true, the function
will return pc groups instead.
<p>
If one wants to construct the groups of order <var>p<sup>n</sup> cdotq</var>
for fixed <var>p</var> and several primes <var>q</var>, it is more efficient to
do this in one go. Thus it is possible to hand a list of primes
for the input <var>q</var>.
<p>
<pre>
gap> CyclicSplitExtensionMethod( 2,2,7, true );
rec( up := [ ],
down := [ <pc group of size 28 with 3 generators>,
<pc group of size 28 with 3 generators> ],
both := [ <pc group of size 28 with 3 generators>,
<pc group of size 28 with 3 generators> ] )
gap> CyclicSplitExtensionMethod( 2,2,[3,5], true );
rec( up := [ <pc group of size 12 with 3 generators> ],
down := [ <pc group of size 12 with 3 generators>,
<pc group of size 20 with 3 generators>,
<pc group of size 20 with 3 generators>,
<pc group of size 12 with 3 generators>,
<pc group of size 20 with 3 generators> ],
both := [ <pc group of size 12 with 3 generators>,
<pc group of size 20 with 3 generators>,
<pc group of size 12 with 3 generators>,
<pc group of size 20 with 3 generators> ] )
</pre>
<p>
Note that the function <code>CyclicSplitExtensionMethod</code> requires that
the groups of order <var>p<sup>n</sup></var> are given within the SmallGroups Library.
<p>
<p>
<h2><a name="SECT002">5.2 The Underlying Functions</a></h2>
<p><p>
It is possible to construct the cyclic extensions of a single group
of order <var>p<sup>n</sup></var> only. The output is as above.
<p>
<a name = "SSEC002.1"></a>
<li><code>CyclicSplitExtensions( </code><var>G</var><code>, </code><var>q</var><code> ) F</code>
<li><code>CyclicSplitExtensions( </code><var>G</var><code>, </code><var>q</var><code>, </code><var>uncoded</var><code> ) F</code>
<p>
Moreover, the computation of the record entry <var>up</var> and the record
entry <var>down</var> can be separated by using the following functions.
<p>
<a name = "SSEC002.2"></a>
<li><code>CyclicSplitExtensionsUp( </code><var>G</var><code>, </code><var>q</var><code> ) F</code>
<li><code>CyclicSplitExtensionsUp( </code><var>G</var><code>, </code><var>q</var><code>, </code><var>uncoded</var><code> ) F</code>
<p>
<a name = "SSEC002.3"></a>
<li><code>CyclicSplitExtensionsDown( </code><var>G</var><code>, </code><var>q</var><code> ) F</code>
<li><code>CyclicSplitExtensionsDown( </code><var>G</var><code>, </code><var>q</var><code>, </code><var>uncoded</var><code> ) F</code>
<p>
The input for these functions is the same as above. The first
function returns a list of groups with one normal subgroup of order
<var>p<sup>n</sup></var> and the second a list of groups with one normal subgroup of order
<var>q</var>.
<p>
<pre>
gap> G := SmallGroup( 16, 10 );;
gap> CyclicSplitExtensionsUp( G, 3, true );
[ <pc group with 5 generators> ]