  
  [1m[4m[31m9. Development history[0m
  
  This  chapter,  which is intended to contain details of the major changes to
  the  package as it develops, was first created in April 2002. Details of the
  changes from [1mXMod[0m~1 to [1mXMod[0m~2.001 are far from complete.
  
  The  inspiration  for  this  package  was  the  need,  in the mid-1990's, to
  calculate  induced  crossed  modules  (see  [RC95], [RC96], [RC03]). [1mGAP[0m 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 [1mGAP[0m.)
  
  
  [1m[4m[31m9.1 Changes from version to version[0m
  
  
  [1m[4m[31m9.1-1 Version 1 for [1mGAP[1m[4m[31m~3[0m
  
  The  first  version  of  [1mXMod[0m  became  an  accepted package for [1mGAP[0m~3.4.3 in
  December 1996.
  
  
  [1m[4m[31m9.1-2 Version 2[0m
  
  Conversion  of  [1mXMod[0m~1 from [1mGAP[0m~3.4.3 to the new [1mGAP[0m syntax began soon after
  [1mGAP[0m~4  was  released,  and  had  a  lengthy  gestation.  The  new [1mGAP[0m syntax
  encouraged  a re-naming of many of the function names. An early decision was
  to   introduce   generic   names  [22m[32m2dObject[0m  for  (pre-)crossed  modules  and
  (pre-)cat1-groups,  and  [22m[32m2dMapping[0m  for  the various types of morphism. This
  allows  [22m[32m3dObject[0m  to  be used in future for crossed squares and cat2-groups,
  and  [22m[32m3dMapping[0m  for  their  morphisms.  A  generic  name for derivations and
  sections is also required, and [22m[32mUp2dMapping[0m is currently used.
  
  
  [1m[4m[31m9.1-3 Version 2.001 for [1mGAP[1m[4m[31m~4[0m
  
  This  was  the first version of [1mXMod[0m for [1mGAP[0m~4, completed in April 2002 in a
  rush  to  catch  the  release  of  [1mGAP[0m~4.3. Functions for actors and induced
  crossed modules were not included, nor many of the functions for derivations
  and  sections, for example [22m[32mInnerDerivation[0m. During the ten days prior to the
  release, the main changes made were:
  
  --    Generic  name  [22m[32mUpMapping[0m  chosen  for  derivations  and  sections (now
        changed to [22m[32mUp2dMapping[0m).
  
  --    File names changed to [1mobj2.gd[0m, [1mmap2.gi[0m, [1mup2.tex[0m, etc.
  
  --    Added  alternative methods for [22m[32mIsomorphismPermGroup[0m for [22m[32m2dObjects[0m (see
        also 9.1.4).
  
  --    Sorted  a  problem  with  fixing the generating set for [22m[32mR[0m when used to
        define  derivations.  The (old) code uses an fp-group version of [22m[32mR[0m and
        checks  that  all  the  relators  map  by  [22m[32mchi[0m  to  [22m[32m1[0m.  Unfortunately,
        [22m[32mIsomorphismFpGroup[0m  sometimes  permutes the order of the [22m[32mR[0m-generators,
        with     unfortunate     effects.     The     fix     is     to    use
        [22m[32mIsomorphismFpGroupByGenerators[0m   which   returns  the  images  of  the
        generators  specified  in the function call. We have also used [22m[32mgenR :=
        StrongGeneratorsStabChain(  StabChain(  rng ) );[0m throughout to specify
        the generators of [22m[32mR[0m.
  
  --    Operation [22m[32mXModMorphism[0m renamed as [22m[32mXModMorphismByHoms[0m, and a new global
        function [22m[32mXModMorphism[0m introduced (ditto for other [22m[32m2dMappings[0m).
  
  --    Now  using  chi_1  star chi_2 for Whitehead multiplication {\bf on the
        right},  with  [22m[32mCompositeDerivation[0m still giving multiplication {\bf on
        the  left}.  This  means that the second axiom for derivations and for
        sections has changed -- see Chapter 4.
  
  
  [1m[4m[31m9.1-4 Induced crossed modules[0m
  
  During  the  period May 20th - May 27th 2002 converted [1minduce.g[0m to [1minduce.gd[0m
  and  [1minduce.gi[0m  (later  renamed [1minduce2.gd[0m, [1minduce2.gi[0m), at least as regards
  induced  crossed  modules.  (Induced cat1-groups may be convereted one day.)
  This involved the following.
  
  --    Converted    combinatorial   functions   --   [22m[32mDistinctRepresentatives[0m,
        [22m[32mCommonRepresentatives[0m, [22m[32mCommonTransversal[0m and [22m[32mIsCommonTransversal[0m.
  
  --    Converted  Tietze modification functions [22m[32mTzCommutatorPair[0m, [22m[32mTzPartition[0m
        and [22m[32mFactorsPresentation[0m.
  
  --    Introduced        global        functions       [22m[32mIsomorphismPermObject[0m,
        [22m[32mIsomorphismFpObject[0m,     and     [22m[32mIsomorphismPcObject[0m     which    call
        [22m[32mIsomorphismPermGroup[0m  etc. when the object is a group. Added functions
        [22m[32mIsomorphismPermPreXMod[0m, [22m[32mIsomorphismPermPreCat1[0m, etc. to be called when
        the object is a 2d-object.
  
  --    Added  [22m[32mIsomorphismXModByNormalSubgroup[0m which applies when the boundary
        of the xmod is injective.
  
  --    Added   [22m[32mPreXModIsomorphismByIsomorphisms[0m   (we  also  need  a  similar
        function  [22m[32mPreCat1IsomorphismByIsomorphisms[0m) where the data consists of
        a  crossed module, an isomorphism of the source, and an isomorphism of
        the range.
  
  --    Changed [22m[32mRModule[0m to [22m[32mAbelianModule[0m.
  
  
  [1m[4m[31m9.1-5 Versions 2.002 -- 2.006[0m
  
  Version  2.002  was prepared for the 4.4 release at the end of January 2004,
  and so required a [1mPackageInfo.g[0m file.
  
  Version 2.003 of February 28th 2004 just fixed some file protections.
  
  Version  2.004 of April 14th 2004 gave a new email address for Murat Alp and
  added  the  [22m[32mCat1Select[0m  functionality of version 1 to the [22m[32mCat1[0m function (see
  also version 2.007).
  
  Version  2.005  of April 16th 2004 moved the example files from [1mtst/test_i.g[0m
  to  [1mexamples/example_i.g[0m,  and  converted [1mtestmanual.g[0m to a proper test file
  [1mtst/xmod_manual.tst[0m.
  
  Changes made include the following.
  
  --    Replaced  [22m[32mOperationHomomorphism[0m  by  [22m[32mActionHomomorphism[0m  --  a general
        [1mGAP[0m4.4 change.
  
  --    Finished replacing [22m[32mRModule[0m by [22m[32mAbelianModule[0m.
  
  --    Renamed [22m[32mUpMapping[0m as [22m[32mUp2dMapping[0m.
  
  --    Added   [22m[32mMappingGeneratorsImages[0m   and   [22m[32mInverseGeneralMapping[0m   for  a
        [22m[32m2dMapping[0m.
  
  --    Converted  the  actor crossed module functions from the [1m3.4.4[0m version,
        including  [22m[32mAutomorphismPermGroup[0m  for a crossed module, [22m[32mWhiteheadXMod[0m,
        [22m[32mNorrieXMod[0m,   [22m[32mLueXMod[0m,   [22m[32mActorXMod[0m,   [22m[32mCentre[0m   of  a  crossed  module,
        [22m[32mInnerMorphism[0m and [22m[32mInnerActorXMod[0m.
  
  --    Added  [22m[32mSmallerDegreePermPreXMod[0m after discovering, in the library, the
        very useful [22m[32mSmallerDegreePermutationRepresentation[0m.
  
  Version  2.006  of  September  4th 2004 changed morphism functions to return
  [22m[32mfail[0m  when  invalid data is supplied, rather than calling [22m[32mError[0m, and fixed a
  bug in [22m[32mXModByGroupOfAutomorphisms[0m.
  
  
  [1m[4m[31m9.1-6 Versions 2.007 -- 2.008[0m
  
  This version contains changes made between September 2004 and October 2006.
  
  --    Added  basic  functions  for  crossed squares, considered as [22m[32m3dObjects[0m
        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 [1mGAPDoc[0m package, and
        added the function [22m[32mXModBuildManual()[0m to the [1mutil.gi[0m file.
  
  --    Improved  [22m[32mAutomorphismPermGroup[0m  for crossed modules, and introduced a
        special method for conjugation crosseed modules.
  
  --    Substantial   revisons  made  to  [22m[32mXModByCentralExtension[0m,  [22m[32mNorrieXMod[0m,
        [22m[32mLueXMod[0m, [22m[32mActorXMod[0m, and [22m[32mInclusionInducedXModByCopower[0m.
  
  --    Reintroduced the [22m[32mCat1Select[0m operation.
  
  --    The only reason for releasing version 2.008 was to fix broken links in
        [1mPackageInfo.g[0m.
  
  
  [1m[4m[31m9.2 What needs doing next?[0m
  
  --    Speed up the calculation of Whitehead groups.
  
  --    Add more functions for [22m[32m3dObjects[0m and implement [22m[32mcat2-groups[0m.
  
  --    Add interaction with [1mIdRel[0m, [1mXRes[0m, and [1mnatp[0m.
  
  --    Need [22m[32mInverseGeneralMapping[0m for morphisms.
  
  --    Need more features for [22m[32mFpXMods[0m, [22m[32mPcXMods[0m, etc.
  
  --    Implement actions of a crossed module.
  
  --    Implement [22m[32mFreeXMods[0m.
  
  --    Implement an operation [22m[32mIsomorphism2dObjects[0m.
  
  --    Allow the construction of a group of morphisms of crossed modules.
  
  --    Complete  the conversion from Version 1 of the calculation of sections
        using [22m[32mEndoClasses[0m.
  
