Sophie

Sophie

distrib > Mandriva > 2010.0 > i586 > media > contrib-release > by-pkgid > 5e1854624d3bc613bdd0dd13d1ef9ac7 > files > 3522

gap-system-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 7: Crossed squares and their morphisms</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="chap6.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap8.html">Next Chapter</a>&nbsp;  </div>

<p><a id="X8016C9727A692E1A" name="X8016C9727A692E1A"></a></p>
<div class="ChapSects"><a href="chap7.html#X8016C9727A692E1A">7 <span class="Heading">Crossed squares and their morphisms</span></a>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap7.html#X820A7D30847BC828">7.1 <span class="Heading">Constructions for crossed squares</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7.html#X7EE4565E79848E6C">7.1-1 XSq</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7.html#X7E8088ED7ABF4CAC">7.1-2 IsXSq</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7.html#X854AD9647FA34EB2">7.1-3 Up2dObject</a></span>
</div>
<div class="ContSect"><span class="nocss">&nbsp;</span><a href="chap7.html#X78A79A7E85128C7B">7.2 <span class="Heading">Morphisms of crossed squares</span></a>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7.html#X7DE8173F80E07AB1">7.2-1 Source</a></span>
<span class="ContSS"><br /><span class="nocss">&nbsp;&nbsp;</span><a href="chap7.html#X7EB013DB87B1F45C">7.2-2 IsXSqMorphism</a></span>
</div>
</div>

<h3>7 <span class="Heading">Crossed squares and their morphisms</span></h3>

<p>Crossed squares were introduced by Guin-Wal\'ery and Loday (see, for example, <a href="chapBib.html#biBbrow:lod">[BL87]</a>) as fundamental crossed squares of commutative squares of spaces, but are also of purely algebraic interest. We denote by [n] the set {1,2,...,n}. We use the n=2 version of the definition of crossed n-cube as given by Ellis and Steiner <a href="chapBib.html#biBell:st">[ES87]</a>.</p>

<p>A <em>crossed square</em> mathcalR consists of the following:</p>


<ul>
<li><p>Groups R_J for each of the four subsets J subseteq [2];</p>

</li>
<li><p>a commutative diagram of group homomorphisms:</p>

<p class="pcenter">
  \ddot{\partial}_1 : R_{[2]} \to R_{\{2\}}, \quad 
  \ddot{\partial}_2 : R_{[2]} \to R_{\{1\}}, \quad 
  \dot{\partial}_1 : R_{\{1\}} \to R_{\emptyset}, \quad 
  \dot{\partial}_2 : R_{\{2\}} \to R_{\emptyset}; 
  </p>

</li>
<li><p>actions of R_emptyset on R_{1}, R_{2} and R_[2] which determine actions of R_{1} on R_{2} and R_[2] via dotpartial_1 and actions of R_{2} on R_{1} and R_[2] via dotpartial_2~;</p>

</li>
<li><p>a function ~ boxtimes : R_{1} x R_{2} -&gt; R_[2]~.</p>

</li>
</ul>
<p>The following axioms must be satisfied for all l in R_[2], m,m_1,m_2 in R_{1}, n,n_1,n_2 in R_{2}, p in R_emptyset~:</p>


<ul>
<li><p>the homomorphisms ddotpartial_1, ddotpartial_2 preserve the action of R_emptyset~;</p>

</li>
<li><p>each of</p>

<p class="pcenter">
 \ddot{\mathcal{R}}_1 = (\ddot{\partial}_1 : R_{[2]} \to R_{\{2\}}),~
 \ddot{\mathcal{R}}_2 = (\ddot{\partial}_2 : R_{[2]} \to R_{\{1\}}), ~
  \dot{\mathcal{R}}_1  = (\dot{\partial}_1 : R_{\{1\}} \to R_{\emptyset}),~
  \dot{\mathcal{R}}_2  = (\dot{\partial}_2 : R_{\{2\}} \to R_{\emptyset}),
</p>

<p>and the diagonal</p>

<p class="pcenter">
\mathcal{R}_{12} = (\partial_{12} := \dot{\partial}_1\ddot{\partial}_2 
                  = \dot{\partial}_2\ddot{\partial}_1 
                  : R_{[2]} \to R_{\emptyset})
</p>

<p>are crossed modules (with actions via R_emptyset);</p>

</li>
<li><p>boxtimes is a \emph{crossed pairing}:</p>


<ul>
<li><p>(m_1m_2 boxtimes n) = (m_1 boxtimes n)^m_2 (m_2 boxtimes n)~,</p>

</li>
<li><p>(m boxtimes n_1n_2) = (m boxtimes n_2) (m boxtimes n_1)^n_2~,</p>

</li>
<li><p>(m boxtimes n)^p = (m^p boxtimes n^p)~;</p>

</li>
</ul>
</li>
<li><p>ddotpartial_1 (m boxtimes n) = (n^-1)^m n \quad \mbox{and} \quad ddotpartial_2 (m boxtimes n) = m^-1 m^n~,</p>

</li>
<li><p>(m boxtimes ddotpartial_1 l) = (l^-1)^m l \quad \mbox{and} \quad (ddotpartial_2 l boxtimes n) = l^-1 l^n~.</p>

</li>
</ul>
<p>Note that the actions of R_{1} on R_{2} and R_{2} on R_{1} via R_emptyset are compatible since</p>

<p class="pcenter">
{m_1}^{(n^m)} \;=\; {m_1}^{\dot{\partial}_2(n^m)} 
              \;=\; {m_1}^{m^{-1}(\dot{\partial}_2 n)m}
\;=\; (({m_1}^{m^{-1}})^n)^m~.
</p>

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

<h4>7.1 <span class="Heading">Constructions for crossed squares</span></h4>

<p>Analogously to the data structure used for crossed modules, crossed squares are implemented as <code class="code">3d-objects</code>. When times allows, cat2-groups will also be implemented, with conversion between the two types of structure. Some standard constructions of crossed squares are listed below. At present, a limited number of constructions are implemented. Morphisms of crossed squares have also been implemented, though there is a lot still to do.</p>

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

<h5>7.1-1 XSq</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; XSq</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; XSqByNormalSubgroups</code>( <var class="Arg">P, N, M, L</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; ActorXSq</code>( <var class="Arg">X0</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; Transpose3dObject</code>( <var class="Arg">S0</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">S0</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Here are some standard examples of crossed squares.</p>


<ul>
<li><p>If M, N are normal subgroups of a group P, and L = M cap N, then the four inclusions, L -&gt; N,~ L -&gt; M,~ M -&gt; P,~ N -&gt; P, together with the actions of P on M, N and L given by conjugation, and the crossed pairing</p>

<p class="pcenter">
\boxtimes \;:\; M \times N \to M\cap N, \quad 
(m,n) \mapsto [m,n] \,=\, m^{-1}n^{-1}mn \,=\,(n^{-1})^mn \,=\, m^{-1}m^n
</p>

<p>is a crossed square. This construction is implemented as <code class="code">XSqByNormalSubgroups(P,N,M,L);</code>.</p>

</li>
<li><p>The actor mathcalA(mathcalX_0) of a crossed module mathcalX_0 has been described in Chapter 5. The crossed pairing is given by</p>

<p class="pcenter">
\boxtimes \;:\;  R \times W \,\to\, S, \quad (r,\chi) \,\mapsto\, \chi r~.
</p>

<p>This is implemented as <code class="code">ActorXSq( X0 );</code>.</p>

</li>
<li><p>The <em>transpose</em> of mathcalR is the crossed square tildemathcalR} obtained by interchanging R_{1} with R_{2}, ddotpartial_1 with ddotpartial_2, and dotpartial_1 with dotpartial_2. The crossed pairing is given by</p>

<p class="pcenter">
\tilde{\boxtimes} \;:\; R_{\{2\}} \times R_{\{1\}} \to R_{[2]}, \quad 
(n,m) \;\mapsto\; n\,\tilde{\boxtimes}\,m := (m \boxtimes n)^{-1}~.
</p>

</li>
</ul>
<p>The following constructions will be implemented in the next release.</p>


<ul>
<li><p>If M, N are ordinary P-modules and A is an arbitrary abelian group on which P acts trivially, then there is a crossed square with sides</p>

<p class="pcenter">
0 : A \to N,\quad 0 : A \to M,\quad
0 : M \to P,\quad 0 : N \to P. 
</p>

</li>
<li><p>For a group L, the automorphism crossed module Act L = (iota : L -&gt; Aut L) splits to form the square with (iota_1 : L -&gt; Inn L) on two sides, and (iota_2 : Inn L -&gt; Aut L) on the other two sides, where iota_1 maps l in L to the inner automorphism beta_l : L -&gt; L, l^' -&gt; l^-1l^'l, and $\iota_2$ is the inclusion of Inn L in Aut L. The actions are standard, and the crossed pairing is</p>

<p class="pcenter">
\boxtimes \;:\; {\rm Inn}\ L \times {\rm Inn}\ L \to L, \quad
(\beta_l, \beta_{l^{\prime}}) \;\mapsto\; [l, l^{\prime}]~.
</p>

</li>
</ul>

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

gap&gt; c := (11,12,13,14,15,16);;
gap&gt; d := (12,16)(13,15);;
gap&gt; cd := c*d;;
gap&gt; d12 := Group( [ c, d ] );;
gap&gt; s3a := Subgroup( d12, [ c^2, d ] );;
gap&gt; s3b := Subgroup( d12, [ c^2, cd ] );;
gap&gt; c3 := Subgroup( d12, [ c^2 ] );;
gap&gt; SetName( d12, "d12");  SetName( s3a, "s3a" );
gap&gt; SetName( s3b, "s3b" );  SetName( c3, "c3" );
gap&gt; XSconj := XSqByNormalSubgroups( d12, s3b, s3a, c3 );
[  c3 -&gt; s3b ]
[  |      |  ]
[ s3a -&gt; d12 ]
gap&gt; Name( XSconj );
"[c3-&gt;s3b,s3a-&gt;d12]"
gap&gt; XStrans := Transpose3dObject( XSconj );
[  c3 -&gt; s3a ]
[  |      |  ]
[ s3b -&gt; d12 ]
gap&gt; X12 := XModByNormalSubgroup( d12, s3a );
[s3a-&gt;d12]
gap&gt; XSact := ActorXSq( X12 );
crossed square with:
      up = Whitehead[s3a-&gt;d12]
    left = [s3a-&gt;d12]
   right = Actor[s3a-&gt;d12]
    down = Norrie[s3a-&gt;d12]

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

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

<h5>7.1-2 IsXSq</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsXSq</code>( <var class="Arg">obj</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; Is3dObject</code>( <var class="Arg">obj</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; IsPerm3dObject</code>( <var class="Arg">obj</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; IsPc3dObject</code>( <var class="Arg">obj</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; IsFp3dObject</code>( <var class="Arg">obj</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; IsPreXSq</code>( <var class="Arg">obj</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>These are the basic properties for 3dobjects, and crossed squares in particular.</p>

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

<h5>7.1-3 Up2dObject</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Up2dObject</code>( <var class="Arg">XS</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; Left2dObject</code>( <var class="Arg">XS</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; Down2dObject</code>( <var class="Arg">XS</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; Right2dObject</code>( <var class="Arg">XS</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; DiagonalAction</code>( <var class="Arg">XS</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; XPair</code>( <var class="Arg">XS</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; ImageElmXPair</code>( <var class="Arg">XS, pair</var> )</td><td class="tdright">( operation )</td></tr></table></div>
<p>In this implementation the attributes used in the construction of a crossed square <code class="code">XS</code> are the four crossed modules (2d-objects) on the sides of the square; the diagonal action of P on L, and the crossed pairing.</p>

<p>The <strong class="pkg">GAP</strong> development team have suggested that crossed pairings should be implemented as a special case of <code class="code">BinaryMappings</code> -- a structure which does not yet exist in <strong class="pkg">GAP</strong>. As a temporary measure, crossed pairings have been implemented using <code class="code">Mapping2ArgumentsByFunction</code>.</p>


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

gap&gt; Up2dObject( XSconj );
[c3-&gt;s3b]
gap&gt; Right2dObject( XSact );
Actor[s3a-&gt;d12]
gap&gt; xpconj := XPair( XSconj );;
gap&gt; ImageElmXPair( xpconj, [ (1,6)(2,5)(3,4), (2,6)(3,5) ] );
(1,3,5)(2,4,6)
gap&gt; diag := DiagonalAction( XSact );
[ (2,3)(6,8)(7,9), (1,2)(4,6)(5,7) ] -&gt;
[ [ (11,13,15)(12,14,16), (12,16)(13,15) ] -&gt;
    [ (11,15,13)(12,16,14), (12,16)(13,15) ],
  [ (11,13,15)(12,14,16), (12,16)(13,15) ] -&gt;
    [ (11,15,13)(12,16,14), (11,13)(14,16) ] ]

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

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

<h4>7.2 <span class="Heading">Morphisms of crossed squares</span></h4>

<p>This section describes an initial implementation of morphisms of (pre-)crossed squares.</p>

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

<h5>7.2-1 Source</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; Source</code>( <var class="Arg">map</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">map</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; Up2dMorphism</code>( <var class="Arg">map</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; Left2dMorphism</code>( <var class="Arg">map</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; Down2dMorphism</code>( <var class="Arg">map</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; Right2dMorphism</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div>
<p>Morphisms of <code class="code">3dObjects</code> are implemented as <code class="code">3dMappings</code>. These have a pair of 3d-objects as source and range, together with four 2d-morphisms mapping between the four pairs of crossed modules on the four sides of the squares. These functions return <code class="code">fail</code> when invalid data is supplied.</p>

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

<h5>7.2-2 IsXSqMorphism</h5>

<div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">&gt; IsXSqMorphism</code>( <var class="Arg">map</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; IsPreXSqMorphism</code>( <var class="Arg">map</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; IsBijective</code>( <var class="Arg">mor</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; IsAutomorphism3dObject</code>( <var class="Arg">mor</var> )</td><td class="tdright">( property )</td></tr></table></div>
<p>A morphism <code class="code">mor</code> between two pre-crossed squares mathcalR_1 and mathcalR_2 consists of four crossed module morphisms <code class="code">Up2dMorphism( mor )</code>, mapping the <code class="code">Up2dObject</code> of mathcalR_1 to that of mathcalR_2, <code class="code">Left2dMorphism( mor )</code>, <code class="code">Down2dMorphism( mor )</code> and <code class="code">Right2dMorphism( mor )</code>. These four morphisms are required to commute with the four boundary maps and to preserve the rest of the structure. The current version of <code class="code">IsXSqMorphism</code> does not perform all the required checks.</p>


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

gap&gt; ad12 := GroupHomomorphismByImages( d12, d12, [c,d], [c,d^c] );;
gap&gt; as3a := GroupHomomorphismByImages( s3a, s3a, [c^2,d], [c^2,d^c] );;
gap&gt; as3b := GroupHomomorphismByImages( s3b, s3b, [c^2,cd], [c^2,cd^c] );;
gap&gt; idc3 := IdentityMapping( c3 );;
gap&gt; upconj := Up2dObject( XSconj );;
gap&gt; leftconj := Left2dObject( XSconj );; 
gap&gt; downconj := Down2dObject( XSconj );; 
gap&gt; rightconj := Right2dObject( XSconj );; 
gap&gt; up := XModMorphismByHoms( upconj, upconj, idc3, as3b );
[[c3-&gt;s3b] =&gt; [c3-&gt;s3b]]
gap&gt; left := XModMorphismByHoms( leftconj, leftconj, idc3, as3a );
[[c3-&gt;s3a] =&gt; [c3-&gt;s3a]]
gap&gt; down := XModMorphismByHoms( downconj, downconj, as3a, ad12 );
[[s3a-&gt;d12] =&gt; [s3a-&gt;d12]]
gap&gt; right := XModMorphismByHoms( rightconj, rightconj, as3b, ad12 );
[[s3b-&gt;d12] =&gt; [s3b-&gt;d12]]
gap&gt; autoconj := XSqMorphism( XSconj, XSconj, up, left, down, right );; 
gap&gt; ord := Order( autoconj );;
gap&gt; Display( autoconj );
Morphism of crossed squares :-
:    Source = [c3-&gt;s3b,s3a-&gt;d12]
:     Range = [c3-&gt;s3b,s3a-&gt;d12]
:     order = 3
:    up-left: [ [ (11,13,15)(12,14,16) ], [ (11,13,15)(12,14,16) ] ]
:   up-right: [ [ (11,13,15)(12,14,16), (11,16)(12,15)(13,14) ],
  [ (11,13,15)(12,14,16), (11,12)(13,16)(14,15) ] ]
:  down-left: [ [ (11,13,15)(12,14,16), (12,16)(13,15) ],
  [ (11,13,15)(12,14,16), (11,13)(14,16) ] ]
: down-right: [ [ (11,12,13,14,15,16), (12,16)(13,15) ],
  [ (11,12,13,14,15,16), (11,13)(14,16) ] ]
gap&gt; KnownPropertiesOfObject( autoconj );
[ "IsTotal", "IsSingleValued", "IsInjective", "IsSurjective", "Is3dMapping",
  "IsPreXSqMorphism", "IsXSqMorphism", "IsEndomorphism3dObject" ]
gap&gt; IsAutomorphism3dObject( autoconj );
true

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


<div class="chlinkprevnextbot">&nbsp;<a href="chap0.html">Top of Book</a>&nbsp;  &nbsp;<a href="chap6.html">Previous Chapter</a>&nbsp;  &nbsp;<a href="chap8.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>