  
  [1X1 [33X[0;0YIntroduction[133X[101X
  
  [33X[0;0YThis manual describes the [5XSmallsemi[105X package (Version 0.7.2) for [5XGAP[105X.[133X
  
  [33X[0;0YThe  [5XSmallsemi[105X  package  is  a  data library of semigroups of small size. It
  provides  all  semigroups  with  at  most  8  elements  as  well  as various
  information about these objects. The reason that semigroups of higher orders
  are  not  included  is  the  huge  number  of  such  objects. The numbers of
  semigroups  of  sizes  1  to  9  are given in the table below. The number of
  semigroups of size 10 is not known at the time of writing.[133X
  
      ┌──────┬──────────────────────┐
      │ Size │ Number of semigroups │ 
      ├──────┼──────────────────────┤
      ├──────┼──────────────────────┤
      │    1 │                    1 │ 
      ├──────┼──────────────────────┤
      │    2 │                    4 │ 
      ├──────┼──────────────────────┤
      │    3 │                   18 │ 
      ├──────┼──────────────────────┤
      │    4 │                  126 │ 
      ├──────┼──────────────────────┤
      │    5 │                1 160 │ 
      ├──────┼──────────────────────┤
      │    6 │               15 973 │ 
      ├──────┼──────────────────────┤
      │    7 │              836 021 │ 
      ├──────┼──────────────────────┤
      │    8 │        1 843 120 128 │ 
      ├──────┼──────────────────────┤
      │    9 │   [13X52 989 400 714 478[113X │ 
      └──────┴──────────────────────┘
  
  [33X[0;0YThe  initial  idea  for  [5XSmallsemi[105X  was  developed  out  of  the wish for an
  extensive  number  of  examples of semigroups of moderate size. This lead to
  the idea of an electronical database. As an existing example the [5XSmallGroups
  Library[105X  [BEO02]  was  an  inspiration  on  how  such  a  project  could  be
  established.  Unfortunately  the number of semigroups is so much bigger, and
  most  of  them  bare  so  little structure, that new techniques to store and
  handle  the semigroups had to be developed. Of course, the first step was to
  actually construct all the semigroups.[133X
  
  [33X[0;0YIn  the  remainder  of  the  introduction  we explain what you need to do to
  install and optimize [5XSmallsemi[105X; see Subsections [14X1.1[114X and [14X1.2[114X.[133X
  
  [33X[0;0YIn  Chapter  [14X2[114X we explain how the semigroups where obtained, what exactly is
  stored and how, and which additional properties have been precomputed.[133X
  
  [33X[0;0YThe  the  types  of  use  [5XSmallsemi[105X  is intended for and its limitations are
  described  in Chapter [14X3[114X. The extensive examples can be used as a quick-start
  guide  and  as something to come back to after reading the technical details
  about available functionality in the subsequent sections.[133X
  
  [33X[0;0YChapter [14X4[114X has all the information about available functions.[133X
  
  
  [1X1.1 [33X[0;0YRequirements[133X[101X
  
  [33X[0;0YThis  software is written for [5XGAP[105X 4. It requires an existing installation of
  [5XGAP[105X in version 4.5 or higher.[133X
  
  [33X[0;0YIt  is  recommended  but not necessary to have the [5XGAP[105X 4 packages [5XCitrus[105X and
  [5Xsgpviz[105X  installed as well. [5XCitrus[105X provides a wide range of functionality for
  working  with semigroups which is not available in the [5XGAP[105X core system while
  [5Xsgpviz[105X  is  recommended  for  its  ability  to  graphically  represent small
  semigroups.[133X
  
  
  [1X1.1-1 [33X[0;0YOperating System[133X[101X
  
  [33X[0;0YThe  current  version  of  [5XSmallsemi[105X was created for use under Unix. It will
  also   work   under   Windows  but  only  if  all  files  in  the  directory
  [11Xsmallsemi/data[111X   and   all  of  its  subdirectories  are  uncompressed.  See
  Subsection  [14X1.1-3[114X  for  additional  comments on working with [5XSmallsemi[105X under
  Windows.[133X
  
  
  [1X1.1-2 [33X[0;0YRAM[133X[101X
  
  [33X[0;0YWorking  with  [5XSmallsemi[105X  can  be  memory expensive. We recommend to have at
  least 1 GB of RAM available. With less than 512 MB not all the semigroups of
  size 8 can be accessed.[133X
  
  [33X[0;0YYou should be able to use the semigroups of orders 1 through 7 having 128 MB
  of  RAM  only.  If  you  have  a system with little memory or want to use as
  little  memory as possible for the [5XGAP[105X process try using [2XUnloadSmallsemiData[102X
  ([14X4.1-9[114X)  to free memory after every access to the library. This is likely to
  slow down computations though.[133X
  
  [33X[0;0YFor  further  information  on  how  [5XGAP[105X uses memory see [14X1.2-4[114X or [14X'Reference:
  Command Line Options'[114X.[133X
  
  
  [1X1.1-3 [33X[0;0YDisk Space[133X[101X
  
  [33X[0;0YAs  the  data  in  the  library  is  compressed, 30 MB of disk space will be
  sufficient to install [5XSmallsemi[105X under Unix. To use the library under Windows
  the data has to be uncompressed and will then occupy approx. 1.6 GB.[133X
  
  [33X[0;0YAll  data  files  are  compressed  using [11Xgzip[111X. Under Unix [5XGAP[105X can access the
  original  contents  of a gzipped file without uncompressing it as a whole by
  using a pipe. On 32-bit systems this might fail in extreme circumstances. In
  that  case  [5XGAP[105X  has  to  be  restarted. This functionality is [13Xnot[113X currently
  available under Windows (or for any other compression type).[133X
  
  [33X[0;0YIt  should  be  possible  to use [5XSmallsemi[105X under Windows after unzipping all
  data  files. (These are located in the directory [11Xdata[111X and its subdirectories
  and have the file extension [11X.gz[111X.)[133X
  
  
  [1X1.2 [33X[0;0YInstallation and Setup[133X[101X
  
  
  [1X1.2-1 [33X[0;0YDownload and Extract [5XSmallsemi[105X[101X[1X[133X[101X
  
  [33X[0;0YThe installation follows standard [5XGAP[105X rules as outlined in the following two
  steps; see [14X'Reference: Installing a GAP Package'[114X for further details.[133X
  
  [31X1[131X   [33X[0;6YDownload    one    of    the    archives   [11Xsmallsemi-0.7.2.tar.gz[111X   or
        [11Xsmallsemi-0.7.2.tar.bz2[111X from[133X
        [33X[0;6Y[7Xhttp://www-groups.mcs.st-andrews.ac.uk/~jamesm/smallsemi.php[107X[133X
  
  [31X2[131X   [33X[0;6YMove  the  archive inside a [11Xpkg[111X directory. This can be either the main
        [11Xpkg[111X directory in your [5XGAP[105X installation or your personal [11Xpkg[111X directory.[133X
  
  [31X3[131X   [33X[0;6YComplete  the  installation by unpacking the archive, e.g. under Linux
        type  [11Xtar  -xzf  smallsemi-0.7.2.tar.gz[111X  at the prompt for the gzipped
        [11Xtar[111X-archive.  A  subdirectory [11Xsmallsemi[111X will be created inside the [11Xpkg[111X
        directory.[133X
  
  
  [1X1.2-2 [33X[0;0YContents[133X[101X
  
  [33X[0;0YIn  the  subdirectory  [11Xsmallsemi[111X  you  should  find  the following files and
  folders:[133X
  
        [11XCHANGELOG[111X       documents changes to previous versions        
        [11Xdata[111X            contains the data files for semigroups        
        [11Xdoc[111X             contains the documentation                    
        [11Xgap[111X             contains the [5XGAP[105X code                         
        [11XLICENSE[111X         version 3 of the GNU General Public License   
        [11Xinit.g[111X          implementation file of [5XSmallsemi[105X              
        [11XPackageInfo.g[111X   meta information about [5XSmallsemi[105X              
        [11Xread.g[111X          declaration file of [5XSmallsemi[105X                 
        [11XREADME.txt[111X      the README file of [5XSmallsemi[105X                  
        [11Xtst[111X             contains test files                           
  
  
  [1X1.2-3 [33X[0;0YLoading[133X[101X
  
  [33X[0;0YTo  use  the package, start a [5XGAP[105X session and type [10XLoadPackage("smallsemi");[110X
  at the [5XGAP[105X prompt. You should see the following:[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XLoadPackage("smallsemi");[127X[104X
    [4X[28X-----------------------------------------------------------------------------[128X[104X
    [4X[28XSmallsemi - A library of small semigroups[128X[104X
    [4X[28Xby Andreas Distler &amp; James Mitchell[128X[104X
    [4X[28XFor contents, type: ?Smallsemi:[128X[104X
    [4X[28XLoading Smallsemi &VERSION; ...[128X[104X
    [4X[28X-----------------------------------------------------------------------------[128X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [33X[0;0YYou  might  want  to  start  [5XGAP[105X  with  a  specified  amount  of memory; see
  Subsection [14X1.2-4[114X.[133X
  
  
  [1X1.2-4 [33X[0;0YMemory Issues[133X[101X
  
  [33X[0;0YAs  mentioned  in  Subsection  [14X1.1-2[114X,  working with [5Xsmallsemi [105X can be memory
  expensive. It is therefore necessary to either:[133X
  
  [31X1[131X   [33X[0;6Ystart  [5XGAP[105X  with  1 GB of memory (if possible), for example, by typing
        [10Xgap -m 1g[110X; or[133X
  
  [31X2[131X   [33X[0;6Yextend  the  amount  memory  used  by typing [10Xreturn;[110X in the break-loop
        whenever [5XGAP[105X runs out of memory. For example,[133X
  
  [4X      [32X  Example  [32X[104X
          [4X[25Xgap>[125X [27Xs := SmallSemigroup(8, 183244314);[127X[104X
          [4X[28X#I  Loading 'smallsemi' data. Please be patient.[128X[104X
          [4X[28X#I  Loading 'smallsemi' data.[128X[104X
          [4X[28XError, exceeded the permitted memory (`-o' command line option)[128X[104X
          [4X[28XSplitString( StringFile( file ), "\n" ) called from[128X[104X
          [4X[28XREAD_3NIL_DATA( diag ); called from[128X[104X
          [4X[28XRecoverMultiplicationTable( size, nr ) called from[128X[104X
          [4X[28X<function>( <arguments> ) called from read-eval-loop[128X[104X
          [4X[28Xyou can 'return;'[128X[104X
          [4X[26Xbrk>[126X[104X
        [4X[32X[104X
  
  
  [1X1.2-5 [33X[0;0YTesting[133X[101X
  
  [33X[0;0YYou  should verify the success of the installation by running the test file.
  This  is  done  by  the following command and should return a similar output
  (the timings will differ depending on the speed of your machine):[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XReadPackage("smallsemi", "tst/testall.g");[127X[104X
    [4X[28XArchitecture: aarch64-apple-darwin21.3.0-default64-kv8[128X[104X
    [4X[28X[128X[104X
    [4X[28Xtesting: smallsemi/tst/coclass.tst[128X[104X
    [4X[28X    2350 ms (323 ms GC) and 471MB allocated for coclass.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/enums.tst[128X[104X
    [4X[28X    3452 ms (923 ms GC) and 2.69GB allocated for enums.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/greensstar.tst[128X[104X
    [4X[28X     173 ms (109 ms GC) and 90.1MB allocated for greensstar.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/properties.tst[128X[104X
    [4X[28X     574 ms (233 ms GC) and 213MB allocated for properties.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/small.tst[128X[104X
    [4X[28X     322 ms (201 ms GC) and 174MB allocated for small.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/smallsemi01.tst[128X[104X
    [4X[28X     323 ms (56 ms GC) and 128MB allocated for smallsemi01.tst[128X[104X
    [4X[28Xtesting: smallsemi/tst/smallsemi02.tst[128X[104X
    [4X[28X    2079 ms (587 ms GC) and 1.23GB allocated for smallsemi02.tst[128X[104X
    [4X[28X-----------------------------------[128X[104X
    [4X[28Xtotal      9273 ms (2432 ms GC) and 4.98GB allocated[128X[104X
    [4X[28X              0 failures in 7 files[128X[104X
    [4X[28X[128X[104X
    [4X[28X#I  No errors detected while testing[128X[104X
    [4X[28X[128X[104X
  [4X[32X[104X
  
  
  [1X1.2-6 [33X[0;0YCustomizing[133X[101X
  
  [33X[0;0YIf  you  are  using  [5XSmallsemi[105X  regularly  you might want to put the command
  [10XLoadPackage("smallsemi");[110X into your [11X.gaprc[111X file; see [14X'Reference: The gap.ini
  and  gaprc  files'[114X.  Another  option  is  to  save a workspace after loading
  [5XSmallsemi[105X and executing the following commands[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XSmallSemigroup(7, 1);; MOREDATA2TO8;;[127X[104X
    [4X[28X#I  smallsemi: loading data for semigroups of size 7.[128X[104X
    [4X[28X#I  smallsemi: loading data for semigroup properties. Please be patient.[128X[104X
    [4X[25Xgap>[125X [27XSaveWorkspace("<filename for the workspace>");[127X[104X
  [4X[32X[104X
  
  [33X[0;0YDoing  this  will  mean  that  it is not necessary to load the data from the
  library  every  time you start a new [5XGAP[105X session; see [14X'Reference: Saving and
  Loading a Workspace'[114X.[133X
  
  [33X[0;0YThe  size  of  the file containing the saved workspace will be around 76 MB.
  Loading  this  workspace is much quicker than starting a new [5XGAP[105X session and
  all  the data for semigroups of orders 1 through 7 is immediately available.
  (If  you  are  working  under  Unix  you  can  make use of the functionality
  mentioned  in  Subsection  [14X1.1-3[114X  and  compress  the  workspace with gzip to
  roughly 10 MB.)[133X
  
