Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 91213ddcfbe7f54821d42c2d9e091326 > files > 3097

gap-system-packages-4.4.12-5mdv2010.0.i586.rpm

<?xml version="1.0" encoding="UTF-8"?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
         "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en">
<head>
<title>GAP (XMod) - Chapter 2: 2d-objects</title>
<meta http-equiv="content-type" content="text/html; charset=UTF-8" />
<meta name="generator" content="GAPDoc2HTML" />
<link rel="stylesheet" type="text/css" href="manual.css" />
</head>
<body>


<div class="chlinktop"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<div class="chlinkprevnexttop">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap1.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap3.html">Next Chapter</a>&nbsp;  </div>

<p><a id="X8359CCB57F2C0807" name="X8359CCB57F2C0807"></a></p>
<div class="ChapSects"><a href="chap2.html#X8359CCB57F2C0807">2 <span class="Heading">2d-objects</span></a>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap2.html#X7BAD9A7F7AFEEC89">2.1 <span class="Heading">Constructions for crossed modules</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7C8175AE7F76B586">2.1-1 XMod</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7DE8173F80E07AB1">2.1-2 Source</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X858ADA3B7A684421">2.1-3 Size</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7884284383284A87">2.1-4 SubXMod</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap2.html#X7D435B6279032D4D">2.2 <span class="Heading">Pre-crossed modules</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X8487BE427858C5C9">2.2-1 PreXModByBoundaryAndAction</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X8527F4C07A8F359E">2.2-2 PeifferSubgroup</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7E564129785A2DF2">2.2-3 IsPermXMod</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap2.html#X7F868C2181018D0C">2.3 <span class="Heading">Cat1-groups and pre-cat1-groups</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7DE8173F80E07AB1">2.3-1 Source</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7F4221DF83D1B6D8">2.3-2 Cat1</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7EB380BA7AC52D53">2.3-3 Cat1OfXMod</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap2.html#X7B38B960782937EB">2.4 <span class="Heading">Selection of a small cat1-group</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap2.html#X7B8E67D880E380C8">2.4-1 Cat1Select</a></span>
</div>
</div>

<h3>2 <span class="Heading">2d-objects</span></h3>

<p><a id="X7BAD9A7F7AFEEC89" name="X7BAD9A7F7AFEEC89"></a></p>

<h4>2.1 <span class="Heading">Constructions for crossed modules</span></h4>

<p>A crossed module mathcalX = (partial : S -&gt; R ) consists of a group homomorphism partial, called the <em>boundary</em> of mathcalX, with <em>source</em> S and <em>range</em> R. The Group R acts on itself by conjugation, and on S by an action alpha : R -&gt; Aut(S) such that, for all s,s_1,s_2 in S and r in R,</p>

<p class="pcenter">
{\bf XMod\ 1} ~:~  \partial(s^r) 
   = r^{-1} (\partial s) r
   = (\partial s)^r,
\qquad
{\bf XMod\ 2} ~:~  s_1^{\partial s_2} 
   = s_2^{-1}s_1 s_2
   = {s_1}^{s_2}.
</p>

<p>The kernel of partial is abelian.</p>

<p>There are a variety of constructors for crossed modules:</p>

<p><a id="X7C8175AE7F76B586" name="X7C8175AE7F76B586"></a></p>

<h5>2.1-1 XMod</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XMod</code>( <var class="Arg">args</var> )</td><td class="tdright">( function )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByBoundaryAndAction</code>( <var class="Arg">bdy, act</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByTrivialAction</code>( <var class="Arg">bdy</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByNormalSubgroup</code>( <var class="Arg">G, N</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByCentralExtension</code>( <var class="Arg">bdy</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByAutomorphismGroup</code>( <var class="Arg">grp</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByInnerAutomorphismGroup</code>( <var class="Arg">grp</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByGroupOfAutomorphisms</code>( <var class="Arg">G, A</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByAbelianModule</code>( <var class="Arg">abgrp</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; DirectProduct</code>( <var class="Arg">X1, X2</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>Here are the standard constructions which these implement:</p>


<ul>
<li><p>A <em>conjugation crossed module</em> is an inclusion of a normal subgroup S unlhd R, where R acts on S by conjugation.</p>

</li>
<li><p>A <em>central extension crossed module</em> has as boundary a surjection partial : S -&gt; R with central kernel, where r in R acts on S by conjugation with partial^-1r.</p>

</li>
<li><p>An <em>automorphism crossed module</em> has as range a subgroup R of the automorphism group Aut(S) of S which contains the inner automorphism group of S. The boundary maps s in S to the inner automorphism of S by s.</p>

</li>
<li><p>A <em>trivial action crossed module</em> partial : S -&gt; R has s^r = s for all s in S, r in R, the source is abelian and the image lies in the centre of the range.</p>

</li>
<li><p>A <em>crossed abelian module</em> has an abelian module as source and the zero map as boundary.</p>

</li>
<li><p>The direct product mathcalX_1 x mathcalX_2 of two crossed modules has source S_1 x S_2, range R_1 x R_2 and boundary partial_1 x partial_2, with R_1, R_2 acting trivially on S_2, S_1 respectively.</p>

</li>
</ul>
<p><a id="X7DE8173F80E07AB1" name="X7DE8173F80E07AB1"></a></p>

<h5>2.1-2 Source</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Source</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Range</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Boundary</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; AutoGroup</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModAction</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>In this implementation the attributes used in the construction of a crossed module <code class="code">X0</code> are as follows.</p>


<ul>
<li><p><code class="code">Source(X0)</code> and <code class="code">Range(X0)</code> are the source S and range R of partial, the boundary <code class="code">Boundary(X0)</code>;</p>

</li>
<li><p><code class="code">AutoGroup(X0)</code> is a group of automorphisms of S;</p>

</li>
<li><p><code class="code">XModAction(X0)</code> is a homomorphism from R to <code class="code">AutoGroup(X0)</code>.</p>

</li>
</ul>
<p><a id="X858ADA3B7A684421" name="X858ADA3B7A684421"></a></p>

<h5>2.1-3 Size</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Size</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Name</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>More familiar attributes are <code class="code">Size</code> and <code class="code">Name</code>, the latter formed by concatenating the names of the source and range (if these exist). An <code class="code">Enumerator</code> function has not been implemented. The <code class="code">Display</code> function is used to print details of <code class="code">2d-objects</code>.</p>

<p>Here is a simple example of an automorphism crossed module, using a cyclic group of size five.</p>


<table class="example">
<tr><td><pre>

gap&gt; c5 := Group( (5,6,7,8,9) );;
gap&gt; SetName( c5, "c5" );
gap&gt; X1 := XModByAutomorphismGroup( c5 );
[c5 -&gt; PAut(c5)] 
gap&gt; Display( X1 );
Crossed module [c5 -&gt; PAut(c5)] :-
: Source group c5 has generators:
  [ (5,6,7,8,9) ]
: Range group PAut(c5) has generators:
  [ (1,2,4,3) ]
: Boundary homomorphism maps source generators to:
  [ () ]
: Action homomorphism maps range generators to automorphisms:
  (1,2,4,3) --&gt; { source gens --&gt; [ (5,7,9,6,8) ] }
  This automorphism generates the group of automorphisms.
gap&gt; Size( X1 );
[ 5, 4 ]
gap&gt; Print( RepresentationsOfObject(X1), "\n" );
[ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModObj" ]
gap&gt; Print( KnownPropertiesOfObject(X1), "\n" );
[ "Is2dObject", "IsPerm2dObject", "IsPreXMod", "IsXMod",
  "IsTrivialAction2dObject", "IsAutomorphismGroup2dObject" ]
gap&gt; Print( KnownAttributesOfObject(X1), "\n" );
[ "Name", "Size", "Range", "Source", "Boundary", "AutoGroup", "XModAction" ]

</pre></td></tr></table>

<p><a id="X7884284383284A87" name="X7884284383284A87"></a></p>

<h5>2.1-4 SubXMod</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; SubXMod</code>( <var class="Arg">X0, src, rng</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IdentitySubXMod</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; NormalSubXMods</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>With the standard crossed module constructors listed above as building blocks, sub-crossed modules, normal sub-crossed modules mathcalN lhd mathcalX, and also quotients mathcalX/mathcalN may be constructed. A sub-crossed module mathcalS = (delta : N -&gt; M) is <em>normal</em> in mathcalX = (partial : S -&gt; R) if</p>


<ul>
<li><p>N,M are normal subgroups of S,R respectively,</p>

</li>
<li><p>delta is the restriction of partial,</p>

</li>
<li><p>n^r in N for all n in N,~r in R,</p>

</li>
<li><p>s^-1s^m in N for all m in M,~s in S.</p>

</li>
</ul>
<p>These conditions ensure that M ltimes N is normal in the semidirect product R ltimes S.</p>

<p><a id="X7D435B6279032D4D" name="X7D435B6279032D4D"></a></p>

<h4>2.2 <span class="Heading">Pre-crossed modules</span></h4>

<p><a id="X8487BE427858C5C9" name="X8487BE427858C5C9"></a></p>

<h5>2.2-1 PreXModByBoundaryAndAction</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreXModByBoundaryAndAction</code>( <var class="Arg">bdy, act</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; SubPreXMod</code>( <var class="Arg">X0, src, rng</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>When axiom {\bf XMod\ 2} is <em>not</em> satisfied, the corresponding structure is known as a <em>pre-crossed module</em>.</p>


<table class="example">
<tr><td><pre>

gap&gt; c := (11,12,13,14,15,16,17,18);;  d := (12,18)(13,17)(14,16);;
gap&gt; d16 := Group( c, d );;
gap&gt; sk4 := Subgroup( d16, [ c^4, d ] );;
gap&gt; SetName( d16, "d16" );  SetName( sk4, "sk4" );
gap&gt; bdy16 := GroupHomomorphismByImages( d16, sk4, [c,d], [c^4,d] );;
gap&gt; h1 := GroupHomomorphismByImages( d16, d16, [c,d], [c^5,d] );;
gap&gt; h2 := GroupHomomorphismByImages( d16, d16, [c,d], [c,c^4*d] );;
gap&gt; aut16 := Group( [ h1, h2 ] );;
gap&gt; act16 := GroupHomomorphismByImages( sk4, aut16, [c^4,d], [h1,h2] );;
gap&gt; P16 := PreXModByBoundaryAndAction( bdy16 );
[d16-&gt;sk4]

</pre></td></tr></table>

<p><a id="X8527F4C07A8F359E" name="X8527F4C07A8F359E"></a></p>

<h5>2.2-2 PeifferSubgroup</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PeifferSubgroup</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModByPeifferQuotient</code>( <var class="Arg">prexmod</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The <em>Peiffer subgroup</em> of a pre-crossed module P of S is the subgroup of ker(partial) generated by <em>Peiffer commutators</em></p>

<p class="pcenter">
\langle s_1,s_2 \rangle \quad=\quad 
(s_1^{-1})^{\partial s_2}~s_2^{-1}~s_1~s_2~.
</p>

<p>Then mathcalP = (0 : P -&gt; {1_R}) is a normal sub-pre-crossed module of mathcalX and mathcalX/mathcalP = (partial : S/P -&gt; R) is a crossed module.</p>

<p>In the following example the Peiffer subgroup is cyclic of size 4.</p>


<table class="example">
<tr><td><pre>

gap&gt; P := PeifferSubgroup( P16 );
Group( [ (11,15)(12,16)(13,17)(14,18), (11,17,15,13)(12,18,16,14) ] )
gap&gt; X16 := XModByPeifferQuotient( P16 );
[d16/P-&gt;sk4]
gap&gt; Display( X16 );
Crossed module [d16/P-&gt;sk4] :-
: Source group has generators:
  [ f1, f2 ]
: Range group has generators:
  [ (11,15)(12,16)(13,17)(14,18), (12,18)(13,17)(14,16) ]
: Boundary homomorphism maps source generators to:
  [ (12,18)(13,17)(14,16), (11,15)(12,16)(13,17)(14,18) ]
  The automorphism group is trivial
gap&gt; iso16 := IsomorphismPermGroup( Source( X16 ) );;
gap&gt; S16 := Image( iso16 );
Group([ (1,3)(2,4), (1,2)(3,4) ])   

</pre></td></tr></table>

<p><a id="X7E564129785A2DF2" name="X7E564129785A2DF2"></a></p>

<h5>2.2-3 IsPermXMod</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsPermXMod</code>( <var class="Arg">X0</var> )</td><td class="tdright">( property )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsPcPreXMod</code>( <var class="Arg">X0</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>When both source and range groups are of the same type, corresponding properties are assigned to the crossed module.</p>

<p><a id="X7F868C2181018D0C" name="X7F868C2181018D0C"></a></p>

<h4>2.3 <span class="Heading">Cat1-groups and pre-cat1-groups</span></h4>

<p><a id="X7DE8173F80E07AB1" name="X7DE8173F80E07AB1"></a></p>

<h5>2.3-1 Source</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Source</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Range</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; TailMap</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; HeadMap</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; RangeEmbedding</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; KernelEmbedding</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Boundary</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Name</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Size</code>( <var class="Arg">C</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>These are the attributes of a cat1-group mathcalC in this implementation.</p>

<p>In <a href="chapBib.html#biBL1">[Lod82]</a>, Loday reformulated the notion of a crossed module as a cat1-group, namely a group G with a pair of homomorphisms t,h : G -&gt; G having a common image R and satisfying certain axioms. We find it convenient to define a cat1-group mathcalC = (e;t,h : G -&gt; R ) as having source group G, range group R, and three homomorphisms: two surjections t,h : G -&gt; R and an embedding e : R -&gt; G satisfying:</p>

<p class="pcenter">
{\bf Cat\ 1} ~:~ te = he = {\rm id}_R,
\qquad
{\bf Cat\ 2} ~:~ [\ker t, \ker h] = \{ 1_G \}.
</p>

<p>It follows that teh = h, het = t, tet = t, heh = h.</p>

<p>The maps t,h are often referred to as the <em>source</em> and <em>target</em>, but we choose to call them the <em>tail</em> and <em>head</em> of mathcalC, because <em>source</em> is the <strong class="pkg">GAP</strong> term for the domain of a function. The <code class="code">RangeEmbedding</code> is the embedding of <code class="code">R</code> in <code class="code">G</code>, the <code class="code">KernelEmbedding</code> is the inclusion of the kernel of <code class="code">t</code> in <code class="code">G</code>, and the <code class="code">Boundary</code> is the restriction of <code class="code">h</code> to the kernel of <code class="code">t</code>.</p>

<p><a id="X7F4221DF83D1B6D8" name="X7F4221DF83D1B6D8"></a></p>

<h5>2.3-2 Cat1</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Cat1</code>( <var class="Arg">args</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreCat1ByTailHeadEmbedding</code>( <var class="Arg">t, h, e</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreCat1ByEndomorphisms</code>( <var class="Arg">t, h</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreCat1ByNormalSubgroup</code>( <var class="Arg">G, N</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Cat1ByPeifferQuotient</code>( <var class="Arg">P</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Reverse</code>( <var class="Arg">C0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>These are some of the constructors for pre-cat1-groups and cat1-groups.</p>

<p>The following listing shows an example of a cat1-group of pc-groups:</p>


<table class="example">
<tr><td><pre>

gap&gt; s3 := SymmetricGroup(IsPcGroup,3);;   
gap&gt; gens3 := GeneratorsOfGroup(s3);
[ f1, f2 ]
gap&gt; pc4 := CyclicGroup(4);; 
gap&gt; SetName(s3,"s3");  SetName( pc4, "pc4" );
gap&gt; s3c4 := DirectProduct( s3, pc4 );; 
gap&gt; SetName( s3c4, "s3c4" );  
gap&gt; gens3c4 := GeneratorsOfGroup( s3c4 );
[ f1, f2, f3, f4 ]
gap&gt; a := gens3[1];;  b := gens3[2];;  one := One(s3);;
gap&gt; t2 := GroupHomomorphismByImages( s3c4, s3, gens3c4, [a,b,one,one] );
[ f1, f2, f3, f4 ] -&gt; [ f1, f2, &amp;lt;identity&amp;gt; of ..., &amp;lt;identity&amp;gt; of ... ]
gap&gt; e2 := Embedding( s3c4, 1 );
[ f1, f2 ] -&gt; [ f1, f2 ]
gap&gt; C2 := Cat1( t2, t2, e2 );
[s3c4=&gt;s3]
gap&gt; Display( C2 );
Cat1-group [s3c4=&gt;s3] :-
: source group has generators:
  [ f1, f2, f3, f4 ]
:  range group has generators:
  [ f1, f2 ]
: tail homomorphism maps source generators to:
  [ f1, f2, &amp;lt;identity&amp;gt; of ..., &amp;lt;identity&amp;gt; of ... ]
: head homomorphism maps source generators to:
  [ f1, f2, &amp;lt;identity&amp;gt; of ..., &amp;lt;identity&amp;gt; of ... ]
: range embedding maps range generators to:
  [ f1, f2 ]
: kernel has generators:
  [ f3, f4 ]
: boundary homomorphism maps generators of kernel to:
  [ &amp;lt;identity&amp;gt; of ..., &amp;lt;identity&amp;gt; of ... ]
: kernel embedding maps generators of kernel to:
  [ f3, f4 ]
gap&gt; IsPcCat1( C2 );
true
gap&gt; Size( C2 );
[ 24, 6 ]

</pre></td></tr></table>

<p><a id="X7EB380BA7AC52D53" name="X7EB380BA7AC52D53"></a></p>

<h5>2.3-3 Cat1OfXMod</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Cat1OfXMod</code>( <var class="Arg">X0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XModOfCat1</code>( <var class="Arg">C0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreCat1OfPreXMod</code>( <var class="Arg">P0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; PreXModOfPreCat1</code>( <var class="Arg">P0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>The category of crossed modules is equivalent to the category of cat1-groups, and the functors between these two categories may be described as follows. Starting with the crossed module mathcalX = (partial : S -&gt; R) the group G is defined as the semidirect product G = R ltimes S using the action from mathcalX, with multiplication rule</p>

<p class="pcenter">
(r_1,s_1)(r_2,s_2) ~=~ (r_1r_2,{s_1}^{r_2}s_2).
</p>

<p>The structural morphisms are given by</p>

<p class="pcenter">
t(r,s) = r, \quad h(r,s) = r (\partial s), \quad er = (r,1).
</p>

<p>On the other hand, starting with a cat1-group mathcalC = (e;t,h : G -&gt; R), we define S = ker t, the range R remains unchanged, and partial = h|_S. The action of R on S is conjugation in G via the embedding of R in G.</p>


<table class="example">
<tr><td><pre>

gap&gt; SetName( Kernel(t2), "ker(t2)" );;
gap&gt; X2 := XModOfCat1( C2 );
[Group( [ f3, f4 ] )-&gt;s3]
gap&gt; Display( X2 );
Crossed module [ker(t2)-&gt;s3] :-
: Source group has generators:
  [ f3, f4 ]
: Range group s3 has generators:
  [ f1, f2 ]
: Boundary homomorphism maps source generators to:
  [ &amp;lt;identity&amp;gt; of ..., &amp;lt;identity&amp;gt; of ... ]
  The automorphism group is trivial
: associated cat1-group is [s3c4=&gt;s3]

</pre></td></tr></table>

<p><a id="X7B38B960782937EB" name="X7B38B960782937EB"></a></p>

<h4>2.4 <span class="Heading">Selection of a small cat1-group</span></h4>

<p>The <code class="code">Cat1</code> function may also be used to select a cat1-group from a data file. All cat1-structures on groups of size up to 47 are stored in a list in file <code class="file">cat1data.g</code>. Global variables <code class="code">CAT1_LIST_MAX_SIZE := 47</code> and <code class="code">CAT1_LIST_CLASS_SIZES</code> are also stored. The <strong class="pkg">XMod</strong>~2 version of the database orders the groups of size up to 47 according to the <strong class="pkg">GAP</strong>~4 numbering of small groups. The data is read into the list <code class="code">CAT1_LIST</code> only when this function is called.</p>

<p><a id="X7B8E67D880E380C8" name="X7B8E67D880E380C8"></a></p>

<h5>2.4-1 Cat1Select</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Cat1Select</code>( <var class="Arg">size, gpnum, num</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>This function may be used in three ways. <code class="code">Cat1Select( size )</code> returns the names of the groups with this size. <code class="code">Cat1Select( size, gpnum )</code> prints a list of cat1-structures for this chosen group. <code class="code">Cat1Select( size, gpnum, num )</code> (or just <code class="code">Cat1( size, gpnum, num )</code>) returns the chosen cat1-group.</p>

<p>The example below is the first case in which t &lt;&gt; h and the associated conjugation crossed module is given by the normal subgroup <code class="code">c3</code> of <code class="code">s3</code>.</p>


<table class="example">
<tr><td><pre>

gap&gt; L18 := Cat1Select( 18 );
#I  Loading cat1-group data into CAT1_LIST
Usage:  Cat1( size, gpnum, num )
[ "d18", "c18", "s3c3", "c3^2|Xc2", "c6c3" ]
gap&gt; Cat1Select( 18, 4 );
There are 4 cat1-structures for the group c3^2|Xc2.
[ [range gens], source &amp; range names, [tail genimages], [head genimages] ] :-
[ [ (1,2,3), (4,5,6), (2,3)(5,6) ],  tail = head = identity mapping ]
[ [ (2,3)(5,6) ], "c3^2", "c2", [ (), (), (2,3)(5,6) ],
  [ (), (), (2,3)(5,6) ] ]
[ [ (4,5,6), (2,3)(5,6) ], "c3", "s3", [ (), (4,5,6), (2,3)(5,6) ],
  [ (), (4,5,6), (2,3)(5,6) ] ]
[ [ (4,5,6), (2,3)(5,6) ], "c3", "s3", [ (4,5,6), (4,5,6), (2,3)(5,6) ],
  [ (), (4,5,6), (2,3)(5,6) ] ]
Usage:  Cat1( size, gpnum, num );
Group has generators [ (1,2,3), (4,5,6), (2,3)(5,6) ]
4
gap&gt; C4 := Cat1( 18, 4, 4 );
[c3^2|Xc2=&gt;s3]
gap&gt; Display( C4 );
Cat1-group [c3^2|Xc2=&gt;s3] :-
: source group has generators:
  [ (1,2,3), (4,5,6), (2,3)(5,6) ]
:  range group has generators:
  [ (4,5,6), (4,5,6), (2,3)(5,6) ]
: tail homomorphism maps source generators to:
  [ (4,5,6), (4,5,6), (2,3)(5,6) ]
: head homomorphism maps source generators to:
  [ (), (4,5,6), (2,3)(5,6) ]
: range embedding maps range generators to:
  [ (4,5,6), (4,5,6), (2,3)(5,6) ]
: kernel has generators:
  [ ( 1, 2, 3)( 4, 6, 5) ]
: boundary homomorphism maps generators of kernel to:
  [ (4,6,5) ]
: kernel embedding maps generators of kernel to:
  [ (1,2,3)(4,6,5) ]
gap&gt; XC4 := XModOfCat1( C4 );
[Group( [ ( 1, 2, 3)( 4, 6, 5) ] )-&gt;s3]

</pre></td></tr></table>


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap1.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap3.html">Next Chapter</a>&nbsp;  </div>


<div class="chlinkbot"><span class="chlink1">Goto Chapter: </span><a href="chap0.html">Top</a>  <a href="chap1.html">1</a>  <a href="chap2.html">2</a>  <a href="chap3.html">3</a>  <a href="chap4.html">4</a>  <a href="chap5.html">5</a>  <a href="chap6.html">6</a>  <a href="chap7.html">7</a>  <a href="chap8.html">8</a>  <a href="chap9.html">9</a>  <a href="chapBib.html">Bib</a>  <a href="chapInd.html">Ind</a>  </div>

<hr />
<p class="foot">generated by <a href="http://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc">GAPDoc2HTML</a></p>
</body>
</html>