  
  [1X3 [33X[0;0Y2d-mappings[133X[101X
  
  
  [1X3.1 [33X[0;0YMorphisms of 2-dimensional groups[133X[101X
  
  [33X[0;0YThis    chapter   describes   morphisms   of   (pre-)crossed   modules   and
  (pre-)cat1-groups.[133X
  
  [1X3.1-1 Source[101X
  
  [33X[1;0Y[29X[2XSource[102X( [3Xmap[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRange[102X( [3Xmap[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XSourceHom[102X( [3Xmap[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRangeHom[102X( [3Xmap[103X ) [32X attribute[133X
  
  [33X[0;0YMorphisms of [13X2-dimensional groups[113X are implemented as [13X2-dimensional mappings[113X.
  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 [10Xfail[110X when invalid data is supplied.[133X
  
  
  [1X3.2 [33X[0;0YMorphisms of pre-crossed modules[133X[101X
  
  [1X3.2-1 IsXModMorphism[101X
  
  [33X[1;0Y[29X[2XIsXModMorphism[102X( [3Xmap[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsPreXModMorphism[102X( [3Xmap[103X ) [32X property[133X
  
  [33X[0;0YA  morphism  between two pre-crossed modules [22XcalX_1 = (∂_1 : S_1 -> R_1)[122X and
  [22XcalX_2  =  (∂_2 : S_2 -> R_2)[122X is a pair [22X(σ, ρ)[122X, where [22Xσ : S_1 -> S_2[122X and [22Xρ :
  R_1  -> R_2[122X commute with the two boundary maps and are morphisms for the two
  actions:[133X
  
  
  [24X[33X[0;6Y\partial_2  \circ  \sigma  ~=~ \rho \circ \partial_1, \qquad \sigma(s^r) ~=~
  (\sigma s)^{\rho r}.[133X
  
  [124X
  
  [33X[0;0YHere  [22Xσ[122X  is  the  [2XSourceHom[102X  ([14X3.1-1[114X)  and  [22Xρ[122X  is the [2XRangeHom[102X ([14X3.1-1[114X) of the
  morphism.  When [22XcalX_1 = calX_2[122X and [22Xσ, ρ[122X are automorphisms then [22X(σ, ρ)[122X is an
  automorphism  of [22XcalX_1[122X. The group of automorphisms is denoted by [22XAut(calX_1
  )[122X.[133X
  
  [1X3.2-2 IsInjective[101X
  
  [33X[1;0Y[29X[2XIsInjective[102X( [3Xmap[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsSurjective[102X( [3Xmap[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsSingleValued[102X( [3Xmap[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsTotal[102X( [3Xmap[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsBijective[102X( [3Xmap[103X ) [32X method[133X
  [33X[1;0Y[29X[2XIsEndo2DimensionalMapping[102X( [3Xmap[103X ) [32X property[133X
  
  [33X[0;0YThe  usual  properties  of  mappings  are  easily  checked.  It  is  usually
  sufficient  to  verify  that  both  the  [2XSourceHom[102X  ([14X3.1-1[114X) and the [2XRangeHom[102X
  ([14X3.1-1[114X) have the required property.[133X
  
  [1X3.2-3 XModMorphism[101X
  
  [33X[1;0Y[29X[2XXModMorphism[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XXModMorphismByGroupHomomorphisms[102X( [3XX1[103X, [3XX2[103X, [3Xsigma[103X, [3Xrho[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XPreXModMorphism[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPreXModMorphismByGroupHomomorphisms[102X( [3XP1[103X, [3XP2[103X, [3Xsigma[103X, [3Xrho[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XInclusionMorphism2DimensionalDomains[102X( [3XX1[103X, [3XS1[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XInnerAutomorphismXMod[102X( [3XX1[103X, [3Xr[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIdentityMapping[102X( [3XX1[103X ) [32X attribute[133X
  
  [33X[0;0YThese are the constructors for morphisms of pre-crossed and crossed modules.[133X
  
  [33X[0;0YIn  the  following example we construct a simple automorphism of the crossed
  module [10XX5[110X constructed in the previous chapter.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xsigma5 := GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ][127X[104X
    [4X[28X        [ (5,9,8,7,6) ] );;[128X[104X
    [4X[25Xgap>[125X [27Xrho5 := IdentityMapping( Range( X1 ) );[127X[104X
    [4X[28XIdentityMapping( PAut(c5) )[128X[104X
    [4X[25Xgap>[125X [27Xmor5 := XModMorphism( X5, X5, sigma5, rho5 );[127X[104X
    [4X[28X[[c5->Aut(c5))] => [c5->Aut(c5))]] [128X[104X
    [4X[25Xgap>[125X [27XDisplay( mor5 );[127X[104X
    [4X[28XMorphism of crossed modules :- [128X[104X
    [4X[28X: Source = [c5->Aut(c5)] with generating sets:[128X[104X
    [4X[28X  [ (5,6,7,8,9) ][128X[104X
    [4X[28X  [ GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ], [ (5,7,9,6,8) ] ) ][128X[104X
    [4X[28X: Range = Source[128X[104X
    [4X[28X: Source Homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (5,9,8,7,6) ][128X[104X
    [4X[28X: Range Homomorphism maps range generators to:[128X[104X
    [4X[28X  [ GroupHomomorphismByImages( c5, c5, [ (5,6,7,8,9) ], [ (5,7,9,6,8) ] ) ][128X[104X
    [4X[25Xgap>[125X [27XIsAutomorphism2DimensionalDomain( mor5 );[127X[104X
    [4X[28Xtrue [128X[104X
    [4X[25Xgap>[125X [27XOrder( mor5 );[127X[104X
    [4X[28X2[128X[104X
    [4X[25Xgap>[125X [27XRepresentationsOfObject( mor5 );[127X[104X
    [4X[28X[ "IsComponentObjectRep", "IsAttributeStoringRep", "Is2DimensionalMappingRep" ][128X[104X
    [4X[25Xgap>[125X [27XKnownPropertiesOfObject( mor5 );[127X[104X
    [4X[28X[ "CanEasilyCompareElements", "CanEasilySortElements", "IsTotal", [128X[104X
    [4X[28X  "IsSingleValued", "IsInjective", "IsSurjective", "RespectsMultiplication", [128X[104X
    [4X[28X  "IsPreXModMorphism", "IsXModMorphism", "IsEndomorphism2DimensionalDomain", [128X[104X
    [4X[28X  "IsAutomorphism2DimensionalDomain" ][128X[104X
    [4X[25Xgap>[125X [27XKnownAttributesOfObject( mor5 );[127X[104X
    [4X[28X[ "Name", "Order", "Range", "Source", "SourceHom", "RangeHom" ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.2-4 IsomorphismPerm2DimensionalGroup[101X
  
  [33X[1;0Y[29X[2XIsomorphismPerm2DimensionalGroup[102X( [3Xobj[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsomorphismPc2DimensionalGroup[102X( [3Xobj[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsomorphismByIsomorphisms[102X( [3XD[103X, [3Xlist[103X ) [32X operation[133X
  
  [33X[0;0YWhen  [22XcalD[122X  is a [22X2[122X-dimensional domain with source [22XS[122X and range [22XR[122X and [22Xσ : S ->
  S',~      ρ      :      R      ->      R'[122X     are     isomorphisms,     then
  [10XIsomorphismByIsomorphisms(D,[sigma,rho])[110X returns an isomorphism [22X(σ,ρ) : calD
  -> calD'[122X where [22XcalD'[122X has source [22XS'[122X and range [22XR'[122X. Be sure to test [10XIsBijective[110X
  for the two functions [22Xσ,ρ[122X before applying this operation.[133X
  
  [33X[0;0YUsing  [2XIsomorphismByIsomorphisms[102X  with a pair of isomorphisms obtained using
  [10XIsomorphismPermGroup[110X  or  [10XIsomorphismPcGroup[110X,  we  may  construct  a crossed
  module or a cat1-group of permutation groups or pc-groups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xq8 := SmallGroup(8,4);;   ## quaternion group [127X[104X
    [4X[25Xgap>[125X [27XXAq8 := XModByAutomorphismGroup( q8 );[127X[104X
    [4X[28X[Group( [ f1, f2, f3 ] )->Group( [ Pcgs([ f1, f2, f3 ]) -> [ f1*f2, f2, f3 ], [128X[104X
    [4X[28X  Pcgs([ f1, f2, f3 ]) -> [ f2, f1*f2, f3 ], [128X[104X
    [4X[28X  Pcgs([ f1, f2, f3 ]) -> [ f1*f3, f2, f3 ], [128X[104X
    [4X[28X  Pcgs([ f1, f2, f3 ]) -> [ f1, f2*f3, f3 ] ] )][128X[104X
    [4X[25Xgap>[125X [27Xiso := IsomorphismPerm2DimensionalGroup( XAq8 );;[127X[104X
    [4X[25Xgap>[125X [27XYAq8 := Image( iso );[127X[104X
    [4X[28X[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) [128X[104X
    [4X[28X ] )->Group( [ (1,3,4,6), (1,2,3)(4,5,6), (1,4)(3,6), (2,5)(3,6) ] )][128X[104X
    [4X[25Xgap>[125X [27Xs4 := SymmetricGroup(4);; [127X[104X
    [4X[25Xgap>[125X [27Xisos4 := IsomorphismGroups( Range(YAq8), s4 );;[127X[104X
    [4X[25Xgap>[125X [27Xid := IdentityMapping( Source( YAq8 ) );; [127X[104X
    [4X[25Xgap>[125X [27XIsBijective( id );;  IsBijective( isos4 );;[127X[104X
    [4X[25Xgap>[125X [27Xmor := IsomorphismByIsomorphisms( YAq8, [id,isos4] );;[127X[104X
    [4X[25Xgap>[125X [27XZAq8 := Image( mor );[127X[104X
    [4X[28X[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) [128X[104X
    [4X[28X ] )->SymmetricGroup( [ 1 .. 4 ] )][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.2-5 MorphismOfPullback[101X
  
  [33X[1;0Y[29X[2XMorphismOfPullback[102X( [3Xxmod[103X ) [32X attribute[133X
  
  [33X[0;0YLet  [22XcalX_1  =  (λ  : L -> N)[122X be the pullback crossed module obtained from a
  crossed  module  [22XcalX_0  = (μ : M -> P)[122X and a group homomorphism [22Xν : N -> P[122X.
  Then  the  associated  crossed  module  morphism is [22X(κ,ν) : calX_1 -> calX_0[122X
  where [22Xκ[122X is the projection from [22XL[122X to [22XM[122X.[133X
  
  
  [1X3.3 [33X[0;0YMorphisms of pre-cat1-groups[133X[101X
  
  [33X[0;0YA  morphism  of  pre-cat1-groups from [22XcalC_1 = (e_1;t_1,h_1 : G_1 -> R_1)[122X to
  [22XcalC_2  =  (e_2;t_2,h_2  : G_2 -> R_2)[122X is a pair [22X(γ, ρ)[122X where [22Xγ : G_1 -> G_2[122X
  and [22Xρ : R_1 -> R_2[122X are homomorphisms satisfying[133X
  
  
  [24X[33X[0;6Yh_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.[133X
  
  [124X
  
  [1X3.3-1 IsCat1GroupMorphism[101X
  
  [33X[1;0Y[29X[2XIsCat1GroupMorphism[102X( [3Xmap[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsPreCat1GroupMorphism[102X( [3Xmap[103X ) [32X property[133X
  [33X[1;0Y[29X[2XCat1GroupMorphism[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XCat1GroupMorphismByGroupHomomorphisms[102X( [3XC1[103X, [3XC2[103X, [3Xgamma[103X, [3Xrho[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XPreCat1GroupMorphism[102X( [3Xargs[103X ) [32X function[133X
  [33X[1;0Y[29X[2XPreCat1GroupMorphismByGroupHomomorphisms[102X( [3XP1[103X, [3XP2[103X, [3Xgamma[103X, [3Xrho[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XInclusionMorphism2DimensionalDomains[102X( [3XC1[103X, [3XS1[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XInnerAutomorphismCat1[102X( [3XC1[103X, [3Xr[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XIdentityMapping[102X( [3XC1[103X ) [32X attribute[133X
  
  [33X[0;0YFor  an  example we form a second cat1-group [10XC2=[g18=>s3a][110X, similar to [10XC1[110X in
  [14X2.4-1[114X, then construct an isomorphism [22X(γ,ρ)[122X between them.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xt3 := GroupHomomorphismByImages(g18,s3a,g18gens,[(),(7,8,9),(8,9)]);;     [127X[104X
    [4X[25Xgap>[125X [27Xe3 := GroupHomomorphismByImages(s3a,g18,s3agens,[(4,5,6),(2,3)(5,6)]);;   [127X[104X
    [4X[25Xgap>[125X [27XC3 := Cat1Group( t3, h1, e3 );; [127X[104X
    [4X[25Xgap>[125X [27Ximgamma := [ (4,5,6), (1,2,3), (2,3)(5,6) ];; [127X[104X
    [4X[25Xgap>[125X [27Xgamma := GroupHomomorphismByImages( g18, g18, g18gens, imgamma );;[127X[104X
    [4X[25Xgap>[125X [27Xrho := IdentityMapping( s3a );; [127X[104X
    [4X[25Xgap>[125X [27Xphi3 := Cat1GroupMorphism( C18, C3, gamma, rho );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( phi3 );;[127X[104X
    [4X[28XMorphism of cat1-groups :- [128X[104X
    [4X[28X: Source = [g18=>s3a] with generating sets:[128X[104X
    [4X[28X  [ (1,2,3), (4,5,6), (2,3)(5,6) ][128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X:  Range = [g18=>s3a] with generating sets:[128X[104X
    [4X[28X  [ (1,2,3), (4,5,6), (2,3)(5,6) ][128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X: Source Homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (4,5,6), (1,2,3), (2,3)(5,6) ][128X[104X
    [4X[28X: Range Homomorphism maps range generators to:[128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.3-2 Cat1GroupMorphismOfXModMorphism[101X
  
  [33X[1;0Y[29X[2XCat1GroupMorphismOfXModMorphism[102X( [3XIsXModMorphism[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XXModMorphismOfCat1GroupMorphism[102X( [3XIsCat1GroupMorphism[103X ) [32X attribute[133X
  
  [33X[0;0YIf  [22X(σ,ρ)  :  calX_1  ->  calX_2[122X  and  [22XcalC_1,calC_2[122X  are  the  cat[22X^1[122X-groups
  accociated  to  [22XcalX_1, calX_2[122X, then the associated morphism of cat[22X^1[122X-groups
  is [22X(γ,ρ)[122X where [22Xγ(r_1,s_1) = (ρ r_1, σ s_1)[122X.[133X
  
  [33X[0;0YSimilarly,  given  a  morphism  [22X(γ,ρ) : calC_1 -> calC_2[122X of cat1-groups, the
  associated  morphism  of crossed modules is [22X(σ,ρ) : calX_1 -> calX_2[122X where [22Xσ
  s_1 = γ(1,s_1)[122X. .[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xphi5 := Cat1GroupMorphismOfXModMorphism( mor5 );[127X[104X
    [4X[28X[[(Aut(c5) |X c5)=>Aut(c5)] => [(Aut(c5) |X c5)=>Aut(c5)]][128X[104X
    [4X[25Xgap>[125X [27Xmor3 := XModMorphismOfCat1GroupMorphism( phi3 );;[127X[104X
    [4X[25Xgap>[125X [27XDisplay( mor3 );[127X[104X
    [4X[28XMorphism of crossed modules :- [128X[104X
    [4X[28X: Source = xmod([g18=>s3a]) with generating sets:[128X[104X
    [4X[28X  [ (4,5,6) ][128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X:  Range = xmod([g18=>s3a]) with generating sets:[128X[104X
    [4X[28X  [ (1,2,3) ][128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X: Source Homomorphism maps source generators to:[128X[104X
    [4X[28X  [ (1,2,3) ][128X[104X
    [4X[28X: Range Homomorphism maps range generators to:[128X[104X
    [4X[28X  [ (7,8,9), (8,9) ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.3-3 IsomorphismPermObject[101X
  
  [33X[1;0Y[29X[2XIsomorphismPermObject[102X( [3Xobj[103X ) [32X function[133X
  [33X[1;0Y[29X[2XIsomorphismPerm2DimensionalGroup[102X( [3X2DimensionalGroup[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsomorphismFp2DimensionalGroup[102X( [3X2DimensionalGroup[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XIsomorphismPc2DimensionalGroup[102X( [3X2DimensionalGroup[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XRegularActionHomomorphism2DimensionalGroup[102X( [3X2DimensionalGroup[103X ) [32X attribute[133X
  
  [33X[0;0YThe         global        function        [10XIsomorphismPermObject[110X        calls
  [10XIsomorphismPerm2DimensionalGroup[110X,   which   constructs   a   morphism  whose
  [2XSourceHom[102X    ([14X3.1-1[114X)    and    [2XRangeHom[102X   ([14X3.1-1[114X)   are   calculated   using
  [10XIsomorphismPermGroup[110X on the source and range.[133X
  
  [33X[0;0YThe  global  function [10XRegularActionHomomorphism2DimensionalGroup[110X is similar,
  but uses [10XRegularActionHomomorphism[110X in place of [10XIsomorphismPermGroup[110X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xiso8 := IsomorphismPerm2DimensionalGroup( C8 );[127X[104X
    [4X[28X[[G8=>d12] => [..]][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.3-4 SmallerDegreePermutationRepresentation2DimensionalGroup[101X
  
  [33X[1;0Y[29X[2XSmallerDegreePermutationRepresentation2DimensionalGroup[102X( [3XPerm2DimensionalGroup[103X ) [32X attribute[133X
  
  [33X[0;0YThe   attribute  [10XSmallerDegreePermutationRepresentation2DimensionalGroup[110X  is
  obtained by calling [10XSmallerDegreePermutationRepresentation[110X on the source and
  range to obtain the an isomorphism for the pre-xmod or pre-cat[22X^1[122X-group.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XG := Group( (1,2,3,4)(5,6,7,8) );; [127X[104X
    [4X[25Xgap>[125X [27XH := Subgroup( G, [ (1,3)(2,4)(5,7)(6,8) ] );;[127X[104X
    [4X[25Xgap>[125X [27XXG := XModByNormalSubgroup( G, H );[127X[104X
    [4X[28X[Group( [ (1,3)(2,4)(5,7)(6,8) ] )->Group( [ (1,2,3,4)(5,6,7,8) ] )][128X[104X
    [4X[25Xgap>[125X [27Xsdpr := SmallerDegreePermutationRepresentation2DimensionalGroup( XG );; [127X[104X
    [4X[25Xgap>[125X [27XRange( sdpr );[127X[104X
    [4X[28X[Group( [ (1,2) ] )->Group( [ (1,2,3,4) ] )][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X3.4 [33X[0;0YOperations on morphisms[133X[101X
  
  [1X3.4-1 CompositionMorphism[101X
  
  [33X[1;0Y[29X[2XCompositionMorphism[102X( [3Xmap2[103X, [3Xmap1[103X ) [32X operation[133X
  
  [33X[0;0YComposition  of  morphisms  (written  [10X(<map1> * <map2>)[110X when maps act on the
  right) calls the [2XCompositionMorphism[102X function for maps (acting on the left),
  applied to the appropriate type of 2d-mapping.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XH8 := Subgroup(G8,[G8.3,G8.4,G8.6,G8.7]);  SetName( H8, "H8" );[127X[104X
    [4X[28XGroup([ f3, f4, f6, f7 ])[128X[104X
    [4X[25Xgap>[125X [27Xc6 := Subgroup( d12, [b,c] );  SetName( c6, "c6" );[127X[104X
    [4X[28XGroup([ f2, f3 ])[128X[104X
    [4X[25Xgap>[125X [27XSC8 := Sub2DimensionalGroup( C8, H8, c6 );[127X[104X
    [4X[28X[H8=>c6][128X[104X
    [4X[25Xgap>[125X [27XIsCat1Group( SC8 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27Xinc8 := InclusionMorphism2DimensionalDomains( C8, SC8 );[127X[104X
    [4X[28X[[H8=>c6] => [G8=>d12]][128X[104X
    [4X[25Xgap>[125X [27XCompositionMorphism( iso8, inc );                  [127X[104X
    [4X[28X[[H8=>c6] => P[G8=>d12]][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.4-2 Kernel[101X
  
  [33X[1;0Y[29X[2XKernel[102X( [3Xmap[103X ) [32X operation[133X
  [33X[1;0Y[29X[2XKernel2DimensionalMapping[102X( [3Xmap[103X ) [32X attribute[133X
  
  [33X[0;0YThe  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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xc2 := Group( (19,20) );                                    [127X[104X
    [4X[28XGroup([ (19,20) ])[128X[104X
    [4X[25Xgap>[125X [27XX0 := XModByNormalSubgroup( c2, c2 );  SetName( X0, "X0" );[127X[104X
    [4X[28X[Group( [ (19,20) ] )->Group( [ (19,20) ] )][128X[104X
    [4X[25Xgap>[125X [27XSX8 := Source( X8 );;[127X[104X
    [4X[25Xgap>[125X [27XgenSX8 := GeneratorsOfGroup( SX8 ); [127X[104X
    [4X[28X[ f1, f4, f5, f7 ][128X[104X
    [4X[25Xgap>[125X [27Xsigma0 := GroupHomomorphismByImages(SX8,c2,genSX8,[(19,20),(),(),()]);[127X[104X
    [4X[28X[ f1, f4, f5, f7 ] -> [ (19,20), (), (), () ][128X[104X
    [4X[25Xgap>[125X [27Xrho0 := GroupHomomorphismByImages(d12,c2,[a1,a2,a3],[(19,20),(),()]);[127X[104X
    [4X[28X[ f1, f2, f3 ] -> [ (19,20), (), () ][128X[104X
    [4X[25Xgap>[125X [27Xmor0 := XModMorphism( X8, X0, sigma0, rho0 );;           [127X[104X
    [4X[25Xgap>[125X [27XK0 := Kernel( mor0 );;[127X[104X
    [4X[25Xgap>[125X [27XStructureDescription( K0 );[127X[104X
    [4X[28X[ "C12", "C6" ][128X[104X
  [4X[32X[104X
  
  
  [1X3.5 [33X[0;0YQuasi-isomorphisms[133X[101X
  
  [33X[0;0YA morphism of crossed modules [22Xϕ : calX = (∂ : S -> R) -> calX' = (∂' : S' ->
  R')[122X  induces homomorphisms [22Xπ_1(ϕ) : π_1(∂) -> π_1(∂')[122X and [22Xπ_2(ϕ) : π_2(∂) ->
  π_2(∂')[122X.  A  morphism [22Xϕ[122X is a [13Xquasi-isomorphism[113X if both [22Xπ_1(ϕ)[122X and [22Xπ_2(ϕ)[122X are
  isomorphisms.  Two  crossed modules [22XcalX,calX'[122X are [13Xquasi-isomorphic[113X is there
  exists a sequence of quasi-isomorphisms[133X
  
  
  [24X[33X[0;6Y\calX   ~=~  \calX_1  ~\leftrightarrow~  \calX_2  ~\leftrightarrow~  \calX_3
  ~\leftrightarrow~ \cdots ~\longleftrightarrow~ \calX_{\ell} ~=~ \calX'[133X
  
  [124X
  
  [33X[0;0Yof  length  [22Xℓ-1[122X.  Here [22XcalX_i ↔ calX_j[122X means that [13Xeither[113X [22XcalX_i -> calX_j[122X [13Xor[113X
  [22XcalX_j  ->  calX_i[122X.  When  [22XcalX,calX'[122X  are  quasi-isomorphic we write [22XcalX ≃
  calX'[122X.  Clearly  [22X≃[122X  is  an  equivalence relation. Mac\ Lane and Whitehead in
  [MLW50]  showed  that  there is a one-to-one correspondence between homotopy
  [22X2[122X-types and quasi-isomorphism classes. We say that [22XcalX[122X represents a [13Xtrivial[113X
  quasi-isomorphism class if [22X∂=0[122X.[133X
  
  [33X[0;0YTwo cat[22X^1[122X-groups are quasi-isomorphic if their corresponding crossed modules
  are.   The   procedure   for   constructing   a   representative   for   the
  quasi-isomorphism  class of a cat[22X^1[122X-group [22XcalC[122X, as described by Ellis and Le
  in  [EL14],  is  as  follows.  The  [13Xquotient process[113X consists of finding all
  normal  sub-crossed  modules  [22XcalN[122X  of the crossed module [22XcalX[122X associated to
  [22XcalC[122X;  constructing  the  quotient  crossed  module  morphisms  [22Xν  : calX ->
  calX/calN[122X; and converting these [22Xν[122X to morphisms from [22XcalC[122X.[133X
  
  [33X[0;0YThe  [13Xsub-crossed  module process[113X consists of finding all sub-crossed modules
  [22XcalS[122X   of   [22XcalX[122X   such   that   the  inclusion  [22Xι  :  calS  ->  calX[122X  is  a
  quasi-isomorphism; then converting [22Xι[122X to a morphism to [22XcalC[122X.[133X
  
  [33X[0;0YThe  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.[133X
  
  [33X[0;0YIt may happen that [22XcalC_1 ≃ calC_2[122X without either having a quasi-isomorphism
  reduction.  In  this  case  it  is  necessary to find a suitable [22XcalC_3[122X with
  reductions  [22XcalC_3 -> calC_1[122X and [22XcalC_3 -> calC_2[122X. No such automated process
  is available in [5XXMod[105X.[133X
  
  [33X[0;0YFunctions  for  these computations were first implemented in the package [5XHAP[105X
  and   are   available   as   [10XQuotientQuasiIsomorph[110X,   [10XSubQuasiIsomorph[110X   and
  [10XQuasiIsomorph[110X.[133X
  
  [1X3.5-1 QuotientQuasiIsomorphism[101X
  
  [33X[1;0Y[29X[2XQuotientQuasiIsomorphism[102X( [3Xcat1[103X, [3Xbool[103X ) [32X operation[133X
  
  [33X[0;0YThis  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.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XC18a := Cat1Select( 18, 4, 4 );;          [127X[104X
    [4X[25Xgap>[125X [27XStructureDescription( C18a );             [127X[104X
    [4X[28X[ "(C3 x C3) : C2", "S3" ][128X[104X
    [4X[25Xgap>[125X [27XQuotientQuasiIsomorphism( C18a, true );   [127X[104X
    [4X[28Xquo: [ f2 ][ f3 ], [ "1", "C2" ][128X[104X
    [4X[28X[ [ 2, 1 ], [ 2, 1 ] ], [ 2, 1, 1 ][128X[104X
    [4X[28X[ [ 2, 1, 1 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.5-2 SubQuasiIsomorphism[101X
  
  [33X[1;0Y[29X[2XSubQuasiIsomorphism[102X( [3Xcat1[103X, [3Xbool[103X ) [32X operation[133X
  
  [33X[0;0YThis function implements the sub-crossed module process.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSubQuasiIsomorphism( C18a, false );[127X[104X
    [4X[28X[ [ 2, 1, 1 ], [ 2, 1, 1 ], [ 2, 1, 1 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X3.5-3 QuasiIsomorphism[101X
  
  [33X[1;0Y[29X[2XQuasiIsomorphism[102X( [3Xcat1[103X, [3Xlist[103X, [3Xbool[103X ) [32X operation[133X
  
  [33X[0;0YThis function implements the general process.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XL18a := QuasiIsomorphism( C18a, [18,4,4], false );[127X[104X
    [4X[28X[ [ 2, 1, 1 ], [ 18, 4, 4 ] ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThe  logs  above  show that [10XC18a[110X has just one normal sub-crossed module [22XcalN[122X
  leading  to  a  reduction, and that there are three sub-crossed modules [22XcalS[122X
  all   giving   the   same   reduction.   The  conclusion  is  that  [10XC18a[110X  is
  quasi-isomorphic to the identity cat1-group on the cyclic group of order [22X2[122X.[133X
  
