The material documented in this chapter is experimental, and is likely to be changed very soon.

A typical example of a crossed module mathcalX 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 *objects* of the crossed module. The source of mathcalX 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].

`‣ SinglePiecePreXModWithObjects` ( pxmod, obs, isdisc ) | ( operation ) |

At present the experimental operation `SinglePiecePreXModWithObjects`

accepts a precrossed module `pxmod`

, a set of objects `obs`

, and a boolean `isdisc`

which is `true`

when the source groupoid is homogeneous and discrete and `false`

when the source groupoid is connected. Other operations will be added as time permits.

In the example the crossed module `DX4`

has discrete source, and is a groupoid equivalent of `XModByNormalSubgroup`

.

gap> s4 := Group( (1,2,3,4), (3,4) );; gap> SetName( s4, "s4" ); gap> a4 := Subgroup( s4, [ (1,2,3), (2,3,4) ] );; gap> SetName( a4, "a4" ); gap> X4 := XModByNormalSubgroup( s4, a4 );; gap> DX4 := SinglePiecePreXModWithObjects( X4, [-9,-8,-7], false ); precrossed module with source groupoid: single piece groupoid: < a4, [ -9, -8, -7 ] > and range groupoid: single piece groupoid: < s4, [ -9, -8, -7 ] > gap> Ga4 := Source( DX4 );; gap> Gs4 := Range( DX4 );;

`‣ IsXModWithObjects` ( pxmod ) | ( property ) |

`‣ IsPreXModWithObjects` ( pxmod ) | ( property ) |

`‣ IsDirectProductWithCompleteDigraphDomain` ( pxmod ) | ( property ) |

The precrossed module `DX4`

belongs to the category `Is2DimensionalGroupWithObjects`

and is, of course, a crossed module.

gap> IsXModWithObjects( DX4 ); true gap> KnownPropertiesOfObject( DX4 ); [ "CanEasilyCompareElements", "CanEasilySortElements", "IsDuplicateFree", "IsGeneratorsOfSemigroup", "IsSinglePieceDomain", "IsDirectProductWithCompleteDigraphDomain", "IsPreXModWithObjects", "IsXModWithObjects" ]

`‣ IsPermPreXModWithObjects` ( pxmod ) | ( property ) |

`‣ IsPcPreXModWithObjects` ( pxmod ) | ( property ) |

`‣ IsFpPreXModWithObjects` ( pxmod ) | ( property ) |

To test these properties we test the precrossed modules from which they were constructed.

gap> IsPermPreXModWithObjects( DX4 ); true gap> IsPcPreXModWithObjects( DX4 ); false gap> IsFpPreXModWithObjects( DX4 ); false

`‣ Root2dGroup` ( pxmod ) | ( attribute ) |

`‣ XModAction` ( pxmod ) | ( attribute ) |

The attributes of a precrossed module with objects include the standard `Source`

; `Range`

; `Boundary`

; and `XModAction`

as with precrossed modules of groups. There is also `ObjectList`

, as in the **groupoids** package. Additionally there is `Root2dGroup`

which is the underlying precrossed module used in the construction.

Note that `XModAction`

is now a groupoid homomorphism from the source groupoid to a one-object groupoid (with object `0`

) where the group is the automorphism group of the range groupoid.

gap> KnownAttributesOfObject(DX4); [ "Range", "Source", "Boundary", "ObjectList", "XModAction", "Root2dGroup" ] gap> Root2dGroup( DX4 ); [a4->s4] gap> act := XModAction( DX4 );; gap> r := Arrow( Gs4, (1,2,3,4), -7, -8 );; gap> ImageElm( act, r ); [groupoid homomorphism : [ [ [(1,2,3) : -9 -> -9], [(2,3,4) : -9 -> -9], [() : -9 -> -8], [() : -9 -> -7] ], [ [(2,3,4) : -9 -> -9], [(1,3,4) : -9 -> -9], [() : -9 -> -7], [() : -9 -> -8] ] ] : 0 -> 0] gap> s := Arrow( Ga4, (1,2,4), -8, -8 );; gap> ## calculate s^r gap> ims := ImageElmXModAction( DX4, s, r ); [(1,2,3) : -7 -> -7]

There is much more to be done with these constructions.

generated by GAPDoc2HTML