Development history

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 CHANGES lists the minor changes as well as the more fundamental ones.

The inspiration for this package was the need, in the mid-1990's, to calculate induced crossed modules (see , , ). &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;.)

Changes from version to version
Version 1 for &GAP; 3
version 1 for &GAP; 3

The first version of &XMod; became an accepted package for &GAP; 3.4.3 in December 1996.
Version 2

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 names 2dObject for (pre-)crossed modules and (pre-)cat1-groups, and 2dMapping for the various types of morphism. In 2.009 3dObject is used for crossed squares and cat2-groups, and 3dMapping for their morphisms. A generic name for derivations and sections is also required, and Up2dMapping is currently used.
Version 2.001 for &GAP; 4
version 2.001 for &GAP; 4

This was the first version of &XMod; for &GAP; 4, completed in April 2002 in a rush to catch 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 InnerDerivation.
Induced crossed modules

During the period May 20th - May 27th 2002 converted induce.g to induce.gd and induce.gi (later renamed induce2.gd, induce2.gi), at least as regards induced crossed modules. (Induced cat1-groups may be convereted one day.) For details, see the file CHANGES.
Versions 2.002 -- 2.006

Version 2.002 was prepared for the 4.4 release at the end of January 2004.

Version 2.003 of February 28th 2004 just fixed some file protections.

Version 2.004 of April 14th 2004 added the Cat1Select functionality of version 1 to the Cat1 function (see also version 2.007).

Version 2.005 of April 16th 2004 moved the example files from tst/test&uscore;i.g to examples/example&uscore;i.g, and converted testmanual.g to a proper test file tst/xmod&uscore;manual.tst.

A significant change was the conversion of the actor crossed module functions from the 3.4.4 version, including AutomorphismPermGroup for a crossed module, WhiteheadXMod, NorrieXMod, LueXMod, ActorXMod, Centre of a crossed module, InnerMorphism and InnerActorXMod.
Versions 2.007 -- 2.008

These versions contain changes made between September 2004 and October 2006. Added basic functions for crossed squares, considered as 3dObjects 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.) Converted the documentation to the format of the &GAPDoc; package. Improved AutomorphismPermGroup for crossed modules, and introduced a special method for conjugation crossed modules. Substantial revisons made to XModByCentralExtension, NorrieXMod, LueXMod, ActorXMod, and InclusionInducedXModByCopower. Reintroduced the Cat1Select operation.
Version 2.010

The latest version, of October 2007, timed to coincide with the release of &GAP; 4.4.10, includes a change of filenames; correct file protection codes; and an improvement to AutomorphismPermGroup for crossed modules.
What needs doing next?
Speed up the calculation of Whitehead groups.
Add more functions for 3dObjects and implement cat2-groups.
Add interaction with package `Gpd` implementing group groupoid version of a crossed module and crossed modules over groupoids.
Add interaction with `IdRel`, `XRes`, and `natp`.
Need InverseGeneralMapping for morphisms.
Need more features for FpXMods, PcXMods, etc.
Implement actions of a crossed module.
Implement FreeXMods.
Implement an operation Isomorphism2dObjects.
Allow the construction of a group of morphisms of crossed modules.
Complete the conversion from Version 1 of the calculation of sections using EndoClasses.