3 2d-mappings
3.1 Morphisms of 2d-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 2d-groups are implemented as 2d-mappings. These have a pair of 2d-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 mathcalX_1 = (∂_1 : S_1 -> R_1) and mathcalX_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 \sigma = \rho \partial_1, \qquad
\sigma(s^r) = (\sigma s)^{\rho r}.
Thus σ is the SourceHom and ρ is the RangeHom. When mathcalX_1 = mathcalX_2 and σ, ρ are automorphisms then (σ, ρ) is an automorphism of mathcalX_1. The group of automorphisms is denoted by Aut(mathcalX_1 ).
3.2-2 IsInjective
‣ IsInjective( map ) | ( property ) |
‣ IsSurjective( map ) | ( property ) |
‣ IsSingleValued( map ) | ( property ) |
‣ IsTotal( map ) | ( property ) |
‣ IsBijective( map ) | ( property ) |
‣ IsEndo2dMapping( map ) | ( property ) |
The usual properties of mappings are easily checked. It is usually sufficient to verify that both the SourceHom and the RangeHom have the required property.
3.2-3 XModMorphism
‣ XModMorphism( args ) | ( function ) |
‣ XModMorphismByHoms( X1, X2, sigma, rho ) | ( operation ) |
‣ PreXModMorphism( args ) | ( function ) |
‣ PreXModMorphismByHoms( P1, P2, sigma, rho ) | ( operation ) |
‣ InclusionMorphism2dDomains( X1, S1 ) | ( operation ) |
‣ InnerAutomorphismXMod( X1, r ) | ( operation ) |
‣ IdentityMapping( X1 ) | ( attribute ) |
‣ IsomorphismPermObject( obj ) | ( function ) |
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 X1 constructed in the previous chapter.
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,3,4) ]
: Range = Source
: Source Homomorphism maps source generators to:
[ (5,9,8,7,6) ]
: Range Homomorphism maps range generators to:
[ (1,2,3,4) ]
gap> IsAutomorphism2dDomain( mor1 );
true
gap> Order( mor1 );
2
gap> RepresentationsOfObject( mor1 );
[ "IsComponentObjectRep", "IsAttributeStoringRep", "Is2dMappingRep" ]
gap> KnownPropertiesOfObject( mor1 );
[ "CanEasilyCompareElements", "CanEasilySortElements", "IsTotal",
"IsSingleValued", "IsInjective", "IsSurjective", "RespectsMultiplication",
"IsPreXModMorphism", "IsXModMorphism", "IsEndomorphism2dDomain",
"IsAutomorphism2dDomain" ]
gap> KnownAttributesOfObject( mor1 );
[ "Name", "Order", "Range", "Source", "SourceHom", "RangeHom" ]
3.3 Morphisms of pre-cat1-groups
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 (γ, ρ) where γ : G_1 -> G_2 and ρ : R_1 -> R_2 are homomorphisms satisfying
h_2 \gamma = \rho h_1, \qquad
t_2 \gamma = \rho t_1, \qquad
e_2 \rho = \gamma e_1.
3.3-1 IsCat1Morphism
‣ IsCat1Morphism( map ) | ( property ) |
‣ IsPreCat1Morphism( map ) | ( property ) |
‣ Cat1Morphism( args ) | ( function ) |
‣ Cat1MorphismByHoms( C1, C2, gamma, rho ) | ( operation ) |
‣ PreCat1Morphism( args ) | ( function ) |
‣ PreCat1MorphismByHoms( P1, P2, gamma, rho ) | ( operation ) |
‣ InclusionMorphism2dDomains( C1, S1 ) | ( operation ) |
‣ InnerAutomorphismCat1( C1, r ) | ( operation ) |
‣ IdentityMapping( C1 ) | ( attribute ) |
‣ IsomorphismPermObject( obj ) | ( function ) |
‣ SmallerDegreePerm2dDomain( obj ) | ( function ) |
The global function IsomorphismPermObject calls IsomorphismPermPreCat1, which constructs a morphism whose SourceHom and RangeHom are calculated using IsomorphismPermGroup on the source and range. Similarly SmallerDegreePermutationRepresentation is used on the two groups to obtain SmallerDegreePerm2dDomain. Names are assigned automatically.
gap> iso2 := IsomorphismPermObject( C2 );;
gap> Display( iso2 );
Morphism of cat1-groups :-
: Source = [s3c4=>s3] with generating sets:
[ f1, f2, f3, f4 ]
[ f1, f2 ]
: Range = P[s3c4=>s3] with generating sets:
[ (6,7), (5,6,7), (1,2,3,4), (1,3)(2,4) ]
[ (2,3), (1,2,3) ]
: Source Homomorphism maps source generators to:
[ (6,7), (5,6,7), (1,2,3,4), (1,3)(2,4) ]
: Range Homomorphism maps range generators to:
[ (2,3), (1,2,3) ]
3.4 Operations on morphisms
3.4-1 CompositionMorphism
‣ CompositionMorphism( map2, map1 ) | ( operation ) |
Composition of morphisms, written (<map1> * <map2>) for maps acting of the right, calls the CompositionMorphism function for maps acting on the left, applied to the appropriate type of 2d-mapping.
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 := SubXMod( X16, c4, d8 );
[c4->d8]
gap> IsSubXMod( X16, X8 );
true
gap> inc8 := InclusionMorphism2dDomains( 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 := inc8 * mor;
[[c4->d8] => [d8->d16]]
gap> comp = CompositionMorphism(mor,inc8);
true
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)
] )]
3.4-2 Kernel
‣ Kernel( map ) | ( operation ) |
‣ Kernel2dMapping( 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) );;
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)
] )]