  
  [1X2 [33X[0;0YThe Data in the Library[133X[101X
  
  [33X[0;0YIn  this  chapter  we  outline how the semigroups in the library were found,
  exactly  what semigroups are available, how they are stored, and how further
  information regarding the properties of these semigroups is handled.[133X
  
  
  [1X2.1 [33X[0;0YCreation of the Semigroups[133X[101X
  
  [33X[0;0YThis section describes which semigroups are contained in the library and how
  they were determined.[133X
  
  [33X[0;0YThe  purpose of the library is to provide one semigroup of every `structural
  type'.  The  semigroups  are  represented  by  their  multiplication  table.
  Usually,  say,  for groups, `stuctural type' means 'up to isomorphism' which
  corresponds  to  relabelling the elements. Roughly speaking, transposing the
  multiplicationable  of  a  semigroup  does not alter its important structure
  features either. More precisely, the usual description of the structure of a
  semigroup  using  Green's relations is invariant under these operations. So,
  we  consider  two  semigroups  to  be  of  the  same  structure  if they are
  isomorphic  or  anti-isomorphic.  We  will  refer  to  semigroups  that  are
  isomorphic   or   anti-isomorphic   as   [13Xequivalent[113X.   The  vast  number  of
  non-equivalent  semigroups  with  small  numbers  of elements (see Table [14X1.[114X)
  limits us to providing the semigroups with at most 8 elements.[133X
  
  [33X[0;0YThe   problem   of   constructing   semigroups   up   to   isomorphism   and
  anti-isomorphism has been considered by many authors. For very small orders,
  that  is  1  to 5, all the semigroups up to isomorphism and anti-isomorphism
  were  computed by hand [THASIT55] and [Tam54]. The first instance of the use
  of  computers  to find all semigroups up to isomorphism and anti-isomorphism
  is  described  in  Forsythe  [For55]. Subsequently, the number of semigroups
  with  6 elements was found by Plemmons [Ple67], with 7 elements by Jürgensen
  and  Wick  [JW77], with 8 by Satoh, Yama and Tokizawa [SYT94], and with 9 by
  Distler, Kelsey, and Mitchell in 2008. Even if the authors could store their
  results  they  had no means to make them publically available. Plemmons, for
  example,  explicitly  states  that  he  had  all  multiplication  tables for
  semigroups  of  size 6 on magnetic tape. Jürgensen and Wick back in 1977 did
  not store the semigroups of size 7 because of their large number. The tables
  for semigroups with 8 elements use up several gigabytes of disk space (while
  the compressed library files in [5XSmallsemi[105X need only 22 MB).[133X
  
  [33X[0;0YTrying  to  recreate  the  results  from the existing literature, it quickly
  becomes  obvious  that  even  some  15  years  later, with considerably more
  computing  power  available,  the  task  of  obtaining all semigroups with 8
  elements  is  still  by  no  means  trivial.  Our  technique was to find all
  associative  multiplication  tables  up  to isomorphism and anti-isomorphism
  using  a  combination  of  [5XGAP[105X  and the Contraint Satisfaction Problem (CSP)
  solver Minion [GJM06]. More specific details on the search will be available
  in a later version of [5XSmallsemi[105X.[133X
  
  
  [1X2.2 [33X[0;0YStoring the Semigroups[133X[101X
  
  [33X[0;0YAs  discussed  in  the  previous  section,  we  store  data  relating to the
  multiplication  table  of  one  representative  of every class of equivalent
  semigroups with 1 to 8 elements.[133X
  
  [33X[0;0YThe  tables  for  semigroups  with  2  to 7 elements are stored in the files
  [11Xdata2.gl.gz[111X to [11Xdata7.gl.gz[111X in the directory [11Xdata/data2to7[111X.[133X
  
  [33X[0;0YFor  semigroups  of  size  8  the  data  is  contained  in  the  directories
  [11Xdata/data8-3nil[111X  and  [11Xdata/data8[111X.  The  former contains the data relating to
  3-nilpotent  semigroups  (see  [2XNilpotencyDegree[102X ([14X4.2-34[114X)) and the latter the
  data for all the remaining semigroups of size 8.[133X
  
  [33X[0;0YThe   tables  of  non-3-nilpotent  semigroups  are  partitioned  into  files
  [11X8diag<entries  in  the  diagonal>.gl.gz[111X with respect to their diagonals. For
  example, [11X8diag12345678.gl.gz[111X contains tables for all the bands of order 8.[133X
  
  [33X[0;0YAny  3-nilpotent  semigroup  has  a unique minimal generating set containing
  those elements that do not appear in the table. We only require the subtable
  with  entries  corresponding  to the product of two generators, as all other
  products  are  zero.  Thus  if  [22Xm[122X  is  the  number  of generators, we retain
  information  regarding  the  entries  of  an [22Xm × m[122X table. However, we do not
  store  all  the  tables  in  this  case. The [22Xm × m[122X tables can be sorted into
  ranges  and  then  the first table and the number of tables in the range are
  stored.   For   every   diagonal   there  is  a  file  [11Xdiag<entries  in  the
  diagonal>.gl.gz[111X  containing  the  first  tables of each range and a separate
  file  named [11Xdiag<entries in the diagonal>pos.gl.gz[111X containing the lengths of
  these ranges.[133X
  
        class                   │ file names         │ data size │ - gzipped │ compression factor
        ────────────────────────┼────────────────────┼───────────┼───────────┼─  
        sizes 2-7               │ [11Xdata<size>.gl[111X      │     39 MB │    680 KB │                 58
        size 8, not 3-nilpotent │ [11X8diag<diagonal>.gl[111X │    613 MB │     10 MB │                 61
        size 8, 3-nilpotent     │ [11Xdiag<diagonal>.gl[111X  │    974 MB │     11 MB │                 89
  
  [33X[0;0YAll together the [5XGAP[105X library files take just under 22 MB of disk space after
  compression  while  allowing  fast  recovering  of the data. The compression
  rates  demonstrated  in  the  table  above were achieved using [10Xgzip[110X with the
  highest  possible  compression  (-9  switch) as well as careful analysis and
  intensive testing of how best to structure the data in the files.[133X
  
  [33X[0;0YThe  semigroups  in  the library satisfying certain standard properties have
  been  identified  and  this information is stored in the files [11Xinfo1.g.gz[111X to
  [11Xinfo8.g.gz[111X.   To   find   out  what  properties  have  been  considered  see
  [2XPrecomputedSmallSemisInfo[102X ([14X4.5-19[114X).[133X
  
