Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Bib Ind
 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 

3 2d-mappings
 3.1 Morphisms of 2-dimensional groups
 3.2 Morphisms of pre-crossed modules
 3.3 Morphisms of pre-cat1-groups
 3.4 Operations on morphisms
 3.5 Quasi-isomorphisms

3 2d-mappings

3.1 Morphisms of 2-dimensional groups

This chapter describes morphisms of (pre-)crossed modules and (pre-)cat1-groups.

3.1-1 Source
‣ Source( map )( attribute )
‣ Range( map )( attribute )
‣ SourceHom( map )( attribute )
‣ RangeHom( map )( attribute )

Morphisms of 2-dimensional groups are implemented as 2-dimensional mappings. 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 fail when invalid data is supplied.

3.2 Morphisms of pre-crossed modules

3.2-1 IsXModMorphism
‣ IsXModMorphism( map )( property )
‣ IsPreXModMorphism( map )( property )

A morphism between two pre-crossed modules calX_1 = (∂_1 : S_1 -> R_1) and calX_2 = (∂_2 : S_2 -> R_2) is a pair (σ, ρ), where σ : S_1 -> S_2 and ρ : R_1 -> R_2 commute with the two boundary maps and are morphisms for the two actions:

\partial_2 \circ \sigma ~=~ \rho \circ \partial_1, \qquad \sigma(s^r) ~=~ (\sigma s)^{\rho r}.

Here σ is the SourceHom (3.1-1) and ρ is the RangeHom (3.1-1) of the morphism. When calX_1 = calX_2 and σ, ρ are automorphisms then (σ, ρ) is an automorphism of calX_1. The group of automorphisms is denoted by Aut(calX_1 ).

3.2-2 IsInjective
‣ IsInjective( map )( method )
‣ IsSurjective( map )( method )
‣ IsSingleValued( map )( method )
‣ IsTotal( map )( method )
‣ IsBijective( map )( method )
‣ IsEndo2DimensionalMapping( map )( property )

The usual properties of mappings are easily checked. It is usually sufficient to verify that both the SourceHom (3.1-1) and the RangeHom (3.1-1) have the required property.

3.2-3 XModMorphism
‣ XModMorphism( args )( function )
‣ XModMorphismByGroupHomomorphisms( X1, X2, sigma, rho )( operation )
‣ PreXModMorphism( args )( function )
‣ PreXModMorphismByGroupHomomorphisms( P1, P2, sigma, rho )( operation )
‣ InclusionMorphism2DimensionalDomains( X1, S1 )( operation )
‣ InnerAutomorphismXMod( X1, r )( operation )
‣ IdentityMapping( X1 )( attribute )

These are the constructors for morphisms of pre-crossed and crossed modules.

In the following example we construct a simple automorphism of the crossed module X5 constructed in the previous chapter.


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" ]

3.2-4 IsomorphismPerm2DimensionalGroup
‣ IsomorphismPerm2DimensionalGroup( obj )( attribute )
‣ IsomorphismPc2DimensionalGroup( obj )( attribute )
‣ IsomorphismByIsomorphisms( D, list )( operation )

When calD is a 2-dimensional domain with source S and range R and σ : S -> S',~ ρ : R -> R' are isomorphisms, then IsomorphismByIsomorphisms(D,[sigma,rho]) returns an isomorphism (σ,ρ) : calD -> calD' where calD' has source S' and range R'. Be sure to test IsBijective for the two functions σ,ρ before applying this operation.

Using IsomorphismByIsomorphisms with a pair of isomorphisms obtained using IsomorphismPermGroup or IsomorphismPcGroup, we may construct a crossed module or a cat1-group of permutation groups or pc-groups.


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 ] )]

3.2-5 MorphismOfPullback
‣ MorphismOfPullback( xmod )( attribute )

Let calX_1 = (λ : L -> N) be the pullback crossed module obtained from a crossed module calX_0 = (μ : M -> P) and a group homomorphism ν : N -> P. Then the associated crossed module morphism is (κ,ν) : calX_1 -> calX_0 where κ is the projection from L to M.

3.3 Morphisms of pre-cat1-groups

A morphism of pre-cat1-groups from calC_1 = (e_1;t_1,h_1 : G_1 -> R_1) to calC_2 = (e_2;t_2,h_2 : G_2 -> R_2) is a pair (γ, ρ) where γ : G_1 -> G_2 and ρ : R_1 -> R_2 are homomorphisms satisfying

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.

3.3-1 IsCat1GroupMorphism
‣ IsCat1GroupMorphism( map )( property )
‣ IsPreCat1GroupMorphism( map )( property )
‣ Cat1GroupMorphism( args )( function )
‣ Cat1GroupMorphismByGroupHomomorphisms( C1, C2, gamma, rho )( operation )
‣ PreCat1GroupMorphism( args )( function )
‣ PreCat1GroupMorphismByGroupHomomorphisms( P1, P2, gamma, rho )( operation )
‣ InclusionMorphism2DimensionalDomains( C1, S1 )( operation )
‣ InnerAutomorphismCat1( C1, r )( operation )
‣ IdentityMapping( C1 )( attribute )

For an example we form a second cat1-group C2=[g18=>s3a], similar to C1 in 2.4-1, then construct an isomorphism (γ,ρ) between them.


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) ]

3.3-2 Cat1GroupMorphismOfXModMorphism
‣ Cat1GroupMorphismOfXModMorphism( IsXModMorphism )( attribute )
‣ XModMorphismOfCat1GroupMorphism( IsCat1GroupMorphism )( attribute )

If (σ,ρ) : calX_1 -> calX_2 and calC_1,calC_2 are the cat^1-groups accociated to calX_1, calX_2, then the associated morphism of cat^1-groups is (γ,ρ) where γ(r_1,s_1) = (ρ r_1, σ s_1).

Similarly, given a morphism (γ,ρ) : calC_1 -> calC_2 of cat1-groups, the associated morphism of crossed modules is (σ,ρ) : calX_1 -> calX_2 where σ s_1 = γ(1,s_1). .


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) ]

3.3-3 IsomorphismPermObject
‣ IsomorphismPermObject( obj )( function )
‣ IsomorphismPerm2DimensionalGroup( 2DimensionalGroup )( attribute )
‣ IsomorphismFp2DimensionalGroup( 2DimensionalGroup )( attribute )
‣ IsomorphismPc2DimensionalGroup( 2DimensionalGroup )( attribute )
‣ RegularActionHomomorphism2DimensionalGroup( 2DimensionalGroup )( attribute )

The global function IsomorphismPermObject calls IsomorphismPerm2DimensionalGroup, which constructs a morphism whose SourceHom (3.1-1) and RangeHom (3.1-1) are calculated using IsomorphismPermGroup on the source and range.

The global function RegularActionHomomorphism2DimensionalGroup is similar, but uses RegularActionHomomorphism in place of IsomorphismPermGroup.


gap> iso8 := IsomorphismPerm2DimensionalGroup( C8 );
[[G8=>d12] => [..]]

3.3-4 SmallerDegreePermutationRepresentation2DimensionalGroup
‣ SmallerDegreePermutationRepresentation2DimensionalGroup( Perm2DimensionalGroup )( attribute )

The attribute SmallerDegreePermutationRepresentation2DimensionalGroup is obtained by calling SmallerDegreePermutationRepresentation on the source and range to obtain the an isomorphism for the pre-xmod or pre-cat^1-group.


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) ] )]

3.4 Operations on morphisms

3.4-1 CompositionMorphism
‣ CompositionMorphism( map2, map1 )( operation )

Composition of morphisms (written (<map1> * <map2>) when maps act on the right) calls the CompositionMorphism function for maps (acting on the left), applied to the appropriate type of 2d-mapping.


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]]

3.4-2 Kernel
‣ Kernel( map )( operation )
‣ Kernel2DimensionalMapping( map )( attribute )

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.


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" ]

3.5 Quasi-isomorphisms

A morphism of crossed modules ϕ : calX = (∂ : S -> R) -> calX' = (∂' : S' -> R') induces homomorphisms π_1(ϕ) : π_1(∂) -> π_1(∂') and π_2(ϕ) : π_2(∂) -> π_2(∂'). A morphism ϕ is a quasi-isomorphism if both π_1(ϕ) and π_2(ϕ) are isomorphisms. Two crossed modules calX,calX' are quasi-isomorphic is there exists a sequence of quasi-isomorphisms

\calX ~=~ \calX_1 ~\leftrightarrow~ \calX_2 ~\leftrightarrow~ \calX_3 ~\leftrightarrow~ \cdots ~\longleftrightarrow~ \calX_{\ell} ~=~ \calX'

of length ℓ-1. Here calX_i ↔ calX_j means that either calX_i -> calX_j or calX_j -> calX_i. When calX,calX' are quasi-isomorphic we write calX ≃ calX'. Clearly is an equivalence relation. Mac\ Lane and Whitehead in [MLW50] showed that there is a one-to-one correspondence between homotopy 2-types and quasi-isomorphism classes. We say that calX represents a trivial quasi-isomorphism class if ∂=0.

Two cat^1-groups are quasi-isomorphic if their corresponding crossed modules are. The procedure for constructing a representative for the quasi-isomorphism class of a cat^1-group calC, as described by Ellis and Le in [EL14], is as follows. The quotient process consists of finding all normal sub-crossed modules calN of the crossed module calX associated to calC; constructing the quotient crossed module morphisms ν : calX -> calX/calN; and converting these ν to morphisms from calC.

The sub-crossed module process consists of finding all sub-crossed modules calS of calX such that the inclusion ι : calS -> calX is a quasi-isomorphism; then converting ι to a morphism to calC.

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.

It may happen that calC_1 ≃ calC_2 without either having a quasi-isomorphism reduction. In this case it is necessary to find a suitable calC_3 with reductions calC_3 -> calC_1 and calC_3 -> calC_2. No such automated process is available in XMod.

Functions for these computations were first implemented in the package HAP and are available as QuotientQuasiIsomorph, SubQuasiIsomorph and QuasiIsomorph.

3.5-1 QuotientQuasiIsomorphism
‣ QuotientQuasiIsomorphism( cat1, bool )( operation )

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 cat1-group, if there is one.


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 ] ]

3.5-2 SubQuasiIsomorphism
‣ SubQuasiIsomorphism( cat1, bool )( operation )

This function implements the sub-crossed module process.


gap> SubQuasiIsomorphism( C18a, false );
[ [ 2, 1, 1 ], [ 2, 1, 1 ], [ 2, 1, 1 ] ]

3.5-3 QuasiIsomorphism
‣ QuasiIsomorphism( cat1, list, bool )( operation )

This function implements the general process.


gap> L18a := QuasiIsomorphism( C18a, [18,4,4], false );
[ [ 2, 1, 1 ], [ 18, 4, 4 ] ]

The logs above show that C18a has just one normal sub-crossed module calN leading to a reduction, and that there are three sub-crossed modules calS all giving the same reduction. The conclusion is that C18a is quasi-isomorphic to the identity cat1-group on the cyclic group of order 2.

 [Top of Book]  [Contents]   [Previous Chapter]   [Next Chapter] 
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 Bib Ind

generated by GAPDoc2HTML