<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%-->
<!--                                                                     -->
<!--  intro.xml           XMOD documentation              Chris Wensley  -->
<!--                                                        & Murat Alp  -->
<!--                                                                     -->
<!--  $Id: intro.xml,v 2.12 2008/11/24 gap Exp $                        -->
<!--                                                                     -->
<!-- %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -->

<?xml version="1.0" encoding="ISO-8859-15"?>
  <!-- $Id: intro.xml,v 2.12  Exp $ -->

<Chapter Label="Intro">

<Heading>Introduction</Heading>

The &XMod; package provides functions for computation with 
<List> 
<Item>
finite crossed modules and cat1-groups, and morphisms of these structures;
</Item>
<Item>
finite pre-crossed modules, pre-cat1-groups, and their Peiffer quotients;
</Item>
<Item>
derivations of crossed modules and sections of cat1-groups; 
</Item>
<Item>
the actor crossed square of a crossed module; and 
</Item>
<Item>
crossed squares and their morphisms (experimental version).
</Item>
</List>

It is loaded with the command
<Example>
<![CDATA[
gap> LoadPackage( "xmod" ); 
]]>
</Example>
<P/>
The term crossed module was introduced by J. H. C. Whitehead in 
<Cite Key="W2" />, <Cite Key="W1" />.
Loday, in <Cite Key="L1" />, 
reformulated the notion of a crossed module as a cat1-group.
Norrie <Cite Key="N1" />, <Cite Key="N2" /> 
and Gilbert <Cite Key="G1" /> have studied derivations, 
automorphisms of crossed modules and the actor of a crossed module, 
while Ellis <Cite Key="E1" /> 
has investigated higher dimensional analogues.
Properties of induced crossed modules have been determined by 
Brown, Higgins and Wensley in <Cite Key="BH1" />, 
<Cite Key="BW1" /> and <Cite Key="BW2" />.
For further references see <Cite Key="AW1" />, 
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 <M>30</M>.
<P/>
&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.
The current version is 2.12, released on 24th November 2008.
<P/>
Many of the function names have been changed during the conversion,
for example <C>ConjugationXMod</C> has become <C>XModByNormalSubgroup</C>.
For a list of name changes see the file <F>names.pdf</F> 
in the <F>doc</F> directory.
<P/>
Crossed modules and cat1-groups are special types of 
<E>2-dimensional groups</E> <Cite Key="B82"/> 
and are implemented as <C>2dObjects</C> 
having a <C>Source</C> and a <C>Range</C>.
See the file <F>notes.pdf</F> in the <F>doc</F> directory 
for an introductory account of these algebraic gadgets.
<P/>
The package divides into four parts, 
all converted from &GAP; 3 to the &GAP; 4.4 release.
<P/>
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.
<P/>
The second part is concerned with <E>morphisms</E> of (pre-)crossed modules
and (pre-)cat1-groups, together with standard operations for morphisms,
such as composition, image and kernel.
<P/>
The third part deals with the equivalent notions of
<E>derivation</E> for a crossed module and <E>section</E> for a cat1-group,
and the monoids which they form under the Whitehead multiplication.
<P/>
The fourth part deals with actor crossed modules and actor cat1-groups.
For the actor crossed module <M>{\rm Act}(\mathcal{X})</M> of a
crossed module <M>\mathcal{X}</M> we require representations
for the Whitehead group of regular derivations of <M>\mathcal{X}</M>
and for the group of automorphisms of <M>\mathcal{X}</M>.
The construction also provides an inner morphism from  <M>\mathcal{X}</M>  
to  <M>{\rm Act}(\mathcal{X})</M>  
whose kernel is the centre of <M>\mathcal{X}</M>.
<P/>
From version 2.007 there are experimental functions for 
<E>crossed squares</E> and their morphisms, 
structures which arise as <M>3</M>-dimensional groups.  
Examples of these are inclusions of normal sub-crossed modules, 
and the inner morphism from a crossed module to its actor.
<P/>
The package may be obtained as a compressed tar file 
<File>xmod.2.11.tar.gz</File>
by ftp from one of the sites with a &GAP; 4 archive,
or from the Bangor Mathematics web site whose URL is: 
<URL>http://www.informatics.bangor.ac.uk/public/mathematics/chda/</URL>
<P/>
The following constructions were not in the &GAP; 3 version of the package: 
sub-2d-object functions, functions for pre-crossed modules and the Peiffer 
subgroup of a pre-crossed module, and the associated crossed modules.
The source and range groups in these constructions
are no longer required to be permutation groups.
<P/>
Future plans include the implementation of <E>group-graphs</E>
which will provide examples of pre-crossed modules
(their implementation will require interaction with graph-theoretic
functions in &GAP; 4). 
Cat2-groups, and conversion betwen these and crossed squares, 
are also planned.
<P/>
The equivalent categories  <C>XMod</C>  (crossed modules) and
<C>Cat1</C>  (cat1-groups) are also equivalent to  <C>GpGpd</C>, 
the subcategory of group objects in the category <C>Gpd</C> of groupoids.
Finite groupoids have been implemented in Emma Moore's package 
<Package>Gpd</Package> <Cite Key="M1"/> 
for groupoids and crossed resolutions. 
<P/>
<Index Key="InfoXMod"><C>InfoXMod</C></Index>
In order that the user has some control of the verbosity of the 
&XMod; package's functions, 
an <C>InfoClass</C>  <C>InfoXMod</C> is provided
(see Chapter <C>ref:Info Functions</C> in the &GAP; Reference Manual for
a description of the <C>Info</C> mechanism). 
By default, the <C>InfoLevel</C> of <C>InfoXMod</C> is <C>0</C>; 
progressively more information is supplied by raising
the <C>InfoLevel</C> to <C>1</C>, <C>2</C> and <C>3</C>.

<Example>
<![CDATA[
gap> SetInfoLevel( InfoXMod, 1); #sets the InfoXMod level to 1
]]>
</Example>

Once the package is loaded, it is possible to check the correct
installation by running the test suite of the package with the 
following command. 
(The test file itself is <F>tst/xmod_manual.tst</F>.) 
<Example>
<![CDATA[
gap> ReadPackage( "xmod", "tst/testall.g" );
+ Testing all example commands in the XMod manual
+ GAP4stones: 0
true
]]>
</Example>

Additional information can be found on the
<E>Computational Higher-dimensional Discrete Algebra</E> web site at
<URL>http://www.informatics.bangor.ac.uk/public/mathematics/chda/</URL>

</Chapter>
