  
  [1X2 [33X[0;0YInstalling [5XSemigroups[105X[101X[1X[133X[101X
  
  
  [1X2.1 [33X[0;0YFor those in a hurry[133X[101X
  
  [33X[0;0YIn  this  section  we  give  a  brief  description  of  how  to  start using
  [5XSemigroups[105X.[133X
  
  [33X[0;0YIt  is assumed that you have a working copy of [5XGAP[105X with version number 4.9.0
  or  higher.  The  most  up-to-date version of [5XGAP[105X and instructions on how to
  install    it    can    be    obtained    from    the   main   [5XGAP[105X   webpage
  [7Xhttp://www.gap-system.org[107X.[133X
  
  [33X[0;0YThe  following  is  a  summary of the steps that should lead to a successful
  installation of [5XSemigroups[105X:[133X
  
  [30X    [33X[0;6Yensure  that  the  [5XIO[105X package version 4.5.1 or higher is available. [5XIO[105X
        must be compiled before [5XSemigroups[105X can be loaded.[133X
  
  [30X    [33X[0;6Yensure  that the [5XOrb[105X package version 4.8.0 or higher is available. [5XOrb[105X
        and [5XSemigroups[105X both perform better if [5XOrb[105X is compiled.[133X
  
  [30X    [33X[0;6Yensure   that  the  [5XDigraphs[105X  package  version  0.12.0  or  higher  is
        available. [5XDigraphs[105X must be compiled before [5XSemigroups[105X can be loaded.[133X
  
  [30X    [33X[0;6Yensure that the [5Xgenss[105X package version 1.6.5 or higher is available.[133X
  
  [30X    [33X[0;6Ydownload   the   package  archive  [11Xsemigroups-3.0.16.tar.gz[111X  from  the
        Semigroups                       package                       webpage
        ([7Xhttps://gap-packages.github.io/Semigroups[107X).[133X
  
  [30X    [33X[0;6Yunzip  and  untar  the  file,  this  should  create a directory called
        [11Xsemigroups-3.0.16[111X.[133X
  
  [30X    [33X[0;6Ylocate  the  [11Xpkg[111X  directory  of your [5XGAP[105X directory, which contains the
        directories  [11Xlib[111X,  [11Xdoc[111X and so on. Move the directory [11Xsemigroups-3.0.16[111X
        into the [11Xpkg[111X directory.[133X
  
  [30X    [33X[0;6Yfrom version 3.0.0, it is necessary to compile the [5XSemigroups[105X package.
        [5XSemigroups[105X              uses             the             libsemigroups
        ([7Xhttps://james-d-mitchell.github.io/libsemigroups/[107X) C++ library, which
        requires  a  compiler  implementing  the  C++11  standard.  Inside the
        [11Xpkg/semigroups-3.0.16[111X directory, type[133X
  
  [4X      [32X[104X
          [4X./configure[104X
          [4Xmake[104X
        [4X[32X[104X
  
        [33X[0;6YFurther information about this step can be found in Section [14X2.3[114X.[133X
  
  [30X    [33X[0;6Ystart [5XGAP[105X in the usual way (i.e. type [10Xgap[110X at the command line).[133X
  
  [30X    [33X[0;6Ytype [10XLoadPackage("semigroups");[110X[133X
  
  [33X[0;0Y[13X[12XPlease note that[112X from version 3.0.0: [5XSemigroups[105X can only be loaded if it has
  been compiled.[113X[133X
  
  [33X[0;0YIf  you  want to check that the package is working correctly, you should run
  some of the tests described in Section [14X2.5[114X.[133X
  
  
  [1X2.2 [33X[0;0YPackage dependencies[133X[101X
  
  [33X[0;0YThe  [5XSemigroups[105X  package is written in [5XGAP[105X and C++ and requires the [5XOrb[105X, [5XIO[105X,
  [5XDigraphs[105X  and [5Xgenss[105X packages. The [5XOrb[105X package is used to efficiently compute
  components  of  actions,  which underpin many of the features of [5XSemigroups[105X.
  The  [5XIO[105X package is used to read and write elements of a semigroup to a file.
  The  [5Xgenss[105X  package  is used in a non-deterministic version of the operation
  [2XNormalizer[102X  ([14X13.11-1[114X)  and  in calculating the stabiliser of a Rees 0-matrix
  semigroup's matrix. The [5XDigraphs[105X package is used in a variety of ways in the
  [5XSemigroups[105X  package,  in  particular,  to  apply  standard  graph  theoretic
  algorithms to certain data structures.[133X
  
  
  [1X2.3 [33X[0;0YCompiling the kernel module[133X[101X
  
  [33X[0;0YAs  of version 3.0.0, the [5XSemigroups[105X package has a [5XGAP[105X kernel module written
  in  C/C++  and  this  must be compiled. The kernel module contains low-level
  functions relating to the enumeration of certain types of semigroups, and it
  is not possible to use the [5XSemigroups[105X package without compiling it.[133X
  
  [33X[0;0YTo  compile the kernel component inside the [11Xpkg/semigroups-3.0.16[111X directory,
  type[133X
  
  [4X[32X[104X
    [4X[104X
    [4X./configure[104X
    [4Xmake[104X
  [4X[32X[104X
  
  [33X[0;0YIf  you  are  using GCC to compile [5XSemigroups[105X, then version 5.0 or higher is
  required.  Trying  to compile [5XSemigroups[105X with an earlier version of GCC will
  result  in  an error at compile time. [5XSemigroups[105X supports GCC version 5.0 or
  higher, and clang version 5.0 or higher.[133X
  
  [33X[0;0YIf  you  installed  the  package  in  another  [11Xpkg[111X  directory other than the
  standard  [11Xpkg[111X  directory  in  your [5XGAP[105X installation, then you have to do two
  things.   Firstly   during   compilation   you   have   to  use  the  option
  [10X--with-gaproot=PATH[110X of the [10Xconfigure[110X script where [10XPATH[110X is a path to the main
  [5XGAP[105X root directory (if not given the default [10X../..[110X is assumed).[133X
  
  [33X[0;0YIf  you  installed  [5XGAP[105X  on  several  architectures,  you  must  execute the
  configure/make  step  for  each of the architectures. You can either do this
  immediately after configuring and compiling [5XGAP[105X itself on this architecture,
  or  alternatively set the environment variable [10XCONFIGNAME[110X to the name of the
  configuration  you  used when compiling [5XGAP[105X before running [10X./configure[110X. Note
  however  that  your  compiler choice and flags (environment variables [10XCC[110X and
  [10XCFLAGS[110X)  need  to  be  chosen  to  match  the  setup  of  the  original  [5XGAP[105X
  compilation.  For  example  you  have  to  specify  32-bit  or  64-bit  mode
  correctly![133X
  
  
  [1X2.4 [33X[0;0YRebuilding the documentation[133X[101X
  
  [33X[0;0YThe  [5XSemigroups[105X  package comes complete with pdf, html, and text versions of
  the  documentation.  However, you might find it necessary, at some point, to
  rebuild   the   documentation.   To   rebuild   the  documentation  use  the
  [2XSemigroupsMakeDoc[102X ([14X2.4-1[114X).[133X
  
  [1X2.4-1 SemigroupsMakeDoc[101X
  
  [33X[1;0Y[29X[2XSemigroupsMakeDoc[102X(  ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YNothing.[133X
  
  [33X[0;0YThis  function  should  be called with no argument to compile the [5XSemigroups[105X
  documentation.[133X
  
  
  [1X2.5 [33X[0;0YTesting your installation[133X[101X
  
  [33X[0;0YIn  this  section  we  describe  how  to  test that [5XSemigroups[105X is working as
  intended.  To  quickly  test  that  [5XSemigroups[105X  is  installed  correctly use
  [2XSemigroupsTestInstall[102X  ([14X2.5-1[114X)  -  this  will  take  a few seconds. For more
  extensive  tests  use [2XSemigroupsTestStandard[102X ([14X2.5-2[114X) - this may take several
  minutes.  Finally,  for lengthy benchmarking tests use [2XSemigroupsTestExtreme[102X
  ([14X2.5-3[114X) - this may take more than half an hour.[133X
  
  [33X[0;0YIf  something goes wrong, then please review the instructions in Section [14X2.1[114X
  and  ensure  that  [5XSemigroups[105X  has  been properly installed. If you continue
  having       problems,      please      use      the      issue      tracker
  ([7Xhttps://github.com/gap-packages/Semigroups/issues[107X) to report the issues you
  are having.[133X
  
  [1X2.5-1 SemigroupsTestInstall[101X
  
  [33X[1;0Y[29X[2XSemigroupsTestInstall[102X(  ) [32X function[133X
  [6XReturns:[106X  [33X[0;10Y[9Xtrue[109X or [9Xfalse[109X.[133X
  
  [33X[0;0YThis function should be called with no argument to test your installation of
  [5XSemigroups[105X  is working correctly. These tests should take no more than a few
  seconds  to  complete.  To  more  comprehensively  test  that  [5XSemigroups[105X is
  installed correctly use [2XSemigroupsTestStandard[102X ([14X2.5-2[114X).[133X
  
  [1X2.5-2 SemigroupsTestStandard[101X
  
  [33X[1;0Y[29X[2XSemigroupsTestStandard[102X(  ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA  list indicating which tests passed and failed and the time take
            to run each file.[133X
  
  [33X[0;0YThis function should be called with no argument to comprehensively test that
  [5XSemigroups[105X  is working correctly. These tests should take no more than a few
  minutes  to complete. To quickly test that [5XSemigroups[105X is installed correctly
  use [2XSemigroupsTestInstall[102X ([14X2.5-1[114X).[133X
  
  [33X[0;0YEach  test  file  is  run twice, once when the methods for [2XIsActingSemigroup[102X
  ([14X6.1-3[114X) are enabled and once when they are disabled.[133X
  
  [1X2.5-3 SemigroupsTestExtreme[101X
  
  [33X[1;0Y[29X[2XSemigroupsTestExtreme[102X(  ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA  list indicating which tests passed and failed and the time take
            to run each file.[133X
  
  [33X[0;0YThis  function  should  be  called with no argument to run some long-running
  tests,  which  could  be used to benchmark [5XSemigroups[105X or test your hardware.
  These  tests  should  take  no more than around half an hour to complete. To
  quickly    test    that    [5XSemigroups[105X    is    installed    correctly    use
  [2XSemigroupsTestInstall[102X  ([14X2.5-1[114X),  or  to  test all aspects of the package use
  [2XSemigroupsTestStandard[102X ([14X2.5-2[114X).[133X
  
  [33X[0;0YEach test file is run twice, once when the methods for semigroups satisfying
  [2XIsActingSemigroup[102X ([14X6.1-3[114X) are enabled and once when they are disabled.[133X
  
  
  [1X2.6 [33X[0;0YMore information during a computation[133X[101X
  
  [1X2.6-1 InfoSemigroups[101X
  
  [33X[1;0Y[29X[2XInfoSemigroups[102X[32X info class[133X
  
  [33X[0;0Y[10XInfoSemigroups[110X  is  the info class of the [5XSemigroups[105X package. The info level
  is  initially  set  to 0 and no info messages are displayed. To increase the
  amount of information displayed during a computation increase the info level
  to  2  or  3.  To  stop all info messages from being displayed, set the info
  level   to   0.  See  also  [14X'Reference:  Info  Functions'[114X  and  [2XSetInfoLevel[102X
  ([14XReference: InfoLevel[114X).[133X
  
