<p>The term crossed module was introduced by J. H. C. Whitehead in <a href="chapBib_mj.html#biBW2">[Whi48]</a>, <a href="chapBib_mj.html#biBW1">[Whi49]</a>. Loday, in <a href="chapBib_mj.html#biBL1">[Lod82]</a>, reformulated the notion of a crossed module as a cat1-group. Norrie <a href="chapBib_mj.html#biBN1">[Nor90]</a>, <a href="chapBib_mj.html#biBN2">[Nor87]</a> and Gilbert <a href="chapBib_mj.html#biBG1">[Gil90]</a> have studied derivations, automorphisms of crossed modules and the actor of a crossed module, while Ellis <a href="chapBib_mj.html#biBE1">[Ell84]</a> has investigated higher dimensional analogues. Properties of induced crossed modules have been determined by Brown, Higgins and Wensley in <a href="chapBib_mj.html#biBBH1">[BH78]</a>, <a href="chapBib_mj.html#biBBW1">[BW95]</a> and <a href="chapBib_mj.html#biBBW2">[BW96]</a>. For further references see <a href="chapBib_mj.html#biBAW1">[AW00]</a>, 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 <span class="SimpleMath">\(30\)</span>.</p>
<p><strong class="pkg">XMod</strong> was originally implemented in 1997 using the <strong class="pkg">GAP</strong> 3 language. In April 2002 the first and third parts were converted to <strong class="pkg">GAP</strong> 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 <strong class="pkg">GAP</strong> 4.4. Many of the function names have been changed during the conversion, for example <code class="code">ConjugationXMod</code> has become <code class="func">XModByNormalSubgroup</code> (<a href="chap2_mj.html#X83050ED686776933"><span class="RefLink">2.1-2</span></a>). For a list of name changes see the file <code class="file">names.pdf</code> in the <code class="file">doc</code> directory.</p>
<p>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 <a href="chap4_mj.html#X802AFE8E7EDB435E"><span class="RefLink">4</span></a>, and are described in detail in their paper <a href="chapBib_mj.html#biBIOU1">[IOU16]</a>.</p>
<p>The package may be obtained as a compressed tar file <code class="file">XMod-version.number.tar.gz</code> by ftp from one of the following sites:</p>
</li>
<li><p>any <strong class="pkg">GAP</strong> archive, e.g. <span class="URL"><a href="https://www.gap-system.org/Packages/packages.html">https://www.gap-system.org/Packages/packages.html</a></span>;</p>
</li>
</ul>
<p>The package also has a GitHub repository at: <span class="URL"><a href="https://github.com/gap-packages/xmod/">https://github.com/gap-packages/xmod/</a></span>.</p>
<p>Crossed modules and cat1-groups are special types of <em>2-dimensional groups</em> <a href="chapBib_mj.html#biBB82">[Bro82]</a>, <a href="chapBib_mj.html#biBbrow:hig:siv">[BHS11]</a>, and are implemented as <code class="code">2DimensionalDomains</code> and <code class="code">2DimensionalGroups</code> having a <code class="code">Source</code> and a <code class="code">Range</code>.</p>
<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>
<p>The second part is concerned with <em>morphisms</em> of (pre-)crossed modules and (pre-)cat1-groups, together with standard operations for morphisms, such as composition, image and kernel.</p>
<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 <a href="chap4_mj.html#X7E373BF3836B3A9C"><span class="RefLink">4.1</span></a>. Then, in <a href="chap4_mj.html#X7B0D511A82FD945E"><span class="RefLink">4.2</span></a> and <a href="chap4_mj.html#X81338C977972AD83"><span class="RefLink">4.3</span></a> there are functions for isoclinism of groups and crossed modules.</p>
<p>The fourth part is concerned with the equivalent notions of <em>derivation</em> for a crossed module and <em>section</em> for a cat1-group, and the monoids which they form under the Whitehead multiplication.</p>
<p>The fifth part deals with actor crossed modules and actor cat1-groups. For the actor crossed module <span class="SimpleMath">\({\rm Act}(\calX)\)</span> of a crossed module <span class="SimpleMath">\(\calX\)</span> we require representations for the Whitehead group of regular derivations of <span class="SimpleMath">\(\calX\)</span> and for the group of automorphisms of <span class="SimpleMath">\(\calX\)</span>. The construction also provides an inner morphism from <span class="SimpleMath">\(\calX\)</span> to <span class="SimpleMath">\({\rm Act}(\calX)\)</span> whose kernel is the centre of <span class="SimpleMath">\(\calX\)</span>.</p>
<p>The sixth part, which remains under development, contains functions to compute induced crossed modules.</p>
<p>Since version 2.007 there are experimental functions for <em>crossed squares</em> and their morphisms, structures which arise as <span class="SimpleMath">\(3\)</span>-dimensional groups. Examples of these are inclusions of normal sub-crossed modules, and the inner morphism from a crossed module to its actor.</p>
<p>The eighth part has some experimental functions for crossed modules of groupoids, interacting with the package <strong class="pkg">groupoids</strong>. Much more work on this is needed.</p>
<p>Future plans include the implementation of <em>group-graphs</em> which will provide examples of pre-crossed modules (their implementation will require interaction with graph-theoretic functions in <strong class="pkg">GAP</strong> 4). There are also plans to implement cat2-groups, and conversion betwen these and crossed squares.</p>
<p>The equivalent categories <code class="code">XMod</code> (crossed modules) and <code class="code">Cat1</code> (cat1-groups) are also equivalent to <code class="code">GpGpd</code>, the subcategory of group objects in the category <code class="code">Gpd</code> of groupoids. Finite groupoids have been implemented in Emma Moore's package groupoids[Moo01] for groupoids and crossed resolutions.
<p>In order that the user has some control of the verbosity of the <strong class="pkg">XMod</strong> package's functions, an InfoClassInfoXMod 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.
<div class="example"><pre>
<span class="GAPprompt">gap></span> <span class="GAPinput">SetInfoLevel( InfoXMod, 1); #sets the InfoXMod level to 1</span>
</pre></div>
<p>Once the package is loaded, the manual <code class="code">doc/manual.pdf</code> can be found in the documentation folder. The <code class="code">html</code> versions, with or without MathJax, should be rebuilt as follows:</p>
<p>Additional information can be found on the <em>Computational Higher-dimensional Discrete Algebra</em> website at: <span class="URL"><a href="https://github.com/cdwensley">https://github.com/cdwensley</a></span>.</p>