<!-- ------------------------------------------------------------------- -->
<!--                                                                     -->
<!--  intro.xml             XMod documentation            Chris Wensley  -->
<!--                                                                     -->
<!--  Copyright (C) 1996-2020, Chris Wensley et al,                      --> 
<!--  School of Computer Science, Bangor University, U.K.                --> 
<!--                                                                     -->
<!-- ------------------------------------------------------------------- -->

<?xml version="1.0" encoding="UTF-8"?> 

<Chapter Label="Intro">

<Heading>Introduction</Heading>

The &XMod; package provides functions for computation with 
<List> 
<Item>
finite crossed modules of groups 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>
isoclinism of groups and crossed modules; 
</Item>
<Item>
the actor crossed square of a crossed module; 
</Item>
<Item>
crossed squares, cat2-groups, and their morphisms (experimental version); 
</Item>
<Item>
crossed modules of groupoids (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.
Many of the function names have been changed during the conversion,
for example <C>ConjugationXMod</C> 
has become <Ref Oper="XModByNormalSubgroup"/>.
For a list of name changes see the file <F>names.pdf</F> 
in the <F>doc</F> directory.
<P/> 
In October 2015 Alper Odaba&#x15f; 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 <Ref Chap="chap-isclnc" />, 
and are described in detail in their paper <Cite Key="IOU1" />. 
<P/> 
The package may be obtained as a compressed tar file 
<File>XMod-version.number.tar.gz</File>
by ftp from one of the following sites: 
<List>
<Item>
the &XMod; GitHub release site: 
<URL>https://github.com/gap-packages.github.io/xmod/</URL>. 
</Item>
<Item>
any &GAP; archive, e.g. 
<URL>https://www.gap-system.org/Packages/packages.html</URL>; 
</Item>
</List>
The package also has a GitHub repository at: 
<URL>https://github.com/gap-packages/xmod/</URL>.
<P/>
Crossed modules and cat1-groups are special types of 
<E>2-dimensional groups</E> <Cite Key="B82"/>, <Cite Key="brow:hig:siv"/>, 
and are implemented as <C>2DimensionalDomains</C> and <C>2DimensionalGroups</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 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.
<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 is the most recent part of the package, 
introduced in October 2015.
Additional operations and properties for crossed modules are included 
in Section <Ref Sect="sect-more-xmod-ops" />. 
Then, in <Ref Sect="sect-isoclinic-groups" /> 
and <Ref Sect="sect-isoclinic-xmods" /> 
there are functions for isoclinism of groups and crossed modules. 
<P/>
The fourth part is concerned 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 fifth part deals with actor crossed modules and actor cat1-groups.
For the actor crossed module <M>{\rm Act}(\calX)</M> of a
crossed module <M>\calX</M> we require representations
for the Whitehead group of regular derivations of <M>\calX</M>
and for the group of automorphisms of <M>\calX</M>.
The construction also provides an inner morphism from  <M>\calX</M>  
to  <M>{\rm Act}(\calX)</M>  
whose kernel is the centre of <M>\calX</M>.
<P/>
The sixth part, which remains under development, contains 
functions to compute induced crossed modules. 
<P/>
Since 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 eighth part has some experimental functions for crossed modules 
of groupoids, interacting with the package <Package>groupoids</Package>. 
Much more work on this is needed. 
<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). 
There are also plans to implement cat2-groups, 
and conversion betwen these and crossed squares. 
<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>groupoids</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>.
<P/>
<Example>
<![CDATA[
gap> SetInfoLevel( InfoXMod, 1); #sets the InfoXMod level to 1
]]>
</Example>
<P/> 
Once the package is loaded, the manual <Code>doc/manual.pdf</Code> 
can be found in the documentation folder. 
The <Code>html</Code> versions, with or without MathJax, 
should be rebuilt as follows: 
<P/>
<Example>
<![CDATA[
gap> ReadPackage( "xmod, "makedoc.g" ); 
]]>
</Example>
<P/>
It is possible to check that the package has been installed correctly
by running the test files: 
<P/>
<Example>
<![CDATA[
gap> ReadPackage( "xmod", "tst/testall.g" );
#I  Testing .../pkg/xmod/tst/gp2obj.tst 
... 
]]>
</Example>
<P/>
Additional information can be found on the
<E>Computational Higher-dimensional Discrete Algebra</E> website at: 
<URL>http://pages.bangor.ac.uk/~mas023/chda/intro.html</URL>. 

</Chapter>
