The **XMod** package provides functions for computation with

finite crossed modules of groups and cat1-groups, and morphisms of these structures;

finite pre-crossed modules, pre-cat1-groups, and their Peiffer quotients;

derivations of crossed modules and sections of cat1-groups;

isoclinism of groups and crossed modules;

the actor crossed square of a crossed module;

crossed squares, cat2-groups, and their morphisms (experimental version);

crossed modules of groupoids (experimental version).

It is loaded with the command

gap> LoadPackage( "xmod" );

The term crossed module was introduced by J. H. C. Whitehead in [Whi48], [Whi49]. Loday, in [Lod82], reformulated the notion of a crossed module as a cat1-group. Norrie [Nor90], [Nor87] and Gilbert [Gil90] have studied derivations, automorphisms of crossed modules and the actor of a crossed module, while Ellis [Ell84] has investigated higher dimensional analogues. Properties of induced crossed modules have been determined by Brown, Higgins and Wensley in [BH78], [BW95] and [BW96]. For further references see [AW00], where we discuss some of the data structures and algorithms used in this package, and also tabulate isomorphism classes of cat1-groups up to size 30.

**XMod** was originally implemented in 1997 using the **GAP** 3 language. In April 2002 the first and third parts were converted to **GAP** 4, the pre-structures were added, and version 2.001 was released. The final two parts, covering derivations, sections and actors, were included in the January 2004 release 2.002 for **GAP** 4.4. Many of the function names have been changed during the conversion, for example `ConjugationXMod`

has become `XModByNormalSubgroup`

. For a list of name changes see the file `names.pdf`

in the `doc`

directory.

In October 2015 Alper Odabaş and Enver Uslu were added to the list of package authors. Their functions for computing isoclinism classes of groups and crossed modules are contained in Chapter 4, and are described in detail in their paper [IOU16].

The current version is 2.62 for **GAP** 4.8, released on 9th August 2017.

The package may be obtained as a compressed tar file `xmod-2.62.tar.gz`

by ftp from one of the following sites:

any

**GAP**archive, e.g. http://www.gap-system.org/Packages/packages.html;the Bangor site: http://www.maths.bangor.ac.uk/chda/gap4/xmod/xmod.html;

the package GitHub repository: https://github.com/gap-packages/xmod.

Crossed modules and cat1-groups are special types of *2-dimensional groups* [Bro82], [BHS11], and are implemented as `2DimensionalDomains`

and `2DimensionalGroups`

having a `Source`

and a `Range`

.

The package divides into eight parts. The first part is concerned with the standard constructions for pre-crossed modules and crossed modules; together with direct products; normal sub-crossed modules; and quotients. Operations for constructing pre-cat1-groups and cat1-groups, and for converting between cat1-groups and crossed modules, are also included.

The second part is concerned with *morphisms* of (pre-)crossed modules and (pre-)cat1-groups, together with standard operations for morphisms, such as composition, image and kernel.

The third part is the most recent part of the package, introduced in October 2015. Additional operations and properties for crossed modules are included in Section 4.1. Then, in 4.2 and 4.3 there are functions for isoclinism of groups and crossed modules.

The fourth part is concerned with the equivalent notions of *derivation* for a crossed module and *section* for a cat1-group, and the monoids which they form under the Whitehead multiplication.

The fifth part deals with actor crossed modules and actor cat1-groups. For the actor crossed module Act(mathcalX) of a crossed module mathcalX we require representations for the Whitehead group of regular derivations of mathcalX and for the group of automorphisms of mathcalX. The construction also provides an inner morphism from mathcalX to Act(mathcalX) whose kernel is the centre of mathcalX.

The sixth part, which remains under development, contains functions to compute induced crossed modules.

Since version 2.007 there are experimental functions for *crossed squares* and their morphisms, structures which arise as 3-dimensional groups. Examples of these are inclusions of normal sub-crossed modules, and the inner morphism from a crossed module to its actor.

The eighth part has some experimental functions for crossed modules of groupoids, interacting with the package **Gpd**. Much more work on this is needed.

Future plans include the implementation of *group-graphs* which will provide examples of pre-crossed modules (their implementation will require interaction with graph-theoretic functions in **GAP** 4). There are also plans to implement cat2-groups, and conversion betwen these and crossed squares.

The equivalent categories `XMod`

(crossed modules) and `Cat1`

(cat1-groups) are also equivalent to `GpGpd`

, the subcategory of group objects in the category `Gpd`

of groupoids. Finite groupoids have been implemented in Emma Moore's package **Gpd** [Moo01] for groupoids and crossed resolutions.

In order that the user has some control of the verbosity of the **XMod** package's functions, an `InfoClass`

`InfoXMod`

is provided (see Chapter `ref:Info Functions`

in the **GAP** Reference Manual for a description of the `Info`

mechanism). By default, the `InfoLevel`

of `InfoXMod`

is `0`

; progressively more information is supplied by raising the `InfoLevel`

to `1`

, `2`

and `3`

.

gap> SetInfoLevel( InfoXMod, 1); #sets the InfoXMod level to 1

Once the package is loaded, the manual `doc/manual.pdf`

can be found in the documentation folder. The `html`

versions, with or without MathJax, should be rebuilt as follows:

gap> ReadPackage( "xmod, "makedocrel.g" );

It is possible to check that the package has been installed correctly by running the test files:

gap> ReadPackage( "xmod", "tst/testall.g" ); #I Testing .../pkg/xmod/tst/gp2obj.tst ...

Additional information can be found on the *Computational Higher-dimensional Discrete Algebra* website at: http://pages.bangor.ac.uk/~mas023/chda/intro.html.

This version 2.61 had to be released in a hurry when required package **Gpd** was renamed as **groupoids**. As a result some functions for crossed squares and cat2-groups, still under development, had to be temporarily removed, and two test files had to be removed from the list of files to be tested.

generated by GAPDoc2HTML