<Section><Heading>Morphisms of 2-dimensional groups</Heading>
<Index>morphism of 2d-group</Index>
<Index>crossed module morphism</Index>
This chapter describes morphisms of (pre-)crossed modules
and (pre-)cat<M>^1</M>-groups.
<ManSection>
<Attr Name="Source"
Arg="map" Label="for 2d-group mappings" />
<Attr Name="Range"
Arg="map" Label="for 2d-group mappings" />
<Attr Name="SourceHom"
Arg="map" />
<Attr Name="RangeHom"
Arg="map" />
<Description>
Morphisms of <E>2-dimensional groups</E> are implemented as
<E>2-dimensional mappings</E>.
These have a pair of 2-dimensional groups as source and range,
together with two group homomorphisms mapping between corresponding
source and range groups.
These functions return <C>fail</C> when invalid data is supplied.
</Description>
</ManSection>
</Section>
<Section><Heading>Morphisms of pre-crossed modules</Heading>
<Index>morphism</Index>
<ManSection>
<Prop Name="IsXModMorphism"
Arg="map" />
<Prop Name="IsPreXModMorphism"
Arg="map" />
<Description>
A morphism between two pre-crossed modules
<M>\calX_{1} = (\partial_1 : S_1 \to R_1)</M> and
<M>\calX_{2} = (\partial_2 : S_2 \to R_2)</M>
is a pair <M>(\sigma, \rho)</M>, where
<M>\sigma : S_1 \to S_2</M> and <M>\rho : R_1 \to R_2</M>
commute with the two boundary maps
and are morphisms for the two actions:
<Display>
\partial_2 \circ \sigma ~=~ \rho \circ \partial_1, \qquad
\sigma(s^r) ~=~ (\sigma s)^{\rho r}.
</Display>
Here <M>\sigma</M> is the <Ref Attr="SourceHom"/>
and <M>\rho</M> is the <Ref Attr="RangeHom"/> of the morphism.
When <M>\calX_{1} = \calX_{2}</M>
and <M>\sigma, \rho</M> are automorphisms then
<M>(\sigma, \rho)</M> is an automorphism of <M>\calX_1</M>.
The group of automorphisms is denoted
by <M>{\rm Aut}(\calX_1 )</M>.
</Description>
</ManSection>
<ManSection>
<Meth Name="IsInjective"
Arg="map" Label="for pre-xmod morphisms" />
<Meth Name="IsSurjective"
Arg="map" Label="for pre-xmod morphisms" />
<Meth Name="IsSingleValued"
Arg="map" Label="for pre-xmod morphisms" />
<Meth Name="IsTotal"
Arg="map" Label="for pre-xmod morphisms" />
<Meth Name="IsBijective"
Arg="map" Label="for pre-xmod morphisms" />
<Prop Name="IsEndo2DimensionalMapping"
Arg="map" />
<Description>
The usual properties of mappings are easily checked.
It is usually sufficient to verify that both the <Ref Attr="SourceHom"/>
and the <Ref Attr="RangeHom"/> have the required property.
</Description>
</ManSection>
<ManSection>
<Func Name="XModMorphism"
Arg="args" />
<Oper Name="XModMorphismByGroupHomomorphisms"
Arg="X1 X2 sigma rho" />
<Func Name="PreXModMorphism"
Arg="args" />
<Oper Name="PreXModMorphismByGroupHomomorphisms"
Arg="P1 P2 sigma rho" />
<Oper Name="InclusionMorphism2DimensionalDomains"
Arg="X1 S1" Label="for crossed modules" />
<Oper Name="InnerAutomorphismXMod"
Arg="X1 r" />
<Attr Name="IdentityMapping"
Arg="X1" Label="for pre-xmods" />
<Description>
These are the constructors for morphisms of pre-crossed and crossed modules.
<P/>
In the following example we construct a simple automorphism of
the crossed module <C>X5</C> constructed in the previous chapter.
</Description>
</ManSection>
<P/>
<Index>display a 2d-mapping</Index>
<Index>order of a 2d-automorphism</Index>
<Example>
<![CDATA[
gap> sigma5 := GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ]
[ (5,9,8,7,6) ] );;
gap> rho5 := IdentityMapping( Range( X1 ) );
IdentityMapping( PAut(c5) )
gap> mor5 := XModMorphism( X5, X5, sigma5, rho5 );
[[c5->Aut(c5))] => [c5->Aut(c5))]]
gap> Display( mor5 );
Morphism of crossed modules :-
: Source = [c5->Aut(c5)] with generating sets:
[ (5,6,7,8,9) ]
[ GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ], [ (5,7,9,6,8) ] ) ]
: Range = Source
: Source Homomorphism maps source generators to:
[ (5,9,8,7,6) ]
: Range Homomorphism maps range generators to:
[ GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ], [ (5,7,9,6,8) ] ) ]
gap> IsAutomorphism2DimensionalDomain( mor5 );
true
gap> Order( mor5 );
2
gap> RepresentationsOfObject( mor5 );
[ "IsComponentObjectRep", "IsAttributeStoringRep", "Is2DimensionalMappingRep" ]
gap> KnownPropertiesOfObject( mor5 );
[ "CanEasilyCompareElements", "CanEasilySortElements", "IsTotal", "IsSingleValued", "IsInjective", "IsSurjective", "RespectsMultiplication", "IsPreXModMorphism", "IsXModMorphism", "IsEndomorphism2DimensionalDomain", "IsAutomorphism2DimensionalDomain" ]
gap> KnownAttributesOfObject( mor5 );
[ "Name", "Order", "Range", "Source", "SourceHom", "RangeHom" ]
]]>
</Example>
<ManSection>
<Attr Name="IsomorphismPerm2DimensionalGroup"
Arg="obj" Label="for pre-xmod morphisms" />
<Attr Name="IsomorphismPc2DimensionalGroup"
Arg="obj" Label="for pre-xmod morphisms" />
<Oper Name="IsomorphismByIsomorphisms"
Arg="D list" />
<Description>
When <M>\calD</M> is a <M>2</M>-dimensional domain
with source <M>S</M> and range <M>R</M>
and <M>\sigma : S \to S',~ \rho : R \to R'</M> are isomorphisms,
then <C>IsomorphismByIsomorphisms(D,[sigma,rho])</C> returns an isomorphism
<M>(\sigma,\rho) : \calD \to \calD'
where <M>\calD' has source S'</M> and range <M>R'.
Be sure to test <C>IsBijective</C> for the two functions
<M>\sigma,\rho</M> before applying this operation.
<P/>
Using <Ref Oper="IsomorphismByIsomorphisms"/> with a pair of isomorphisms
obtained using <C>IsomorphismPermGroup</C> or <C>IsomorphismPcGroup</C>,
we may construct a crossed module or a cat<M>^1</M>-group of permutation groups
or pc-groups.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> q8 := SmallGroup(8,4);; ## quaternion group
gap> XAq8 := XModByAutomorphismGroup( q8 );
[Group( [ f1, f2, f3 ] )->Group( [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2, f2, f3 ],
Pcgs([ f1, f2, f3 ]) -> [ f2, f1*f2, f3 ],
Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ],
Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ] )]
gap> iso := IsomorphismPerm2DimensionalGroup( XAq8 );;
gap> YAq8 := Image( iso );
[Group( [ (1,2,4,6)(3,8,7,5), (1,3,4,7)(2,5,6,8), (1,4)(2,6)(3,7)(5,8)
] )->Group( [ (1,3,4,6), (1,2,3)(4,5,6), (1,4)(3,6), (2,5)(3,6) ] )]
gap> s4 := SymmetricGroup(4);;
gap> isos4 := IsomorphismGroups( Range(YAq8), s4 );;
gap> id := IdentityMapping( Source( YAq8 ) );;
gap> IsBijective( id );; IsBijective( isos4 );;
gap> mor := IsomorphismByIsomorphisms( YAq8, [id,isos4] );;
gap> ZAq8 := Image( mor );
[Group( [ (1,2,4,6)(3,8,7,5), (1,3,4,7)(2,5,6,8), (1,4)(2,6)(3,7)(5,8)
] )->SymmetricGroup( [ 1 .. 4 ] )]
]]>
</Example>
<ManSection>
<Attr Name="MorphismOfPullback"
Arg="xmod" Label="for a crossed module by pullback" />
<Description>
Let <M>\calX_1 = (\lambda : L \to N)</M> be the pullback crossed module
obtained from a crossed module <M>\calX_0 = (\mu : M \to P)</M>
and a group homomorphism <M>\nu : N \to P</M>.
Then the associated crossed module morphism is
<M>(\kappa,\nu) : \calX_1 \to \calX_0</M>
where <M>\kappa</M> is the projection from <M>L</M> to <M>M</M>.
</Description>
</ManSection>
</Section>
<Section Label="sect-mor-pre-cat1">
<Heading>Morphisms of pre-cat<M>^1</M>-groups</Heading>
A morphism of pre-cat<M>^1</M>-groups from
<M>\calC_1 = (e_1;t_1,h_1 : G_1 \to R_1)</M>
to <M>\calC_2 = (e_2;t_2,h_2 : G_2 \to R_2)</M>
is a pair <M>(\gamma, \rho)</M> where
<M>\gamma : G_1 \to G_2</M> and <M>\rho : R_1 \to R_2</M>
are homomorphisms satisfying
<Display>
h_2 \circ \gamma ~=~ \rho \circ h_1, \qquad
t_2 \circ \gamma ~=~ \rho \circ t_1, \qquad
e_2 \circ \rho ~=~ \gamma \circ e_1.
</Display>
<ManSection>
<Prop Name="IsCat1GroupMorphism"
Arg="map" />
<Prop Name="IsPreCat1GroupMorphism"
Arg="map" />
<Func Name="Cat1GroupMorphism"
Arg="args" />
<Oper Name="Cat1GroupMorphismByGroupHomomorphisms"
Arg="C1 C2 gamma rho" />
<Func Name="PreCat1GroupMorphism"
Arg="args" />
<Oper Name="PreCat1GroupMorphismByGroupHomomorphisms"
Arg="P1 P2 gamma rho" />
<Oper Name="InclusionMorphism2DimensionalDomains"
Arg="C1 S1" Label="for cat1-groups" />
<Oper Name="InnerAutomorphismCat1"
Arg="C1 r" />
<Attr Name="IdentityMapping"
Arg="C1" Label="for precat1-morphisms" />
<Description>
For an example we form a second cat<M>^1</M>-group <Code>C2=[g18=>s3a]</Code>,
similar to <C>C1</C> in <Ref Sect="mansect-cat1"/>,
then construct an isomorphism <M>(\gamma,\rho)</M> between them.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> t3 := GroupHomomorphismByImages(g18,s3a,g18gens,[(),(7,8,9),(8,9)]);;
gap> e3 := GroupHomomorphismByImages(s3a,g18,s3agens,[(4,5,6),(2,3)(5,6)]);;
gap> C3 := Cat1Group( t3, h1, e3 );;
gap> imgamma := [ (4,5,6), (1,2,3), (2,3)(5,6) ];;
gap> gamma := GroupHomomorphismByImages( g18, g18, g18gens, imgamma );;
gap> rho := IdentityMapping( s3a );;
gap> phi3 := Cat1GroupMorphism( C18, C3, gamma, rho );;
gap> Display( phi3 );;
Morphism of cat1-groups :-
: Source = [g18=>s3a] with generating sets:
[ (1,2,3), (4,5,6), (2,3)(5,6) ]
[ (7,8,9), (8,9) ]
: Range = [g18=>s3a] with generating sets:
[ (1,2,3), (4,5,6), (2,3)(5,6) ]
[ (7,8,9), (8,9) ]
: Source Homomorphism maps source generators to:
[ (4,5,6), (1,2,3), (2,3)(5,6) ]
: Range Homomorphism maps range generators to:
[ (7,8,9), (8,9) ]
]]>
</Example>
<ManSection>
<Attr Name="Cat1GroupMorphismOfXModMorphism"
Arg="IsXModMorphism" />
<Attr Name="XModMorphismOfCat1GroupMorphism"
Arg="IsCat1GroupMorphism" />
<Description>
If <M>(\sigma,\rho) : \calX_1 \to \calX_2</M> and <M>\calC_1,\calC_2</M>
are the cat<M>^1</M>-groups accociated to <M>\calX_1, \calX_2</M>, then
the associated morphism of cat<M>^1</M>-groups is <M>(\gamma,\rho)</M>
where <M>\gamma(r_1,s_1) = (\rho r_1, \sigma s_1)</M>.
<P/>
Similarly, given a morphism <M>(\gamma,\rho) : \calC_1 \to \calC_2</M>
of cat<M>^1</M>-groups, the associated morphism of crossed modules is
<M>(\sigma,\rho) : \calX_1 \to \calX_2</M>
where <M>\sigma s_1 = \gamma(1,s_1)</M>. .
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> phi5 := Cat1GroupMorphismOfXModMorphism( mor5 );
[[(Aut(c5) |X c5)=>Aut(c5)] => [(Aut(c5) |X c5)=>Aut(c5)]]
gap> mor3 := XModMorphismOfCat1GroupMorphism( phi3 );;
gap> Display( mor3 );
Morphism of crossed modules :-
: Source = xmod([g18=>s3a]) with generating sets:
[ (4,5,6) ]
[ (7,8,9), (8,9) ]
: Range = xmod([g18=>s3a]) with generating sets:
[ (1,2,3) ]
[ (7,8,9), (8,9) ]
: Source Homomorphism maps source generators to:
[ (1,2,3) ]
: Range Homomorphism maps range generators to:
[ (7,8,9), (8,9) ]
]]>
</Example>
<ManSection>
<Func Name="IsomorphismPermObject"
Arg="obj" />
<Attr Name="IsomorphismPerm2DimensionalGroup"
Arg="2DimensionalGroup" Label="for pre-cat1 morphisms" />
<Attr Name="IsomorphismFp2DimensionalGroup"
Arg="2DimensionalGroup" Label="for pre-cat1 morphisms" />
<Attr Name="IsomorphismPc2DimensionalGroup"
Arg="2DimensionalGroup" Label="for pre-cat1 morphisms" />
<Attr Name="RegularActionHomomorphism2DimensionalGroup"
Arg="2DimensionalGroup" Label="for pre-cat1 morphisms" />
<Description>
The global function <C>IsomorphismPermObject</C>
calls <C>IsomorphismPerm2DimensionalGroup</C>,
which constructs a morphism whose <Ref Attr="SourceHom"/>
and <Ref Attr="RangeHom"/> are calculated using
<C>IsomorphismPermGroup</C> on the source and range.
<P/>
The global function <C>RegularActionHomomorphism2DimensionalGroup</C>
is similar, but uses <C>RegularActionHomomorphism</C>
in place of <C>IsomorphismPermGroup</C>.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> iso8 := IsomorphismPerm2DimensionalGroup( C8 );
[[G8=>d12] => [..]]
]]>
</Example>
<ManSection>
<Attr Name="SmallerDegreePermutationRepresentation2DimensionalGroup"
Arg="Perm2DimensionalGroup" Label="for perm 2d-groups" />
<Description>
The attribute
<C>SmallerDegreePermutationRepresentation2DimensionalGroup</C>
is obtained by calling <C>SmallerDegreePermutationRepresentation</C>
on the source and range to obtain the an isomorphism for the pre-xmod
or pre-cat<M>^1</M>-group.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> G := Group( (1,2,3,4)(5,6,7,8) );;
gap> H := Subgroup( G, [ (1,3)(2,4)(5,7)(6,8) ] );;
gap> XG := XModByNormalSubgroup( G, H );
[Group( [ (1,3)(2,4)(5,7)(6,8) ] )->Group( [ (1,2,3,4)(5,6,7,8) ] )]
gap> sdpr := SmallerDegreePermutationRepresentation2DimensionalGroup( XG );;
gap> Range( sdpr );
[Group( [ (1,2) ] )->Group( [ (1,2,3,4) ] )]
]]>
</Example>
</Section>
<Section Label="sect-oper-mor">
<Heading>Operations on morphisms</Heading>
<Index>operations on morphisms</Index>
<ManSection>
<Oper Name="CompositionMorphism"
Arg="map2 map1" />
<Description>
Composition of morphisms (written <C>(<map1> * <map2>)</C>
when maps act on the right)
calls the <Ref Oper="CompositionMorphism"/> function for maps
(acting on the left), applied to the appropriate type of 2d-mapping.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> H8 := Subgroup(G8,[G8.3,G8.4,G8.6,G8.7]); SetName( H8, "H8" );
Group([ f3, f4, f6, f7 ])
gap> c6 := Subgroup( d12, [b,c] ); SetName( c6, "c6" );
Group([ f2, f3 ])
gap> SC8 := Sub2DimensionalGroup( C8, H8, c6 );
[H8=>c6]
gap> IsCat1Group( SC8 );
true
gap> inc8 := InclusionMorphism2DimensionalDomains( C8, SC8 );
[[H8=>c6] => [G8=>d12]]
gap> CompositionMorphism( iso8, inc );
[[H8=>c6] => P[G8=>d12]]
]]>
</Example>
<ManSection>
<Oper Name="Kernel"
Arg="map" Label="for 2d-mappings" />
<Attr Name="Kernel2DimensionalMapping"
Arg="map" />
<Description>
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.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> c2 := Group( (19,20) );
Group([ (19,20) ])
gap> X0 := XModByNormalSubgroup( c2, c2 ); SetName( X0, "X0" );
[Group( [ (19,20) ] )->Group( [ (19,20) ] )]
gap> SX8 := Source( X8 );;
gap> genSX8 := GeneratorsOfGroup( SX8 );
[ f1, f4, f5, f7 ]
gap> sigma0 := GroupHomomorphismByImages(SX8,c2,genSX8,[(19,20),(),(),()]);
[ f1, f4, f5, f7 ] -> [ (19,20), (), (), () ]
gap> rho0 := GroupHomomorphismByImages(d12,c2,[a1,a2,a3],[(19,20),(),()]);
[ f1, f2, f3 ] -> [ (19,20), (), () ]
gap> mor0 := XModMorphism( X8, X0, sigma0, rho0 );;
gap> K0 := Kernel( mor0 );;
gap> StructureDescription( K0 );
[ "C12", "C6" ]
]]></Example>
A morphism of crossed modules
<M>
\phi : \calX = (\partial : S \to R) \to \calX' = (\partial' : S' \to R')
</M>
induces homomorphisms
<M>\pi_1(\phi) : \pi_1(\partial) \to \pi_1(\partial')
and <M>\pi_2(\phi) : \pi_2(\partial) \to \pi_2(\partial').
A morphism <M>\phi</M> is a <E>quasi-isomorphism</E>
if both <M>\pi_1(\phi)</M> and <M>\pi_2(\phi)</M> are isomorphisms.
Two crossed modules <M>\calX,\calX' are quasi-isomorphic
is there exists a sequence of quasi-isomorphisms
<Display>
\calX ~=~ \calX_1 ~\leftrightarrow~ \calX_2 ~\leftrightarrow~ \calX_3
~\leftrightarrow~ \cdots ~\longleftrightarrow~ \calX_{\ell} ~=~ \calX'
</Display>
of length <M>\ell-1</M>.
Here <M>\calX_i \leftrightarrow \calX_j</M> means that
<E>either</E> <M>\calX_i \to \calX_j</M> <E>or</E> <M>\calX_j \to \calX_i</M>.
When <M>\calX,\calX' are quasi-isomorphic
we write <M>\calX \simeq \calX'.
Clearly <M>\simeq</M> is an equivalence relation.
Mac\ Lane and Whitehead in <Cite Key="MW" /> showed that there is a one-to-one
correspondence between homotopy <M>2</M>-types and quasi-isomorphism classes.
We say that <M>\calX</M> represents a <E>trivial</E> quasi-isomorphism class
if <M>\partial=0</M>.
<P/>
Two cat<M>^1</M>-groups are quasi-isomorphic if their corresponding
crossed modules are.
The procedure for constructing a representative for the
quasi-isomorphism class of a cat<M>^1</M>-group <M>\calC</M>,
as described by Ellis and Le in <Cite Key="EL" />, is as follows.
The <E>quotient process</E> consists of finding all normal sub-crossed modules
<M>\calN</M> of the crossed module <M>\calX</M> associated to <M>\calC</M>;
constructing the quotient crossed module morphisms
<M>\nu : \calX \to \calX/\calN</M>;
and converting these <M>\nu</M> to morphisms from <M>\calC</M>.
<P/>
The <E>sub-crossed module process</E> consists of finding all
sub-crossed modules <M>\calS</M> of <M>\calX</M>
such that the inclusion <M>\iota : \calS \to \calX</M>
is a quasi-isomorphism; then converting
<M>\iota</M> to a morphism to <M>\calC</M>.
<P/>
The procedure for finding all quasi-isomorphism reductions
consists of repeating the quotient process,
followed by the sub-crossed module process,
until no further reductions are possible.
<P/>
It may happen that <M>\calC_1 \simeq \calC_2</M> without either having
a quasi-isomorphism reduction. In this case it is necessary to find
a suitable <M>\calC_3</M> with reductions <M>\calC_3 \to \calC_1</M>
and <M>\calC_3 \to \calC_2</M>.
No such automated process is available in <Package>XMod</Package>.
<P/>
Functions for these computations were first implemented in the
package <Package>HAP</Package> and are available as
<C>QuotientQuasiIsomorph</C>, <C>SubQuasiIsomorph</C>
and <C>QuasiIsomorph</C>.
<ManSection>
<Oper Name="QuotientQuasiIsomorphism"
Arg="cat1 bool" />
<Description>
This function implements the quotient process.
The second parameter is a boolean which, when true,
causes the results of some intermediate calculations to be printed.
The output shows the identity of the reduced cat<M>^1</M>-group, if there is one.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> C18a := Cat1Select( 18, 4, 4 );;
gap> StructureDescription( C18a );
[ "(C3 x C3) : C2", "S3" ]
gap> QuotientQuasiIsomorphism( C18a, true );
quo: [ f2 ][ f3 ], [ "1", "C2" ]
[ [ 2, 1 ], [ 2, 1 ] ], [ 2, 1, 1 ]
[ [ 2, 1, 1 ] ]
]]>
</Example>
<ManSection>
<Oper Name="QuasiIsomorphism"
Arg="cat1 list bool" />
<Description>
This function implements the general process.
</Description>
</ManSection>
<P/>
<Example>
<![CDATA[
gap> L18a := QuasiIsomorphism( C18a, [18,4,4], false );
[ [ 2, 1, 1 ], [ 18, 4, 4 ] ]
]]>
</Example>
The logs above show that <C>C18a</C> has just one normal sub-crossed module
<M>\calN</M> leading to a reduction, and that there are three sub-crossed
modules <M>\calS</M> all giving the same reduction.
The conclusion is that <C>C18a</C> is quasi-isomorphic to the identity
cat<M>^1</M>-group on the cyclic group of order <M>2</M>.
</Section>
</Chapter>
¤ Dauer der Verarbeitung: 0.34 Sekunden
(vorverarbeitet)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung ist noch experimentell.