<?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"> <a href="chap0.html">Top of Book</a> <a href="chap6.html">Previous Chapter</a> <a href="chap8.html">Next Chapter</a> </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"> </span><a href="chap7.html#X820A7D30847BC828">7.1 <span class="Heading">Constructions for crossed squares</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap7.html#X7EE4565E79848E6C">7.1-1 XSq</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap7.html#X7E8088ED7ABF4CAC">7.1-2 IsXSq</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap7.html#X854AD9647FA34EB2">7.1-3 Up2dObject</a></span> </div> <div class="ContSect"><span class="nocss"> </span><a href="chap7.html#X78A79A7E85128C7B">7.2 <span class="Heading">Morphisms of crossed squares</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap7.html#X7DE8173F80E07AB1">7.2-1 Source</a></span> <span class="ContSS"><br /><span class="nocss"> </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} -> 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">> 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">> 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">> 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">> 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">> 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 -> N,~ L -> M,~ M -> P,~ N -> 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 -> Aut L) splits to form the square with (iota_1 : L -> Inn L) on two sides, and (iota_2 : Inn L -> Aut L) on the other two sides, where iota_1 maps l in L to the inner automorphism beta_l : L -> L, l^' -> 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> c := (11,12,13,14,15,16);; gap> d := (12,16)(13,15);; gap> cd := c*d;; gap> d12 := Group( [ c, d ] );; gap> s3a := Subgroup( d12, [ c^2, d ] );; gap> s3b := Subgroup( d12, [ c^2, cd ] );; gap> c3 := Subgroup( d12, [ c^2 ] );; gap> SetName( d12, "d12"); SetName( s3a, "s3a" ); gap> SetName( s3b, "s3b" ); SetName( c3, "c3" ); gap> XSconj := XSqByNormalSubgroups( d12, s3b, s3a, c3 ); [ c3 -> s3b ] [ | | ] [ s3a -> d12 ] gap> Name( XSconj ); "[c3->s3b,s3a->d12]" gap> XStrans := Transpose3dObject( XSconj ); [ c3 -> s3a ] [ | | ] [ s3b -> d12 ] gap> X12 := XModByNormalSubgroup( d12, s3a ); [s3a->d12] gap> XSact := ActorXSq( X12 ); crossed square with: up = Whitehead[s3a->d12] left = [s3a->d12] right = Actor[s3a->d12] down = Norrie[s3a->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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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> Up2dObject( XSconj ); [c3->s3b] gap> Right2dObject( XSact ); Actor[s3a->d12] gap> xpconj := XPair( XSconj );; gap> ImageElmXPair( xpconj, [ (1,6)(2,5)(3,4), (2,6)(3,5) ] ); (1,3,5)(2,4,6) gap> diag := DiagonalAction( XSact ); [ (2,3)(6,8)(7,9), (1,2)(4,6)(5,7) ] -> [ [ (11,13,15)(12,14,16), (12,16)(13,15) ] -> [ (11,15,13)(12,16,14), (12,16)(13,15) ], [ (11,13,15)(12,14,16), (12,16)(13,15) ] -> [ (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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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">> 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> ad12 := GroupHomomorphismByImages( d12, d12, [c,d], [c,d^c] );; gap> as3a := GroupHomomorphismByImages( s3a, s3a, [c^2,d], [c^2,d^c] );; gap> as3b := GroupHomomorphismByImages( s3b, s3b, [c^2,cd], [c^2,cd^c] );; gap> idc3 := IdentityMapping( c3 );; gap> upconj := Up2dObject( XSconj );; gap> leftconj := Left2dObject( XSconj );; gap> downconj := Down2dObject( XSconj );; gap> rightconj := Right2dObject( XSconj );; gap> up := XModMorphismByHoms( upconj, upconj, idc3, as3b ); [[c3->s3b] => [c3->s3b]] gap> left := XModMorphismByHoms( leftconj, leftconj, idc3, as3a ); [[c3->s3a] => [c3->s3a]] gap> down := XModMorphismByHoms( downconj, downconj, as3a, ad12 ); [[s3a->d12] => [s3a->d12]] gap> right := XModMorphismByHoms( rightconj, rightconj, as3b, ad12 ); [[s3b->d12] => [s3b->d12]] gap> autoconj := XSqMorphism( XSconj, XSconj, up, left, down, right );; gap> ord := Order( autoconj );; gap> Display( autoconj ); Morphism of crossed squares :- : Source = [c3->s3b,s3a->d12] : Range = [c3->s3b,s3a->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> KnownPropertiesOfObject( autoconj ); [ "IsTotal", "IsSingleValued", "IsInjective", "IsSurjective", "Is3dMapping", "IsPreXSqMorphism", "IsXSqMorphism", "IsEndomorphism3dObject" ] gap> IsAutomorphism3dObject( autoconj ); true </pre></td></tr></table> <div class="chlinkprevnextbot"> <a href="chap0.html">Top of Book</a> <a href="chap6.html">Previous Chapter</a> <a href="chap8.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>