  
  [1m[4m[31m3. 2d-mappings[0m
  
  
  [1m[4m[31m3.1 Morphisms of 2d-objects[0m
  
  This    chapter   describes   morphisms   of   (pre-)crossed   modules   and
  (pre-)cat1-groups.
  
  [1m[4m[31m3.1-1 Source[0m
  
  [1m[34m> Source( [0m[22m[34mmap[0m[1m[34m ) ___________________________________________________[0mattribute
  [1m[34m> Range( [0m[22m[34mmap[0m[1m[34m ) ____________________________________________________[0mattribute
  [1m[34m> SourceHom( [0m[22m[34mmap[0m[1m[34m ) ________________________________________________[0mattribute
  [1m[34m> RangeHom( [0m[22m[34mmap[0m[1m[34m ) _________________________________________________[0mattribute
  
  Morphisms  of  [22m[32m2dObjects[0m are implemented as [22m[32m2dMappings[0m. 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 [22m[32mfail[0m when invalid data is supplied.
  
  
  [1m[4m[31m3.2 Morphisms of pre-crossed modules[0m
  
  [1m[4m[31m3.2-1 IsXModMorphism[0m
  
  [1m[34m> IsXModMorphism( [0m[22m[34mmap[0m[1m[34m ) ____________________________________________[0mproperty
  [1m[34m> IsCat1Morphism( [0m[22m[34mmap[0m[1m[34m ) ____________________________________________[0mproperty
  [1m[34m> IsPreXModMorphism( [0m[22m[34mmap[0m[1m[34m ) _________________________________________[0mproperty
  [1m[34m> IsPreCat1Morphism( [0m[22m[34mmap[0m[1m[34m ) _________________________________________[0mproperty
  
  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:
  
  \[
       \partial_2 \sigma = \rho \partial_1, \qquad \sigma(s^r) = (\sigma
       s)^{\rho r}.
  \]
  
  Thus   $\sigma$   is   the  [22m[32mSourceHom[0m  and  $\rho$  is  the  [22m[32mRangeHom[0m.  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 ).$
  
  [1m[4m[31m3.2-2 IsInjective[0m
  
  [1m[34m> IsInjective( [0m[22m[34mmap[0m[1m[34m ) _______________________________________________[0mproperty
  [1m[34m> IsSurjective( [0m[22m[34mmap[0m[1m[34m ) ______________________________________________[0mproperty
  [1m[34m> IsSingleValued( [0m[22m[34mmap[0m[1m[34m ) ____________________________________________[0mproperty
  [1m[34m> IsTotal( [0m[22m[34mmap[0m[1m[34m ) ___________________________________________________[0mproperty
  [1m[34m> IsBijective( [0m[22m[34mmap[0m[1m[34m ) _______________________________________________[0mproperty
  [1m[34m> IsEndomorphism2dObject( [0m[22m[34mmap[0m[1m[34m ) ____________________________________[0mproperty
  [1m[34m> IsAutomorphism2dObject( [0m[22m[34mmap[0m[1m[34m ) ____________________________________[0mproperty
  
  The  usual  properties  of  mappings  are  easily  checked.  It  is  usually
  sufficient  to  verify  that  both  the  [22m[32mSourceHom[0m and the [22m[32mRangeHom[0m have the
  required property.
  
  [1m[4m[31m3.2-3 XModMorphism[0m
  
  [1m[34m> XModMorphism( [0m[22m[34margs[0m[1m[34m ) _____________________________________________[0mfunction
  [1m[34m> XModMorphismByHoms( [0m[22m[34mX1, X2, sigma, rho[0m[1m[34m ) ________________________[0moperation
  [1m[34m> PreXModMorphism( [0m[22m[34margs[0m[1m[34m ) __________________________________________[0mfunction
  [1m[34m> PreXModMorphismByHoms( [0m[22m[34mP1, P2, sigma, rho[0m[1m[34m ) _____________________[0moperation
  [1m[34m> InclusionMorphism2dObjects( [0m[22m[34mX1, S1[0m[1m[34m ) ____________________________[0moperation
  [1m[34m> InnerAutomorphismXMod( [0m[22m[34mX1, r[0m[1m[34m ) __________________________________[0moperation
  [1m[34m> IdentityMapping( [0m[22m[34mX1[0m[1m[34m ) ___________________________________________[0mattribute
  [1m[34m> IsomorphismPermObject( [0m[22m[34mobj[0m[1m[34m ) _____________________________________[0mfunction
  
  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 [22m[32mX1[0m constructed in the previous chapter.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> sigma1 := GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ][0m
    [22m[35m        [ (5,9,8,7,6) ] );;[0m
    [22m[35mgap> rho1 := IdentityMapping( Range( X1 ) );[0m
    [22m[35mIdentityMapping( PAut(c5) )[0m
    [22m[35mgap> mor1 := XModMorphism( X1, X1, sigma1, rho1 );[0m
    [22m[35m[[c5->PAut(c5))] => [c5->PAut(c5))]] [0m
    [22m[35mgap> Display( mor1 );[0m
    [22m[35mMorphism of crossed modules :-[0m
    [22m[35m: Source = [c5->PAut(c5))] with generating sets:[0m
    [22m[35m  [ (5,6,7,8,9) ][0m
    [22m[35m  [ (1,2,4,3) ][0m
    [22m[35m: Range = Source[0m
    [22m[35m: Source Homomorphism maps source generators to:[0m
    [22m[35m  [ (5,9,8,7,6) ][0m
    [22m[35m: Range Homomorphism maps range generators to:[0m
    [22m[35m  [ (1,2,4,3) ][0m
    [22m[35mgap> IsAutomorphism2dObject( mor1 );[0m
    [22m[35mtrue [0m
    [22m[35mgap> Print( RepresentationsOfObject(mor1), "\n" );[0m
    [22m[35m[ "IsComponentObjectRep", "IsAttributeStoringRep", "Is2dMappingRep" ][0m
    [22m[35mgap> Print( KnownPropertiesOfObject(mor1), "\n" );[0m
    [22m[35m[ "IsTotal", "IsSingleValued", "IsInjective", "IsSurjective", "Is2dMapping",[0m
    [22m[35m  "IsPreXModMorphism", "IsXModMorphism", "IsEndomorphism2dObject",[0m
    [22m[35m  "IsAutomorphism2dObject" ][0m
    [22m[35mgap> Print( KnownAttributesOfObject(mor1), "\n" );[0m
    [22m[35m[ "Name", "Range", "Source", "SourceHom", "RangeHom" ][0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  
  [1m[4m[31m3.3 Morphisms of pre-cat1-groups[0m
  
  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
  
  \[
       h_2 \gamma = \rho h_1~, \qquad % t_2 \gamma = \rho t_1~, \qquad %
       e_2 \rho = \gamma e_1~\.
  \]
  
  [1m[4m[31m3.3-1 Cat1Morphism[0m
  
  [1m[34m> Cat1Morphism( [0m[22m[34margs[0m[1m[34m ) _____________________________________________[0mfunction
  [1m[34m> Cat1MorphismByHoms( [0m[22m[34mC1, C2, gamma, rho[0m[1m[34m ) ________________________[0moperation
  [1m[34m> PreCat1Morphism( [0m[22m[34margs[0m[1m[34m ) __________________________________________[0mfunction
  [1m[34m> PreCat1MorphismByHoms( [0m[22m[34mP1, P2, gamma, rho[0m[1m[34m ) _____________________[0moperation
  [1m[34m> InclusionMorphism2dObjects( [0m[22m[34mC1, S1[0m[1m[34m ) ____________________________[0moperation
  [1m[34m> InnerAutomorphismCat1( [0m[22m[34mC1, r[0m[1m[34m ) __________________________________[0moperation
  [1m[34m> IdentityMapping( [0m[22m[34mC1[0m[1m[34m ) ___________________________________________[0mattribute
  [1m[34m> IsmorphismPermObject( [0m[22m[34mobj[0m[1m[34m ) ______________________________________[0mfunction
  [1m[34m> SmallerDegreePerm2dObject( [0m[22m[34mobj[0m[1m[34m ) _________________________________[0mfunction
  
  The  global  function  [22m[32mIsomorphismPermObject[0m  calls  [22m[32mIsomorphismPermPreCat1[0m,
  which  constructs  a  morphism  whose  [22m[32mSourceHom[0m and [22m[32mRangeHom[0m are calculated
  using    [22m[32mIsomorphismPermGroup[0m   on   the   source   and   range.   Similarly
  [22m[32mSmallerDegreePermutationRepresentation[0m  is  used on the two groups to obtain
  [22m[32mSmallerDegreePerm2dObject[0m. Names are assigned automatically.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> iso2 := IsomorphismPermObject( C2 );[0m
    [22m[35m[[s3c4=>s3] => [Ps3c4=>Ps3]][0m
    [22m[35mgap> Display( iso2 );[0m
    [22m[35mMorphism of cat1-groups :-[0m
    [22m[35m: Source = [s3c4=>s3] with generating sets:[0m
    [22m[35m  [ f1, f2, f3, f4 ][0m
    [22m[35m  [ f1, f2 ][0m
    [22m[35m:  Range = [Ps3c4=>Ps3] with generating sets:[0m
    [22m[35m  [ ( 5, 9)( 6,10)( 7,11)( 8,12), ( 1, 5, 9)( 2, 6,10)( 3, 7,11)( 4, 8,12),[0m
    [22m[35m  ( 1, 3, 2, 4)( 5, 7, 6, 8)( 9,11,10,12), ( 1, 2)( 3, 4)( 5, 6)( 7, 8)( 9,10)[0m
    [22m[35m    (11,12) ][0m
    [22m[35m  [ (2,3), (1,2,3) ][0m
    [22m[35m: Source Homomorphism maps source generators to:[0m
    [22m[35m  [ ( 5, 9)( 6,10)( 7,11)( 8,12), ( 1, 5, 9)( 2, 6,10)( 3, 7,11)( 4, 8,12),[0m
    [22m[35m  ( 1, 3, 2, 4)( 5, 7, 6, 8)( 9,11,10,12), ( 1, 2)( 3, 4)( 5, 6)( 7, 8)( 9,10)[0m
    [22m[35m    (11,12) ][0m
    [22m[35m: Range Homomorphism maps range generators to:[0m
    [22m[35m  [ (2,3), (1,2,3) ][0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  
  [1m[4m[31m3.4 Operations on morphisms[0m
  
  [1m[4m[31m3.4-1 Order[0m
  
  [1m[34m> Order( [0m[22m[34mauto[0m[1m[34m ) ___________________________________________________[0mattribute
  [1m[34m> CompositionMorphism( [0m[22m[34mmap2, map1[0m[1m[34m ) _______________________________[0moperation
  
  Composition  of  morphisms, written [22m[32m(<map1> * <map2>)[0m for maps acting of the
  right,  calls  the [22m[32mCompositionMorphism[0m function for maps acting on the left,
  applied to the appropriate type of 2d-mapping.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> Order( mor1 );[0m
    [22m[35m2[0m
    [22m[35mgap> GeneratorsOfGroup( d16 );[0m
    [22m[35m[ (11,12,13,14,15,16,17,18), (12,18)(13,17)(14,16) ][0m
    [22m[35mgap> d8 := Subgroup( d16, [ c^2, d ] );;[0m
    [22m[35mgap> c4 := Subgroup( d8, [ c^2 ] );;[0m
    [22m[35mgap> SetName( d8, "d8" );  SetName( c4, "c4" );[0m
    [22m[35mgap> X16 := XModByNormalSubgroup( d16, d8 );[0m
    [22m[35m[d8->d16][0m
    [22m[35mgap> X8 := XModByNormalSubgroup( d8, c4 );[0m
    [22m[35m[c4->d8][0m
    [22m[35mgap> IsSubXMod( X16, X8 );[0m
    [22m[35mtrue[0m
    [22m[35mgap> incd8 := InclusionMorphism2dObjects( X16, X8 );[0m
    [22m[35m[[c4->d8] => [d8->d16]][0m
    [22m[35mgap> rho := GroupHomomorphismByImages( d16, d16, [c,d], [c,d^(c^2)] );;[0m
    [22m[35mgap> sigma := GroupHomomorphismByImages( d8, d8, [c^2,d], [c^2,d^(c^2)] );;[0m
    [22m[35mgap> mor := XModMorphismByHoms( X16, X16, sigma, rho );[0m
    [22m[35m[[d8->d16] => [d8->d16]][0m
    [22m[35mgap> comp := incd8 * mor;[0m
    [22m[35m[[c4->d8] => [d8->d16]][0m
    [22m[35mgap> comp = CompositionMorphism( mor, incd8 );[0m
    [22m[35mtrue[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  [1m[4m[31m3.4-2 Kernel[0m
  
  [1m[34m> Kernel( [0m[22m[34mmap[0m[1m[34m ) ___________________________________________________[0moperation
  [1m[34m> Kernel2dMapping( [0m[22m[34mmap[0m[1m[34m ) __________________________________________[0mattribute
  
  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.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> c2 := Group( (19,20) );;[0m
    [22m[35mgap> i2 := Subgroup( c2, [()] );;[0m
    [22m[35mgap> X9 := XModByNormalSubgroup( c2, i2 );;[0m
    [22m[35mgap> sigma9 := GroupHomomorphismByImages( c4, i2, [c^2], [()] );;[0m
    [22m[35mgap> rho9 := GroupHomomorphismByImages( d8, c2, [c^2,d], [(),(19,20)] );;[0m
    [22m[35mgap> mor9 := XModMorphism( X8, X9, sigma9, rho9 );[0m
    [22m[35m[[c4->d8] => [..]][0m
    [22m[35mgap> K9 := Kernel( mor9 );[0m
    [22m[35m[Group( [ (11,13,15,17)(12,14,16,18) ] )->Group( [ (11,13,15,17)(12,14,16,18)[0m
    [22m[35m ] )][0m
  [22m[35m------------------------------------------------------------------[0m
  
