  
  [1X10 [33X[0;0YCrossed modules of groupoids[133X[101X
  
  [33X[0;0YThe material documented in this chapter is experimental, and is likely to be
  changed in due course.[133X
  
  
  [1X10.1 [33X[0;0YConstructions for crossed modules of groupoids[133X[101X
  
  [33X[0;0YA typical example of a crossed module [22XcalX[122X over a groupoid has for its range
  a  connected  groupoid.  This is a direct product of a group with a complete
  graph,  and  we  call  the  vertices of the graph the [13Xobjects[113X of the crossed
  module.  The  source  of [22XcalX[122X is a groupoid, with the same objects, which is
  either  discrete or connected. The boundary morphism is constant on objects.
  For details and other references see [AW10].[133X
  
  [1X10.1-1 PreXModWithObjectsByBoundaryAndAction[101X
  
  [33X[1;0Y[29X[2XPreXModWithObjectsByBoundaryAndAction[102X( [3Xbdy[103X, [3Xact[103X ) [32X operation[133X
  
  [33X[0;0YThis     is     the     groupoid    generalisation    of    the    operation
  [10XPreXModByBoundaryAndAction[110X.[133X
  
  [1X10.1-2 SinglePiecePreXModWithObjects[101X
  
  [33X[1;0Y[29X[2XSinglePiecePreXModWithObjects[102X( [3Xpxmod[103X, [3Xobs[103X, [3Xisdisc[103X ) [32X operation[133X
  
  [33X[0;0YAt  present the experimental operation [10XSinglePiecePreXModWithObjects[110X accepts
  a  precrossed module [10Xpxmod[110X, a set of objects [10Xobs[110X, and a boolean [10Xisdisc[110X which
  is  [9Xtrue[109X when the source groupoid is homogeneous and discrete and [9Xfalse[109X when
  the  source  groupoid  is  connected. Other operations will be added as time
  permits.[133X
  
  [33X[0;0YIn the example the crossed module [10XDX4[110X has discrete source, while the crossed
  module  [10XCX4[110X has connected source. (Calculations with [10XDX4[110X temporarily removed
  while  this function is being developed.) These are groupoid generalisations
  of  [2XXModByNormalSubgroup[102X  ([14X2.1-2[114X)  and  the  example  [10XX4[110X  in  [2XNormalSubXMods[102X
  ([14X2.2-2[114X).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27Xs4 := Group( (1,2,3,4), (3,4) );; [127X[104X
    [4X[25Xgap>[125X [27XSetName( s4, "s4" );[127X[104X
    [4X[25Xgap>[125X [27Xa4 := Subgroup( s4, [ (1,2,3), (2,3,4) ] );;[127X[104X
    [4X[25Xgap>[125X [27XSetName( a4, "a4" );[127X[104X
    [4X[25Xgap>[125X [27XX4 := XModByNormalSubgroup( s4, a4 );; [127X[104X
    [4X[25Xgap>[125X [27XCX4 := SinglePiecePreXModWithObjects( X4, [-6,-5,-4], false );[127X[104X
    [4X[28Xsingle piece precrossed module with objects[128X[104X
    [4X[28X  source groupoid:[128X[104X
    [4X[28X    single piece groupoid: < a4, [ -6, -5, -4 ] >[128X[104X
    [4X[28X  and range groupoid:[128X[104X
    [4X[28X    single piece groupoid: < s4, [ -6, -5, -4 ] >[128X[104X
    [4X[25Xgap>[125X [27XSetName( CX4, "CX4" );[127X[104X
    [4X[25Xgap>[125X [27XCa4 := Source( CX4 );;  SetName( Ca4, "Ca4" );[127X[104X
    [4X[25Xgap>[125X [27XCs4 := Range( CX4 );;  SetName( Cs4, "Cs4" );[127X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X10.1-3 IsXModWithObjects[101X
  
  [33X[1;0Y[29X[2XIsXModWithObjects[102X( [3Xpxmod[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsPreXModWithObjects[102X( [3Xpxmod[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsDirectProductWithCompleteDigraphDomain[102X( [3Xpxmod[103X ) [32X property[133X
  
  [33X[0;0YThe     precrossed     module     [10XDX4[110X     belongs     to     the    category
  [10XIs2DimensionalGroupWithObjects[110X and is, of course, a crossed module.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XSet( KnownPropertiesOfObject( CX4 ) ); [127X[104X
    [4X[28X[ "CanEasilyCompareElements", "CanEasilySortElements", "IsAssociative", [128X[104X
    [4X[28X  "IsDuplicateFree", "IsGeneratorsOfSemigroup", "IsPreXModWithObjects", [128X[104X
    [4X[28X  "IsSinglePieceDomain", "IsXModWithObjects" ][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X10.1-4 IsPermPreXModWithObjects[101X
  
  [33X[1;0Y[29X[2XIsPermPreXModWithObjects[102X( [3Xpxmod[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsPcPreXModWithObjects[102X( [3Xpxmod[103X ) [32X property[133X
  [33X[1;0Y[29X[2XIsFpPreXModWithObjects[102X( [3Xpxmod[103X ) [32X property[133X
  
  [33X[0;0YTo test these properties we test the precrossed modules from which they were
  constructed.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XIsPermPreXModWithObjects( CX4 );[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsPcPreXModWithObjects( CX4 );  [127X[104X
    [4X[28Xfalse[128X[104X
    [4X[25Xgap>[125X [27XIsFpPreXModWithObjects( CX4 );[127X[104X
    [4X[28Xfalse[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [1X10.1-5 Root2dGroup[101X
  
  [33X[1;0Y[29X[2XRoot2dGroup[102X( [3Xpxmod[103X ) [32X attribute[133X
  [33X[1;0Y[29X[2XXModAction[102X( [3Xpxmod[103X ) [32X attribute[133X
  
  [33X[0;0YThe  attributes  of  a  precrossed  module with objects include the standard
  [10XSource[110X;  [10XRange[110X;  [2XBoundary[102X ([14X2.1-9[114X); and [2XXModAction[102X ([14X2.1-9[114X) as with precrossed
  modules  of  groups.  There is also [10XObjectList[110X, as in the [5Xgroupoids[105X package.
  Additionally  there is [10XRoot2dGroup[110X which is the underlying precrossed module
  used in the construction.[133X
  
  [33X[0;0YNote that [10XXModAction[110X is now a groupoid homomorphism from the source groupoid
  to a one-object groupoid (with object [10X0[110X) where the group is the automorphism
  group of the range groupoid.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[28X[128X[104X
    [4X[25Xgap>[125X [27XRoot2dGroup( CX4 ); [127X[104X
    [4X[28X[a4->s4][128X[104X
    [4X[25Xgap>[125X [27XactC := XModAction( CX4 );; [127X[104X
    [4X[25Xgap>[125X [27XSize( Range( actC ) ); [127X[104X
    [4X[28X20736[128X[104X
    [4X[25Xgap>[125X [27Xr1 := Arrow( Cs4, (1,2,3,4), -4, -5 );; [127X[104X
    [4X[25Xgap>[125X [27XImageElm( actC, r1 );            [127X[104X
    [4X[28X[groupoid homomorphism : Ca4 -> Ca4[128X[104X
    [4X[28X[ [ [(1,2,3) : -6 -> -6], [(2,3,4) : -6 -> -6], [()  : -6 -> -5], [128X[104X
    [4X[28X      [() : -6 -> -4] ], [128X[104X
    [4X[28X  [ [(2,3,4) : -4 -> -4], [(1,3,4) : -4 -> -4], [() : -4 -> -6], [128X[104X
    [4X[28X      [() : -4 -> -5] ] ] : 0 -> 0][128X[104X
    [4X[25Xgap>[125X [27Xs1 := Arrow( Ca4, (1,2,4), -5, -5 );;[127X[104X
    [4X[25Xgap>[125X [27X##  calculate s1^r1 [127X[104X
    [4X[25Xgap>[125X [27Xims1 := ImageElmXModAction( CX4, s1, r1 );[127X[104X
    [4X[28X[(1,2,3) : -6 -> -6][128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  [33X[0;0YThere is much more to be done with these constructions.[133X
  
