<?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 3: 2d-mappings</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="chap2.html">Previous Chapter</a> <a href="chap4.html">Next Chapter</a> </div> <p><a id="X815144D67C1D1AE3" name="X815144D67C1D1AE3"></a></p> <div class="ChapSects"><a href="chap3.html#X815144D67C1D1AE3">3 <span class="Heading">2d-mappings</span></a> <div class="ContSect"><span class="nocss"> </span><a href="chap3.html#X81A31F338392CAD8">3.1 <span class="Heading">Morphisms of 2d-objects</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X7DE8173F80E07AB1">3.1-1 Source</a></span> </div> <div class="ContSect"><span class="nocss"> </span><a href="chap3.html#X78CADE4D7EB1EA44">3.2 <span class="Heading">Morphisms of pre-crossed modules</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X82B912B18127A42A">3.2-1 IsXModMorphism</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X7F065FD7822C0A12">3.2-2 IsInjective</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X7CEABD6487CF2A38">3.2-3 XModMorphism</a></span> </div> <div class="ContSect"><span class="nocss"> </span><a href="chap3.html#X84DDF8247FC4982B">3.3 <span class="Heading">Morphisms of pre-cat1-groups</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X85EB07357B682966">3.3-1 Cat1Morphism</a></span> </div> <div class="ContSect"><span class="nocss"> </span><a href="chap3.html#X7B09A28579707CAF">3.4 <span class="Heading">Operations on morphisms</span></a> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X84F59A2687C62763">3.4-1 Order</a></span> <span class="ContSS"><br /><span class="nocss"> </span><a href="chap3.html#X7DCD99628504B810">3.4-2 Kernel</a></span> </div> </div> <h3>3 <span class="Heading">2d-mappings</span></h3> <p><a id="X81A31F338392CAD8" name="X81A31F338392CAD8"></a></p> <h4>3.1 <span class="Heading">Morphisms of 2d-objects</span></h4> <p>This chapter describes morphisms of (pre-)crossed modules and (pre-)cat1-groups.</p> <p><a id="X7DE8173F80E07AB1" name="X7DE8173F80E07AB1"></a></p> <h5>3.1-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">> SourceHom</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">> RangeHom</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div> <p>Morphisms of <code class="code">2dObjects</code> are implemented as <code class="code">2dMappings</code>. These have a pair of 2d-objects as source and range, together with two group homomorphisms mapping between corresponding source and range groups. These functions return <code class="code">fail</code> when invalid data is supplied.</p> <p><a id="X78CADE4D7EB1EA44" name="X78CADE4D7EB1EA44"></a></p> <h4>3.2 <span class="Heading">Morphisms of pre-crossed modules</span></h4> <p><a id="X82B912B18127A42A" name="X82B912B18127A42A"></a></p> <h5>3.2-1 IsXModMorphism</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> IsXModMorphism</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">> IsCat1Morphism</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">> IsPreXModMorphism</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">> IsPreCat1Morphism</code>( <var class="Arg">map</var> )</td><td class="tdright">( property )</td></tr></table></div> <p>A morphism between two pre-crossed modules $\mathcal{X}_{1} = (\partial_1 : S_1 \to R_1)$ and $\mathcal{X}_{2} = (\partial_2 : S_2 \to R_2)$ is a pair $(\sigma, \rho)$, where $\sigma : S_1 \to S_2$ and $\rho : R_1 \to R_2$ commute with the two boundary maps and are morphisms for the two actions:</p> <p class="pcenter"> \partial_2 \sigma = \rho \partial_1, \qquad \sigma(s^r) = (\sigma s)^{\rho r}. </p> <p>Thus $\sigma$ is the <code class="code">SourceHom</code> and $\rho$ is the <code class="code">RangeHom</code>. When $\mathcal{X}_{1} = \mathcal{X}_{2}$ and $ \sigma, \rho $ are automorphisms then $(\sigma, \rho)$ is an automorphism of $\mathcal{X}_1$. The group of automorphisms is denoted by ${\rm Aut}(\mathcal{X}_1 ).$</p> <p><a id="X7F065FD7822C0A12" name="X7F065FD7822C0A12"></a></p> <h5>3.2-2 IsInjective</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> IsInjective</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">> IsSurjective</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">> IsSingleValued</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">> IsTotal</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">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">> IsEndomorphism2dObject</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">> IsAutomorphism2dObject</code>( <var class="Arg">map</var> )</td><td class="tdright">( property )</td></tr></table></div> <p>The usual properties of mappings are easily checked. It is usually sufficient to verify that both the <code class="code">SourceHom</code> and the <code class="code">RangeHom</code> have the required property.</p> <p><a id="X7CEABD6487CF2A38" name="X7CEABD6487CF2A38"></a></p> <h5>3.2-3 XModMorphism</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> XModMorphism</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">> XModMorphismByHoms</code>( <var class="Arg">X1, X2, sigma, rho</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">> PreXModMorphism</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">> PreXModMorphismByHoms</code>( <var class="Arg">P1, P2, sigma, rho</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">> InclusionMorphism2dObjects</code>( <var class="Arg">X1, S1</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">> InnerAutomorphismXMod</code>( <var class="Arg">X1, r</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">> IdentityMapping</code>( <var class="Arg">X1</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">> IsomorphismPermObject</code>( <var class="Arg">obj</var> )</td><td class="tdright">( function )</td></tr></table></div> <p>These are the constructors for morphisms of pre-crossed and crossed modules.</p> <p>In the following example we construct a simple automorphism of the crossed module <code class="code">X1</code> constructed in the previous chapter.</p> <table class="example"> <tr><td><pre> gap> sigma1 := GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ] [ (5,9,8,7,6) ] );; gap> rho1 := IdentityMapping( Range( X1 ) ); IdentityMapping( PAut(c5) ) gap> mor1 := XModMorphism( X1, X1, sigma1, rho1 ); [[c5->PAut(c5))] => [c5->PAut(c5))]] gap> Display( mor1 ); Morphism of crossed modules :- : Source = [c5->PAut(c5))] with generating sets: [ (5,6,7,8,9) ] [ (1,2,4,3) ] : Range = Source : Source Homomorphism maps source generators to: [ (5,9,8,7,6) ] : Range Homomorphism maps range generators to: [ (1,2,4,3) ] gap> IsAutomorphism2dObject( mor1 ); true gap> Print( RepresentationsOfObject(mor1), "\n" ); [ "IsComponentObjectRep", "IsAttributeStoringRep", "Is2dMappingRep" ] gap> Print( KnownPropertiesOfObject(mor1), "\n" ); [ "IsTotal", "IsSingleValued", "IsInjective", "IsSurjective", "Is2dMapping", "IsPreXModMorphism", "IsXModMorphism", "IsEndomorphism2dObject", "IsAutomorphism2dObject" ] gap> Print( KnownAttributesOfObject(mor1), "\n" ); [ "Name", "Range", "Source", "SourceHom", "RangeHom" ] </pre></td></tr></table> <p><a id="X84DDF8247FC4982B" name="X84DDF8247FC4982B"></a></p> <h4>3.3 <span class="Heading">Morphisms of pre-cat1-groups</span></h4> <p>A morphism of pre-cat1-groups from mathcalC_1 = (e_1;t_1,h_1 : G_1 -> R_1) to mathcalC_2 = (e_2;t_2,h_2 : G_2 -> R_2) is a pair (gamma, rho) where gamma : G_1 -> G_2 and rho : R_1 -> R_2 are homomorphisms satisfying</p> <p class="pcenter"> h_2 \gamma = \rho h_1, \qquad t_2 \gamma = \rho t_1, \qquad e_2 \rho = \gamma e_1. </p> <p><a id="X85EB07357B682966" name="X85EB07357B682966"></a></p> <h5>3.3-1 Cat1Morphism</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> Cat1Morphism</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">> Cat1MorphismByHoms</code>( <var class="Arg">C1, C2, gamma, rho</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">> PreCat1Morphism</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">> PreCat1MorphismByHoms</code>( <var class="Arg">P1, P2, gamma, rho</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">> InclusionMorphism2dObjects</code>( <var class="Arg">C1, S1</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">> InnerAutomorphismCat1</code>( <var class="Arg">C1, r</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">> IdentityMapping</code>( <var class="Arg">C1</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">> IsmorphismPermObject</code>( <var class="Arg">obj</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">> SmallerDegreePerm2dObject</code>( <var class="Arg">obj</var> )</td><td class="tdright">( function )</td></tr></table></div> <p>The global function <code class="code">IsomorphismPermObject</code> calls <code class="code">IsomorphismPermPreCat1</code>, which constructs a morphism whose <code class="code">SourceHom</code> and <code class="code">RangeHom</code> are calculated using <code class="code">IsomorphismPermGroup</code> on the source and range. Similarly <code class="code">SmallerDegreePermutationRepresentation</code> is used on the two groups to obtain <code class="code">SmallerDegreePerm2dObject</code>. Names are assigned automatically.</p> <table class="example"> <tr><td><pre> gap> iso2 := IsomorphismPermObject( C2 ); [[s3c4=>s3] => [Ps3c4=>Ps3]] gap> Display( iso2 ); Morphism of cat1-groups :- : Source = [s3c4=>s3] with generating sets: [ f1, f2, f3, f4 ] [ f1, f2 ] : Range = [Ps3c4=>Ps3] with generating sets: [ ( 5, 9)( 6,10)( 7,11)( 8,12), ( 1, 5, 9)( 2, 6,10)( 3, 7,11)( 4, 8,12), ( 1, 3, 2, 4)( 5, 7, 6, 8)( 9,11,10,12), ( 1, 2)( 3, 4)( 5, 6)( 7, 8)( 9,10) (11,12) ] [ (2,3), (1,2,3) ] : Source Homomorphism maps source generators to: [ ( 5, 9)( 6,10)( 7,11)( 8,12), ( 1, 5, 9)( 2, 6,10)( 3, 7,11)( 4, 8,12), ( 1, 3, 2, 4)( 5, 7, 6, 8)( 9,11,10,12), ( 1, 2)( 3, 4)( 5, 6)( 7, 8)( 9,10) (11,12) ] : Range Homomorphism maps range generators to: [ (2,3), (1,2,3) ] </pre></td></tr></table> <p><a id="X7B09A28579707CAF" name="X7B09A28579707CAF"></a></p> <h4>3.4 <span class="Heading">Operations on morphisms</span></h4> <p><a id="X84F59A2687C62763" name="X84F59A2687C62763"></a></p> <h5>3.4-1 Order</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> Order</code>( <var class="Arg">auto</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">> CompositionMorphism</code>( <var class="Arg">map2, map1</var> )</td><td class="tdright">( operation )</td></tr></table></div> <p>Composition of morphisms, written <code class="code">(<map1> * <map2>)</code> for maps acting of the right, calls the <code class="code">CompositionMorphism</code> function for maps acting on the left, applied to the appropriate type of 2d-mapping.</p> <table class="example"> <tr><td><pre> gap> Order( mor1 ); 2 gap> GeneratorsOfGroup( d16 ); [ (11,12,13,14,15,16,17,18), (12,18)(13,17)(14,16) ] gap> d8 := Subgroup( d16, [ c^2, d ] );; gap> c4 := Subgroup( d8, [ c^2 ] );; gap> SetName( d8, "d8" ); SetName( c4, "c4" ); gap> X16 := XModByNormalSubgroup( d16, d8 ); [d8->d16] gap> X8 := XModByNormalSubgroup( d8, c4 ); [c4->d8] gap> IsSubXMod( X16, X8 ); true gap> incd8 := InclusionMorphism2dObjects( X16, X8 ); [[c4->d8] => [d8->d16]] gap> rho := GroupHomomorphismByImages( d16, d16, [c,d], [c,d^(c^2)] );; gap> sigma := GroupHomomorphismByImages( d8, d8, [c^2,d], [c^2,d^(c^2)] );; gap> mor := XModMorphismByHoms( X16, X16, sigma, rho ); [[d8->d16] => [d8->d16]] gap> comp := incd8 * mor; [[c4->d8] => [d8->d16]] gap> comp = CompositionMorphism( mor, incd8 ); true </pre></td></tr></table> <p><a id="X7DCD99628504B810" name="X7DCD99628504B810"></a></p> <h5>3.4-2 Kernel</h5> <div class="func"><table class="func" width="100%"><tr><td class="tdleft"><code class="func">> Kernel</code>( <var class="Arg">map</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">> Kernel2dMapping</code>( <var class="Arg">map</var> )</td><td class="tdright">( attribute )</td></tr></table></div> <p>The kernel of a morphism of crossed modules is a normal subcrossed module whose groups are the kernels of the source and target homomorphisms. The inclusion of the kernel is a standard example of a crossed square, but these have not yet been implemented.</p> <table class="example"> <tr><td><pre> gap> c2 := Group( (19,20) );; gap> i2 := Subgroup( c2, [()] );; gap> X9 := XModByNormalSubgroup( c2, i2 );; gap> sigma9 := GroupHomomorphismByImages( c4, i2, [c^2], [()] );; gap> rho9 := GroupHomomorphismByImages( d8, c2, [c^2,d], [(),(19,20)] );; gap> mor9 := XModMorphism( X8, X9, sigma9, rho9 ); [[c4->d8] => [..]] gap> K9 := Kernel( mor9 ); [Group( [ (11,13,15,17)(12,14,16,18) ] )->Group( [ (11,13,15,17)(12,14,16,18) ] )] </pre></td></tr></table> <div class="chlinkprevnextbot"> <a href="chap0.html">Top of Book</a> <a href="chap2.html">Previous Chapter</a> <a href="chap4.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>