  
  [1m[4m[31m1. Introduction[0m
  
  The [1mXMod[0m package provides functions for computation with
  
  --    finite  crossed  modules  and  cat1-groups,  and  morphisms  of  these
        structures;
  
  --    finite   pre-crossed   modules,  pre-cat1-groups,  and  their  Peiffer
        quotients;
  
  --    derivations of crossed modules and sections of cat1-groups;
  
  --    the actor crossed square of a crossed module; and
  
  --    crossed squares and their morphisms (experimental version).
  
  It is loaded with the command
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> LoadPackage( "xmod" ); [0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  The  term  crossed  module  was  introduced  by J. H. C. Whitehead in [J48],
  [J49].  Loday,  in  [L82],  reformulated the notion of a crossed module as a
  cat1-group.  Norrie [N90], [K87] and Gilbert [N90] have studied derivations,
  automorphisms  of  crossed  modules and the actor of a crossed module, while
  Ellis  [G84]  has  investigated  higher dimensional analogues. Properties of
  induced  crossed  modules have been determined by Brown, Higgins and Wensley
  in  [RP78],  [RC95]  and [RC96]. For further references see [MC00], 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 30.
  
  [1mXMod[0m  was  originally implemented in 1997 using the [1mGAP[0m~3 language. In April
  2002  the  first and third parts were converted to [1mGAP[0m~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  [1mGAP[0m~4.4.  The current version is 2.008, released on October 25th
  2006.
  
  Many  of  the  function  names  have been changed during the conversion, for
  example  [22m[32mConjugationXMod[0m has become [22m[32mXModByNormalSubgroup[0m. For a list of name
  changes see the file [1mnames.pdf[0m in the [1mdoc[0m directory.
  
  Crossed  modules  and  cat1-groups are special types of [22m[36m2-dimensional groups[0m
  [R82]  and are implemented as [22m[32m2dObjects[0m having a [22m[32mSource[0m and a [22m[32mRange[0m. See the
  file  [1mnotes.pdf[0m  in  the  [1mdoc[0m directory for an introductory account of these
  algebraic gadgets.
  
  The package divides into four parts, all converted from [1mGAP[0m~3 to the [1mGAP[0m~4.4
  release.
  
  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.
  
  The  second  part  is  concerned with [22m[36mmorphisms[0m of (pre-)crossed modules and
  (pre-)cat1-groups,  together with standard operations for morphisms, such as
  composition, image and kernel.
  
  The third part deals with the equivalent notions of [22m[36mderivation[0m for a crossed
  module  and  [22m[36msection[0m for a cat1-group, and the monoids which they form under
  the Whitehead multiplication.
  
  The  fourth part deals with actor crossed modules and actor cat1-groups. For
  the  actor  crossed  module rm Act(mathcalX) of a crossed module mathcalX we
  require  representations  for  the Whitehead group of regular derivations of
  mathcalX  and  for  the group of automorphisms of mathcalX. The construction
  also  provides  an  inner  morphism  from mathcalX to rm Act(mathcalX) whose
  kernel is the centre of mathcalX.
  
  In  version  2.007 there are also experimental functions for [22m[36mcrossed squares[0m
  and  their  morphisms,  structures  which  arise  as  3-dimensional  groups.
  Examples  of  these  are  inclusions  of normal sub-crossed modules, and the
  inner morphism from a crossed module to its actor.
  
  The  package  may  be obtained as a compressed tar file [1mxmod.2.008.tar.gz[0m by
  ftp  from  one  of  the  sites  with  a  [1mGAP[0m~4  archive,  or from the Bangor
  Mathematics          web          site         whose         URL         is:
  [34mhttp://www.informatics.bangor.ac.uk/public/mathematics/chda/[0m
  
  The  following  constructions  were not in the [1mGAP[0m~3 version of the package:
  sub-2d-object  functions,  functions for pre-crossed modules and the Peiffer
  subgroup  of  a  pre-crossed module, and the associated crossed modules. The
  source  and range groups in these constructions are no longer required to be
  permutation groups.
  
  Future  plans  include the implementation of [22m[36mgroup-graphs[0m which will provide
  examples   of   pre-crossed   modules  (their  implementation  will  require
  interaction  with  graph-theoretic  functions  in  [1mGAP[0m~4).  Cat2-groups, and
  conversion betwen these and crossed squares, are also planned.
  
  The  equivalent categories [22m[32mXMod[0m (crossed modules) and [22m[32mCat1[0m (cat1-groups) are
  also  equivalent  to [22m[32mGpGpd[0m, the subcategory of group objects in the category
  [22m[32mGpd[0m  of  groupoids.  Finite  groupoids have been implemented in Emma Moore's
  crossed  resolutions  package  [1mGraphGpd[0m  [E01],  and  further  work on group
  groupoids is planned.
  
  In  order  that  the  user  has  some  control  of the verbosity of the [1mXMod[0m
  package's functions, an [22m[32mInfoClass[0m [22m[32mInfoXMod[0m is provided (see Chapter [22m[32mref:Info
  Functions[0m  in  the  [1mGAP[0m  Reference  Manual  for  a  description  of the [22m[32mInfo[0m
  mechanism).  By  default, the [22m[32mInfoLevel[0m of [22m[32mInfoXMod[0m is [22m[32m0[0m; progressively more
  information is supplied by raising the [22m[32mInfoLevel[0m to [22m[32m1[0m, [22m[32m2[0m and [22m[32m3[0m.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> SetInfoLevel( InfoXMod, 1); #sets the InfoXMod level to 1[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  The  following  test  file  (from  the  [1mxmod[0m  directory) runs all the manual
  commands.
  
  [22m[35m---------------------------  Example  ----------------------------[0m
    [22m[35m[0m
    [22m[35mgap> ReadTest("tst/xmod_manual.tst");[0m
    [22m[35m+ Testing constructions of crossed modules and cat1-groups[0m
    [22m[35m+ GAP4stones: 0[0m
    [22m[35mtrue[0m
    [22m[35m[0m
  [22m[35m------------------------------------------------------------------[0m
  
  Additional  information can be found on the [22m[36mComputational Higher-dimensional
  Discrete             Algebra[0m             web             site             at
  [34mhttp://www.informatics.bangor.ac.uk/public/mathematics/chda/[0m
  
