<?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"> <a href="chap0.html">Top of Book</a> <a href="chap1.html">Previous Chapter</a> <a href="chap3.html">Next Chapter</a> </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"> </span><a href="chap2.html#X7BAD9A7F7AFEEC89">2.1 <span class="Heading">Constructions for crossed modules</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7C8175AE7F76B586">2.1-1 XMod</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7DE8173F80E07AB1">2.1-2 Source</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X858ADA3B7A684421">2.1-3 Size</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7884284383284A87">2.1-4 SubXMod</a></span> </div> <div class="ContSect"><span class="nocss"> </span><a href="chap2.html#X7D435B6279032D4D">2.2 <span class="Heading">Pre-crossed modules</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X8487BE427858C5C9">2.2-1 PreXModByBoundaryAndAction</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X8527F4C07A8F359E">2.2-2 PeifferSubgroup</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7E564129785A2DF2">2.2-3 IsPermXMod</a></span> </div> <div class="ContSect"><span class="nocss"> </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"> </span><a href="chap2.html#X7DE8173F80E07AB1">2.3-1 Source</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7F4221DF83D1B6D8">2.3-2 Cat1</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap2.html#X7EB380BA7AC52D53">2.3-3 Cat1OfXMod</a></span> </div> <div class="ContSect"><span class="nocss"> </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"> </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 -> 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 -> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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 -> 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 -> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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> c5 := Group( (5,6,7,8,9) );; gap> SetName( c5, "c5" ); gap> X1 := XModByAutomorphismGroup( c5 ); [c5 -> PAut(c5)] gap> Display( X1 ); Crossed module [c5 -> 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) --> { source gens --> [ (5,7,9,6,8) ] } This automorphism generates the group of automorphisms. gap> Size( X1 ); [ 5, 4 ] gap> Print( RepresentationsOfObject(X1), "\n" ); [ "IsComponentObjectRep", "IsAttributeStoringRep", "IsPreXModObj" ] gap> Print( KnownPropertiesOfObject(X1), "\n" ); [ "Is2dObject", "IsPerm2dObject", "IsPreXMod", "IsXMod", "IsTrivialAction2dObject", "IsAutomorphismGroup2dObject" ] gap> 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">> 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">> 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">> 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 -> M) is <em>normal</em> in mathcalX = (partial : S -> 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">> 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">> 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> c := (11,12,13,14,15,16,17,18);; d := (12,18)(13,17)(14,16);; gap> d16 := Group( c, d );; gap> sk4 := Subgroup( d16, [ c^4, d ] );; gap> SetName( d16, "d16" ); SetName( sk4, "sk4" ); gap> bdy16 := GroupHomomorphismByImages( d16, sk4, [c,d], [c^4,d] );; gap> h1 := GroupHomomorphismByImages( d16, d16, [c,d], [c^5,d] );; gap> h2 := GroupHomomorphismByImages( d16, d16, [c,d], [c,c^4*d] );; gap> aut16 := Group( [ h1, h2 ] );; gap> act16 := GroupHomomorphismByImages( sk4, aut16, [c^4,d], [h1,h2] );; gap> P16 := PreXModByBoundaryAndAction( bdy16 ); [d16->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">> 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">> 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 -> {1_R}) is a normal sub-pre-crossed module of mathcalX and mathcalX/mathcalP = (partial : S/P -> 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> P := PeifferSubgroup( P16 ); Group( [ (11,15)(12,16)(13,17)(14,18), (11,17,15,13)(12,18,16,14) ] ) gap> X16 := XModByPeifferQuotient( P16 ); [d16/P->sk4] gap> Display( X16 ); Crossed module [d16/P->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> iso16 := IsomorphismPermGroup( Source( X16 ) );; gap> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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 -> G having a common image R and satisfying certain axioms. We find it convenient to define a cat1-group mathcalC = (e;t,h : G -> R ) as having source group G, range group R, and three homomorphisms: two surjections t,h : G -> R and an embedding e : R -> 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">> 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">> 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">> 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">> 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">> 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">> 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> s3 := SymmetricGroup(IsPcGroup,3);; gap> gens3 := GeneratorsOfGroup(s3); [ f1, f2 ] gap> pc4 := CyclicGroup(4);; gap> SetName(s3,"s3"); SetName( pc4, "pc4" ); gap> s3c4 := DirectProduct( s3, pc4 );; gap> SetName( s3c4, "s3c4" ); gap> gens3c4 := GeneratorsOfGroup( s3c4 ); [ f1, f2, f3, f4 ] gap> a := gens3[1];; b := gens3[2];; one := One(s3);; gap> t2 := GroupHomomorphismByImages( s3c4, s3, gens3c4, [a,b,one,one] ); [ f1, f2, f3, f4 ] -> [ f1, f2, &lt;identity&gt; of ..., &lt;identity&gt; of ... ] gap> e2 := Embedding( s3c4, 1 ); [ f1, f2 ] -> [ f1, f2 ] gap> C2 := Cat1( t2, t2, e2 ); [s3c4=>s3] gap> Display( C2 ); Cat1-group [s3c4=>s3] :- : source group has generators: [ f1, f2, f3, f4 ] : range group has generators: [ f1, f2 ] : tail homomorphism maps source generators to: [ f1, f2, &lt;identity&gt; of ..., &lt;identity&gt; of ... ] : head homomorphism maps source generators to: [ f1, f2, &lt;identity&gt; of ..., &lt;identity&gt; of ... ] : range embedding maps range generators to: [ f1, f2 ] : kernel has generators: [ f3, f4 ] : boundary homomorphism maps generators of kernel to: [ &lt;identity&gt; of ..., &lt;identity&gt; of ... ] : kernel embedding maps generators of kernel to: [ f3, f4 ] gap> IsPcCat1( C2 ); true gap> 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">> 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">> 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">> 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">> 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 -> 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 -> 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> SetName( Kernel(t2), "ker(t2)" );; gap> X2 := XModOfCat1( C2 ); [Group( [ f3, f4 ] )->s3] gap> Display( X2 ); Crossed module [ker(t2)->s3] :- : Source group has generators: [ f3, f4 ] : Range group s3 has generators: [ f1, f2 ] : Boundary homomorphism maps source generators to: [ &lt;identity&gt; of ..., &lt;identity&gt; of ... ] The automorphism group is trivial : associated cat1-group is [s3c4=>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">> 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 <> 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> L18 := Cat1Select( 18 ); #I Loading cat1-group data into CAT1_LIST Usage: Cat1( size, gpnum, num ) [ "d18", "c18", "s3c3", "c3^2|Xc2", "c6c3" ] gap> Cat1Select( 18, 4 ); There are 4 cat1-structures for the group c3^2|Xc2. [ [range gens], source & 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> C4 := Cat1( 18, 4, 4 ); [c3^2|Xc2=>s3] gap> Display( C4 ); Cat1-group [c3^2|Xc2=>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> XC4 := XModOfCat1( C4 ); [Group( [ ( 1, 2, 3)( 4, 6, 5) ] )->s3] </pre></td></tr></table> <div class="chlinkprevnextbot"> <a href="chap0.html">Top of Book</a> <a href="chap1.html">Previous Chapter</a> <a href="chap3.html">Next Chapter</a> </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>