  
  [1X1 The [5XMONOID[1X package[0X
  
  
  [1X1.1 Introduction[0X
  
  This  manual  describes  the [5XMONOID[0m package version 3.1.3 for computing with
  transformation semigroups. [5XMONOID[0m 3.1.3 is an updated version of the package
  with        the       same       name       for       [5XGAP[0m       3;       see
  [7Xhttp://schmidt.nuigalway.ie/monoid/index.html[0m for more information about the
  original  [5XMONOID[0m  by Goetz Pfeiffer and Steve A. Linton, Edmund F. Robertson
  and Nik Ruskuc.
  
  [5XMONOID[0m  3.1.3  retains all the functionality of the original [5XMONOID[0m package.
  In  particular,  [5XMONOID[0m  3.1.3  contains  more  efficient methods than those
  available  in  the  [5XGAP[0m  library  for  computing orbits, calculating Green's
  classes,   finding  the  size,  the  elements,  and  testing  membership  in
  transformation  semigroups;  see  Chapters  [14X3[0m  and  [14X4[0m. After [5XMONOID[0m has been
  loaded  many  of these methods are automatically used in preference to those
  in  the  library  and do not need to be called explicitly by the user. These
  methods  are  described  in  [LPRR98]  and  the  algorithms  themselves  are
  described in [LPRR02].
  
  In  addition,  there  are new methods for testing if a semigroup satisfies a
  particular  property,  such  as  if  it  is  regular,  simple,  inverse,  or
  completely  regular,  see  Chapter [14X5[0m; methods for computing the automorphism
  group  of  a  transformation  semigroup see Section [14X7.4[0m; methods for finding
  homomorphisms  and  isomorphism between some types of semigroups see Chapter
  [14X7[0m;  and  functions  to  create some well-known semigroups see Chapter [14X6[0m. The
  property  testing  methods  are  described  in  [GM05]  and  the  method for
  computing the automorphism group of a semigroup is described in [ABM07].
  
  The  [5XMONOID[0m  package  is  written  in  [5XGAP[0m code only but relies on the [5XGRAPE[0m
  package  Version 4.2 or higher in the methods for computing the automorphism
  group  of  a  semigroup.  The  following functions can only be used fully if
  [5XGRAPE[0m is fully installed (and loaded):
  
  --    [2XAutomorphismGroup[0m      ([14X7.4-1[0m)      with      argument      satisfying
        [2XIsTransformationSemigroup[0m  ([14XReference:  IsTransformationSemigroup[0m)  or
        [2XIsReesZeroMatrixSemigroup[0m ([14XReference: IsReesZeroMatrixSemigroup[0m)
  
  --    [2XRightTransStabAutoGroup[0m     ([14X7.5-9[0m)     with    argument    satisfying
        [2XIsReesZeroMatrixSemigroup[0m ([14XReference: IsReesZeroMatrixSemigroup[0m)
  
  --    [2XRZMSGraph[0m ([14X7.5-8[0m)
  
  --    [2XRZMSInducedFunction[0m ([14X7.5-6[0m)
  
  --    [2XRZMStoRZMSInducedFunction[0m ([14X7.5-7[0m)
  
  --    [2XIsomorphismSemigroups[0m   ([14X7.7-5[0m)   with   both   arguments   satisfying
        [2XIsReesZeroMatrixSemigroup[0m ([14XReference: IsReesZeroMatrixSemigroup[0m)
  
  Installation  of  [5XGRAPE[0m  is  described  in  the  [10XREADME[0m  file  of  the [5XGRAPE[0m
  distribution  and  in the section entitled `Installing the GRAPE Package' of
  the  [5XGRAPE[0m  manual;  see  [7Xhttp://www.maths.qmul.ac.uk/~leonard/grape/[0m or the
  main [5XGAP[0m webpages for more information.
  
  If  you want to take advantage of the online help facilities in [5XMONOID[0m, then
  the   [5Xgapdoc[0m   package   Version   1.1  or  higher  is  also  required;  see
  [7Xhttp://www.math.rwth-aachen.de/~Frank.Luebeck/GAPDoc/[0m for further details of
  how to obtain and install [5Xgapdoc[0m.
  
  
  [1X1.2 Installing [5XMONOID[1X[0X
  
  In this section we give a brief description of how to start using [5XMONOID[0m. If
  you  have any problems getting [5XMONOID[0m working, then please email me directly
  at [7Xmailto:jdm3@st-and.ac.uk[0m.
  
  It is assumed that you have a working copy of [5XGAP[0m with version number 4.4.10
  or  higher.  The  most  up-to-date version of [5XGAP[0m and instructions on how to
  install    it    can    be    obtained    from    the   main   [5XGAP[0m   webpage
  [7Xhttp://www.gap-system.org[0m  Those  functions in [5XMONOID[0m described in Chapter [14X7[0m
  relating  to  automorphism  groups  of  semigroups  require  the  [5XGRAPE[0m (for
  computing with graphs and groups) to be loaded. In particular, [5XGRAPE[0m must be
  installed  in  a  UNIX  operating  system so that the automorphism group and
  isomorphism testing functions (for graphs) can be used.
  
  Please  go  to  [7Xhttp://www.maths.qmul.ac.uk/~leonard/grape/[0m  or the main [5XGAP[0m
  webpage for further details on how to obtain and install [5XGRAPE[0m.
  
  The  following  is  a  summary of the steps that should lead to a successful
  installation of [5XMONOID[0m.
  
  --    download the package archive [10Xmonoid3r1p3.tar.gz[0m or [10Xmonoid3r1p3.tar.bz2[0m
        from [7Xhttp://www-history.mcs.st-and.ac.uk/~jamesm/monoid/index.html[0m
  
  --    unzip & untar the file, this should create a directory called [10XMONOID[0m.
  
  --    move the directory [10XMONOID[0m into the [10Xpkg[0m directory of your [5XGAP[0m directory
        (the one containing the directories [10Xlib[0m, [10Xdoc[0m, [10Xpkg[0m, and so on)
  
  --    start [5XGAP[0m in the usual way
  
  --    type [10XLoadPackage("monoid");[0m
  
  Below  is  an  example  of  an  installation of [5XMONOID[0m in UNIX where [10XGAPROOT[0m
  should  be  substituted  with the main [5XGAP[0m directory (the one containing the
  folders `bin', `lib', and so on) in your installation of [5XGAP[0m.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4X> gunzip monoid3r1p3.tar.gz [0X
    [4X> tar -xf monoid3r1p3.tar [0X
    [4X> mv MONOID GAPROOT/pkg[0X
    [4X> gap [0X
    [4X[0X
    [4X[ ... ][0X
    [4X[0X
    [4Xgap> LoadPackage("monoid");[0X
    [4XLoading MONOID 3.1.3[0X
    [4Xby James Mitchell (www-groups.mcs.st-and.ac.uk/~jamesm)[0X
    [4XFor help, type: ?the monoid package [0X
    [4Xtrue[0X
    [4Xgap> [0X
  [4X------------------------------------------------------------------[0X
  
  Presuming  that  the  above  steps can be completed successfully you will be
  running the [5XMONOID[0m package!
  
  If  you  want  to  check  that  the package is working correctly, please see
  Section [14X1.3[0m.
  
  [12XPlease  note:[0m  before  you  can  used [5XMONOID[0m fully you must install [5XGRAPE[0m as
  described above.
  
  
  [1X1.3 Testing [5XMONOID[1X[0X
  
  In  this section we describe how to test that [5XMONOID[0m is working as intended.
  To  test  that  [5XMONOID[0m  is installed correctly copy the following lines into
  [5XGAP[0m.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4XLoadPackage( "monoid" );;[0X
    [4Xdirs := DirectoriesPackageLibrary( "monoid", "tst" );;[0X
    [4XRead(Filename( dirs, "installtest.g" ) );[0X
  [4X------------------------------------------------------------------[0X
  
  and  press  [10Xreturn[0m.  Please  note that it will take a few moments before the
  tests are complete.
  
  If  the output looks like the following, then it is probable that you have a
  fully working copy of [5XMONOID[0m 3.1.3.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4Xgap> LoadPackage( "monoid" );;[0X
    [4Xgap> dirs := DirectoriesPackageLibrary( "monoid", "tst" );;[0X
    [4Xgap> Read( Filename( dirs, "installtest.g" ) );;[0X
    [4X+ install_no_grape.tst 3.1.3[0X
    [4X+ GAP4stones: 1[0X
    [4X+ install_with_grape.tst 3.1.3[0X
    [4X+ GAP4stones: 2[0X
  [4X------------------------------------------------------------------[0X
  
  If  you  want to perform more extensive tests, then copy the following lines
  into [5XGAP[0m.
  
  [4X---------------------------  Example  ----------------------------[0X
    [4XLoadPackage( "monoid" );;[0X
    [4Xdirs := DirectoriesPackageLibrary( "monoid", "tst" );;[0X
    [4XRead(Filename( dirs, "testall.g" ) );[0X
  [4X------------------------------------------------------------------[0X
  
  Please note that these tests could take a long time to finish.
  
  If  something goes wrong, then please review the instructions in Section [14X1.2[0m
  and  ensure  that [5XMONOID[0m has been properly installed. If you continue having
  problems, please email me at [7Xmailto:jdm3@st-and.ac.uk[0m.
  
  
  [1X1.4 Changes[0X
  
  --    from  3.1.2  to  3.1.3:  the  method for [3XPreImagesRepresentative[0m for a
        semigroup  homomorphism by function now tests whether the homomorphism
        is  bijective  and  total  before trying to find preimages. Some other
        minor corrections were made to the documentation and webpages.
  
  --    from 3.1.1 to 3.1.2:
  
  --          the    following    new    functions   have   been   introduced:
              [2XTransformationActionNC[0m ([14X2.1-6[0m), [2XSmallestIdempotentPower[0m ([14X2.2-6[0m),
              [2XIsKerImgOfTransformation[0m ([14X2.2-2[0m), [2XTransformationByKernelAndImage[0m
              ([14X2.1-1[0m),        [2XAllTransformationsWithKerAndImgNC[0m       ([14X2.1-2[0m),
              [2XAsBooleanMatrix[0m    ([14X2.3-1[0m),    [2XKerImgOfTransformation[0m   ([14X2.2-3[0m),
              [2XRandomIdempotent[0m   ([14X2.1-4[0m),   [2XInversesOfTransformation[0m  ([14X2.2-7[0m),
              [2XKiselmanSemigroup[0m ([14X6.1-3[0m),
  
  --          the following functions were renamed:
  
  --                [10XPermRepTrans[0m was renamed [10XAsPermOfRange[0m
  
  --                [10XImagesTransformationMonoid[0m           was           renamed
                    [10XImagesOfTransSemigroup[0m
  
  --                [10XGradedImagesTransformationMonoid[0m        was        renamed
                    [10XGradedImagesOfTransSemigroup[0m
  
  --                [10XKernelsTransformationMonoid[0m           was          renamed
                    [10XKernelsOfTransSemigroup[0m
  
  --                [10XGradedKernelsTransformationMonoid[0m        was       renamed
                    [10XGradedKernelsOfTransSemigroup[0m
  
  --          the following bugs were fixed:
  
  --                a bug relating to the definition of the semigroup of order
                    preserving functions was resolved
  
  --    from  3.1  to  3.1.1:  fixed a bug that produced an error when loading
        MONOID with the GRAPE package present but not fully installed.
  
  --    from 2 to 3:
  
  --          new  methods  for  testing if a semigroup satisfies a particular
              property,  such  as  if  it  is  regular,  simple,  inverse,  or
              completely regular, see Chapter [14X5[0m;
  
  --          implementations of new algorithms for computing the automorphism
              group  of  an  arbitrary  semigroup generated by transformations
              including an interactive function that allows the user to decide
              how the computation should proceed, see Chapter [14X7[0m;
  
  --          functions  for  finding  automorphisms of Rees matrix semigroups
              and Rees [10X0[0m-matrix semigroups; see Section [14X7.5[0m.
  
  --          functions  for  defining  homomorphisms and isomorphisms between
              some types of semigroups; see Chapter [14X7[0m.
  
  
  [1X1.5 Forthcoming Features[0X
  
  The  features  are  currently  under  development and will be available in a
  future version of [5XMONOID[0m:
  
  --    the  number of special types of semigroups available in [5XMONOID[0m will be
        expanded  to  include  all  of the standard examples of transformation
        semigroups and some matrix semigroups.
  
  --    methods  analogous  to  those used to find Green's relations and other
        structural  properties  of  transformation  semigroups  in the current
        version   of   [5XMONOID[0m   but   for   semigroups  generated  by  partial
        transformations, binary relations, and matrix semigroups.
  
  --    a  suite  of functions for computing with inverse semigroups generated
        by  partial  bijections, including finding faithful representations of
        smaller degree and small generating sets.
  
  --    an algorithm for finding a small generating set of a semigroup.
  
