<!-- ------------------------------------------------------------------- -->
<!--                                                                     -->
<!--  history.xml           XMod documentation            Chris Wensley  -->
<!--                                                                     -->
<!--  Copyright (C) 1996-2019, Murat Alp and Chris Wensley,              --> 
<!--  School of Computer Science, Bangor University, U.K.                --> 
<!--                                                                     -->
<!-- ------------------------------------------------------------------- -->

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

<Chapter Label="chap-history">
<Heading>Development history</Heading>

This chapter, which contains details of the major changes 
to the package as it develops, was first created in April 2002. 
Details of the changes from &XMod; 1 to &XMod; 2.001 are far from complete. 
Starting with version 2.009 the file <F>CHANGES</F> lists the minor changes 
as well as the more fundamental ones. 
<P/>
The inspiration for this package was the need, in the mid-1990's, 
to calculate induced crossed modules 
(see <Cite Key="BW1" />, <Cite Key="BW2" />, <Cite Key="BW3" />).
&GAP; was chosen over other computational group theory systems
because the code was freely available, and it was possible to
modify the Tietze transformation code so as to record the images
of the original generators of a presentation as words in the
simplified presentation.  
(These modifications are now a standard part of the Tietze transformation
package in &GAP;.)

<Section><Heading>Changes from version to version</Heading>

<Subsection><Heading>Version 1 for &GAP; 3</Heading>
<Index>version 1 for &GAP; 3</Index>

The first version of &XMod; became an accepted package 
for &GAP; 3.4.3 in December 1996.
</Subsection>


<Subsection><Heading>Version 2</Heading>

Conversion of &XMod; 1 from &GAP; 3.4.3 
to the new &GAP; syntax began soon after &GAP; 4 was released, 
and had a lengthy gestation.
The new &GAP; syntax encouraged a re-naming of many of the function names.
An early decision was to introduce generic categories
<C>2dDomain</C> for (pre-)crossed modules and (pre-)cat1-groups, 
and <C>2dMapping</C> for the various types of morphism.
In 2.009 <C>3dDomain</C> was used for crossed squares and
cat2-groups, and <C>3dMapping</C> for their morphisms.
A generic name for derivations and sections is also required, 
and <C>Up2dMapping</C> is currently used.
</Subsection>


<Subsection><Heading>Version 2.001 for &GAP; 4</Heading>
<Index>version 2.001 for &GAP; 4</Index>

This was the first version of &XMod; for &GAP; 4,
completed in April 2002 in time for the release of &GAP; 4.3.
Functions for actors and induced crossed modules were not included,
nor many of the functions for derivations and sections,
for example <C>InnerDerivation</C>.
</Subsection> 


<Subsection><Heading>Induced crossed modules</Heading>

During May 2002 converted the code for induced crossed modules. 
(Induced cat1-groups may be converted one day.) 
</Subsection>


<Subsection><Heading>Versions 2.002 -- 2.006</Heading>

Version 2.004 of April 14th 2004 added the <Ref Oper="Cat1Select"/> 
functionality of version 1 to the <Ref Oper="Cat1Group"/> function.
<P/>
A significant addition in Version 2.005 was the conversion of 
the actor crossed module functions from the <F>3.4.4</F> version. 
This included <Ref Oper="AutomorphismPermGroup"/> for a crossed module;  
<Ref Oper="WhiteheadXMod"/>; <Ref Oper="NorrieXMod"/>; 
<Ref Oper="LueXMod"/>; <Ref Oper="ActorXMod"/>; 
<Ref Oper="CentreXMod"/> of a crossed module; 
<Ref Oper="InnerMorphism"/>; and <Ref Oper="InnerActorXMod"/>.
</Subsection>



<Subsection><Heading>Versions 2.007 -- 2.010</Heading>

These versions contain changes made between September 2004 and October 2007. 
<List>
<Item> 
Added basic functions for crossed squares, considered as <C>3dObjects</C> 
with crossed pairings, and their morphisms. 
Groups with two normal subgroups, and the actor of a crossed module, 
provide standard examples of crossed squares. 
(Cat2-groups are not yet implemented.) 
</Item>
<Item>
Converted the documentation to the format of the &GAPDoc; package.
</Item>
<Item>
Improved <Ref Oper="AutomorphismPermGroup"/> for crossed modules, 
and introduced a special method for conjugation crossed modules.
</Item>
<Item>
Substantial revisons made to <Ref Oper="XModByCentralExtension"/>; 
<Ref Oper="NorrieXMod"/>; <Ref Oper="LueXMod"/>; <Ref Oper="ActorXMod"/>; 
and <Ref Oper="InducedXModByCopower"/>. 
</Item>
<Item> 
Version 2.010, of October 2007, was timed to coincide with the release 
of &GAP; 4.4.10, and included a change of filenames; 
and correct file protection codes. </Item> 
</List>
</Subsection>
</Section> 


<Section><Heading>Versions for &GAP; [4.5 .. 4.8]</Heading>

Version 2.19, released on 9th June 2012, included the following changes:  
<List>
<Item> 
The file <C>makedocrel.g</C> was copied, with appropriate changes, 
from <Package>GAPDoc</Package>, and now provides the correct way 
to update the documentation. 
</Item>
<Item> 
The first functions for crossed modules of groupoids were introduced. 
</Item>
<Item>
A GNU General Public License declaration was added. 
</Item>
</List> 

<Subsection><Heading>AllCat1s</Heading>
Version 2.21 contained major changes to the <Ref Oper="Cat1Select"/> operation: 
the list <C>CAT1_LIST</C> of cat1-structures in the data file 
<F>cat1data.g</F> was changed from permutation groups to pc-groups, 
with the generators of subgroups; images of the tail map; and images of 
the head map being given as <C>ExtRepOfObj</C> of words in the generators. 
<P/> 
The <C>AllCat1s</C> function was reintroduced from the &GAP;3 version, 
and renamed as the operation <Ref Oper="AllCat1DataGroupsBasic"/>. 
<P/> 
In version 2.25 the data in <F>cat1data.g</F> was extended from groups 
of size up to <M>48</M> to groups of size up to <M>70</M>. 
In particular, the <M>267</M> groups of size 64 give rise to a total 
of <M>1275</M> cat1-groups. 
The authors are indebted to Van Luyen Le in Galway for pointing out a number 
of errors in the version of this list distributed with version 2.24 of this package.  
</Subsection>

<Subsection><Heading>Versions 2.43 - 2.56</Heading>
Version 2.43, released on 11th November 2015, included the following changes:  
<List>
<Item> 
The material on isoclinism in Chapter 4 was added. 
</Item>
<Item>
The package webpage has moved to 
<URL>http://pages.bangor.ac.uk/~mas023/chda/</URL>. 
</Item>
<Item>
A GitHub repository was started at: 
<URL>https://github.com/gap-packages/xmod</URL>. 
</Item>
<Item>
The section on <E>Distinct and Common Representatives</E> 
was moved to the <Package>Utils</Package> package. 
</Item>
</List> 
</Subsection>

<Subsection><Heading>Version 2.61</Heading>
Major changes in names took place, with 
<C>2dDomain, 2dGroup, 2dMapping</C>, etc. becoming 
<C>2DimensionalDomain, 2DimensionalGroup, 2DimensionalMapping</C>, etc., 
and similarly for 3-dimensional versions. 
Also <C>HigherDimensionalDomain</C> and related categories, domains, 
properties, attributes and operations were introduced. 
At the same time, functions for cat2-groups were introduced by Alper Odabas.   
</Subsection>


<Subsection><Heading>Version 2.63 - 2.74</Heading>
<List>
<Item>
Added an implementation of crossed modules of groupoids. 
</Item>
<Item>
Lots more work on crossed squares and cat2-groups. 
</Item>
<Item>
Added an implementation of group groupoids. 
</Item>
</List> 
</Subsection>
</Section> 



<Section><Heading>What needs doing next?</Heading>

<List>
<Item>
Speed up the calculation of Whitehead groups.
</Item>
<Item> 
Add more functions for <C>3dObjects</C> and implement <C>cat2-groups</C>.
</Item>
<Item> 
Improve interaction with the package <Package>groupoids</Package> 
implementing the group groupoid version of a crossed module, 
and adding more functions for crossed modules of groupoids. 
</Item>
<Item> 
Add interaction with <Package>IdRel</Package>  
(and possibly <Package>XRes</Package> and <Package>natp</Package>) .
</Item>
<Item> 
Need <C>InverseGeneralMapping</C> for morphisms 
and more features for <C>FpXMods</C>, <C>PcXMods</C>, etc.
</Item>
<Item> 
Implement actions of a crossed module.
</Item>
<Item> 
Implement <C>FreeXMods</C> and an operation <C>Isomorphism2dDomains</C>.
</Item>
<Item>
Allow the construction of a group of morphisms of crossed modules.
</Item>
<Item> 
Complete the conversion from Version 1 of the calculation of sections
using <C>EndoClasses</C>.
</Item>
<Item>
More crossed square constructions: 
<List>
<Item>
If <M>M, N</M> are ordinary <M>P</M>-modules 
and <M>A</M> is an arbitrary abelian group on which <M>P</M> acts trivially, 
then there is a crossed square with sides 
<Display>
0 : A \to N,\quad 0 : A \to M,\quad
0 : M \to P,\quad 0 : N \to P. 
</Display>
</Item>
<Item>
For a group <M>L</M>, the automorphism crossed module 
<M>\Act\ L = (\iota : L \to \Aut\ L)</M> 
splits to form the square 
with <M>(\iota_1 : L \to \Inn\ L)</M> on two sides, 
and <M>(\iota_2 : \Inn\ L \to \Aut\ L)</M> on the other two sides, 
where <M>\iota_1</M> maps <M>l \in L</M> to the inner automorphism  
<M>\beta_l : L \to L,\; l^{\prime} \mapsto l^{-1}l^{\prime}l</M>,  
and <M>\iota_2</M> is the inclusion of <M>\Inn\ L</M> in  <M>\Aut\ L</M>. 
The actions are standard, and the crossed pairing is 
<Display>
\boxtimes \;:\; \Inn\ L \times \Inn\ L \to L, \quad
(\beta_l, \beta_{l^{\prime}}) \;\mapsto\; [l, l^{\prime}]~.
</Display>
</Item>
</List>
</Item>
<Item>
Improve the interaction with the <Package>HAP</Package> package. 
</Item>
<Item>
Implement cat1-groups with objects. 
</Item>
</List>

</Section>

</Chapter>
