  
  [1X9 [33X[0;0YStandard constructions[133X[101X
  
  [33X[0;0YIn  this chapter we describe some standard semigroup constructions which are
  available in the [5XSemigroups[105X package.[133X
  
  
  [1X9.1 [33X[0;0YStandard constructions[133X[101X
  
  [33X[0;0YIn this section, we describe the functions in [5XSemigroups[105X that can be used to
  create  standard semigroup constructions in various representations. For all
  of  the  constructions,  the  default  representation  is  as a semigroup of
  transformations.  In general, these functions do not return a representation
  of minimal degree.[133X
  
  [1X9.1-1 TrivialSemigroup[101X
  
  [33X[1;0Y[29X[2XTrivialSemigroup[102X( [[3Xfilt[103X, ][[3Xdeg[103X] ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA trivial semigroup.[133X
  
  [33X[0;0YA [12Xtrivial[112X semigroup is a semigroup with precisely one element. This function
  returns  a  trivial  semigroup  in  the  representation  given by the filter
  [3Xfilter[103X, and (if possible) with the degree of the representation given by the
  non-negative integer [3Xdeg[103X.[133X
  
  [33X[0;0YThe optional argument [3Xfilt[103X may be one of the following:[133X
  
  [30X    [33X[0;6Y[10XIsTransformationSemigroup[110X (the default, if [3Xfilt[103X is not specified),[133X
  
  [30X    [33X[0;6Y[10XIsPartialPermSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBipartitionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBlockBijectionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsPBRSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBooleanMatSemigroup[110X.[133X
  
  [33X[0;0YIf  the  optional  argument [3Xdeg[103X is not specified, then the smallest possible
  degree will be used.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := TrivialSemigroup();[127X[104X
    [4X[28X<trivial transformation group of degree 0 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XSize(S);[127X[104X
    [4X[28X1[128X[104X
    [4X[25Xgap>[125X [27XS := TrivialSemigroup(3);[127X[104X
    [4X[28X<trivial transformation group of degree 3 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XS := TrivialSemigroup(IsBipartitionSemigroup, 2);[127X[104X
    [4X[28X<trivial block bijection group of degree 2 with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XElements(S);[127X[104X
    [4X[28X[ <block bijection: [ 1, 2, -1, -2 ]> ][128X[104X
  [4X[32X[104X
  
  [1X9.1-2 MonogenicSemigroup[101X
  
  [33X[1;0Y[29X[2XMonogenicSemigroup[102X( [[3Xfilt[103X, ][3Xm[103X, [3Xr[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA monogenic semigroup with index [3Xm[103X and period [3Xr[103X.[133X
  
  [33X[0;0YIf  [3Xm[103X  and  [3Xr[103X  are positive integers, then this function returns a monogenic
  semigroup  [10XS[110X  with  index  [3Xm[103X and period [3Xr[103X in the representation given by the
  filter [3Xfilt[103X.[133X
  
  [33X[0;0YThe optional argument [3Xfilt[103X may be one of the following:[133X
  
  [30X    [33X[0;6Y[10XIsTransformationSemigroup[110X (the default, if [3Xfilt[103X is not specified),[133X
  
  [30X    [33X[0;6Y[10XIsPartialPermSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBipartitionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBlockBijectionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsPBRSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBooleanMatSemigroup[110X.[133X
  
  [33X[0;0YThe  semigroup  [10XS[110X  is  generated  by  a single element, [22Xf[122X. [10XS[110X consists of the
  elements  [22Xf,  f  ^ 2, ..., f ^ m, ..., f ^ m + r - 1[122X. The minimal ideal of [10XS[110X
  consists  of the elements [22Xf ^ m, ..., f ^ m + r - 1[122X and is isomorphic to the
  cyclic group of order [22Xr[122X.[133X
  
  [33X[0;0YSee  [2XIsMonogenicSemigroup[102X  ([14X15.1-11[114X)  for  more  information about monogenic
  semigroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := MonogenicSemigroup(5, 3);[127X[104X
    [4X[28X<commutative non-regular transformation semigroup of size 7, degree 8 [128X[104X
    [4X[28X with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XIsMonogenicSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XI := MinimalIdeal(S);;[127X[104X
    [4X[25Xgap>[125X [27XIsGroupAsSemigroup(I);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XStructureDescription(I);[127X[104X
    [4X[28X"C3"[128X[104X
    [4X[25Xgap>[125X [27XS := MonogenicSemigroup(IsBlockBijectionSemigroup, 9, 1);[127X[104X
    [4X[28X<commutative non-regular block bijection semigroup of size 9, [128X[104X
    [4X[28X degree 10 with 1 generator>[128X[104X
  [4X[32X[104X
  
  [1X9.1-3 RectangularBand[101X
  
  [33X[1;0Y[29X[2XRectangularBand[102X( [[3Xfilt[103X, ][3Xm[103X, [3Xn[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YAn [3Xm[103X by [3Xn[103X rectangular band.[133X
  
  [33X[0;0YIf  [3Xm[103X  and  [3Xn[103X  are positive integers, then this function returns a semigroup
  isomorphic to an [3Xm[103X by [3Xn[103X rectangular band, in the representation given by the
  filter [3Xfilt[103X.[133X
  
  [33X[0;0YThe optional argument [3Xfilt[103X may be one of the following:[133X
  
  [30X    [33X[0;6Y[10XIsTransformationSemigroup[110X (the default, if [3Xfilt[103X is not specified),[133X
  
  [30X    [33X[0;6Y[10XIsBipartitionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsPBRSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBooleanMatSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsReesMatrixSemigroup[110X.[133X
  
  [33X[0;0YSee  [2XIsRectangularBand[102X  ([14X15.1-15[114X)  for  more  information  about rectangular
  bands.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XT := RectangularBand(5, 6);[127X[104X
    [4X[28X<regular transformation semigroup of size 30, degree 10 with 6 [128X[104X
    [4X[28X generators>[128X[104X
    [4X[25Xgap>[125X [27XIsRectangularBand(T);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := RectangularBand(IsReesMatrixSemigroup, 4, 8);[127X[104X
    [4X[28X<Rees matrix semigroup 4x8 over Group(())>[128X[104X
    [4X[25Xgap>[125X [27XIsRectangularBand(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XIsCompletelySimpleSemigroup(S) and IsHTrivial(S);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X9.1-4 ZeroSemigroup[101X
  
  [33X[1;0Y[29X[2XZeroSemigroup[102X( [[3Xfilt[103X, ][3Xn[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA zero semigroup of order [3Xn[103X.[133X
  
  [33X[0;0YIf  [3Xn[103X  is a positive integer, then this function returns a zero semigroup of
  order [3Xn[103X in the representation given by the filter [3Xfilt[103X.[133X
  
  [33X[0;0YThe optional argument [3Xfilt[103X may be one of the following:[133X
  
  [30X    [33X[0;6Y[10XIsTransformationSemigroup[110X (the default, if [3Xfilt[103X is not specified),[133X
  
  [30X    [33X[0;6Y[10XIsPartialPermSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBipartitionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBlockBijectionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsPBRSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBooleanMatSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsReesZeroMatrixSemigroup[110X (provided that [10X[3Xn[103X[10X > 1[110X).[133X
  
  [33X[0;0YSee [2XIsZeroSemigroup[102X ([14X15.1-27[114X) for more information about zero semigroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := ZeroSemigroup(5);[127X[104X
    [4X[28X<commutative non-regular transformation semigroup of size 5, degree 5 [128X[104X
    [4X[28X with 4 generators>[128X[104X
    [4X[25Xgap>[125X [27XIsZeroSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := ZeroSemigroup(IsPartialPermSemigroup, 15);[127X[104X
    [4X[28X<commutative non-regular partial perm semigroup of size 15, rank 14 [128X[104X
    [4X[28X with 14 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize(S);[127X[104X
    [4X[28X15[128X[104X
    [4X[25Xgap>[125X [27Xz := MultiplicativeZero(S);[127X[104X
    [4X[28X<empty partial perm>[128X[104X
    [4X[25Xgap>[125X [27XIsZeroSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XForAll(S, x -> ForAll(S, y -> x * y = z));[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X9.1-5 LeftZeroSemigroup[101X
  
  [33X[1;0Y[29X[2XLeftZeroSemigroup[102X( [[3Xfilt[103X, ][3Xn[103X ) [32X function[133X
  [33X[1;0Y[29X[2XRightZeroSemigroup[102X( [[3Xfilt[103X, ][3Xn[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YA left zero (or right zero) semigroup of order [3Xn[103X.[133X
  
  [33X[0;0YIf [3Xn[103X is a positive integer, then this function returns a left zero (or right
  zero,  as  appropriate)  semigroup of order [3Xn[103X in the representation given by
  the filter [3Xfilt[103X. If [3Xfilt[103X is not specified then the default representation is
  [10XIsTransformationSemigroup[110X.[133X
  
  [33X[0;0YThe      function      [10XLeftZeroSemigroup([[3Xfilt[103X[10X,]     [3Xn[103X[10X)[110X     simply     calls
  [10XRectangularBand([[3Xfilt[103X[10X,] [3Xn[103X[10X, 1)[110X and the function [10XRightZeroSemigroup([[3Xfilt[103X[10X,] [3Xn[103X[10X)[110X
  simply calls [10XRectangularBand([[3Xfilt[103X[10X,] 1, [3Xn[103X[10X)[110X.[133X
  
  [33X[0;0YFor  more  information about [10XRectangularBand[110X, including its permitted values
  of  [3Xfilt[103X, see [2XRectangularBand[102X ([14X9.1-3[114X). See [2XIsLeftZeroSemigroup[102X ([14X15.1-10[114X) and
  [2XIsRightZeroSemigroup[102X  ([14X15.1-18[114X)  for  more  information  about left zero and
  right zero semigroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := LeftZeroSemigroup(20);[127X[104X
    [4X[28X<transformation semigroup of degree 6 with 20 generators>[128X[104X
    [4X[25Xgap>[125X [27XIsLeftZeroSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XForAll(Tuples(S, 2), p -> p[1] * p[2] = p[1]);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := RightZeroSemigroup(IsBipartitionSemigroup, 5);[127X[104X
    [4X[28X<regular bipartition semigroup of size 5, degree 3 with 5 generators>[128X[104X
    [4X[25Xgap>[125X [27XIsRightZeroSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
  [4X[32X[104X
  
  [1X9.1-6 BrandtSemigroup[101X
  
  [33X[1;0Y[29X[2XBrandtSemigroup[102X( [[[3Xfilt[103X, ][3XG[103X, ][3Xn[103X ) [32X function[133X
  [6XReturns:[106X  [33X[0;10YAn [3Xn[103X by [3Xn[103X Brandt semigroup over the group [3XG[103X.[133X
  
  [33X[0;0YIf  [3Xn[103X  is  a  positive  integer, then this function returns an [3Xn[103X by [3Xn[103X Brandt
  semigroup over the group [3XG[103X in the representation given by the filter [3Xfilt[103X.[133X
  
  [33X[0;0YThe optional argument [3Xfilt[103X can be any of the following:[133X
  
  [30X    [33X[0;6Y[10XIsPartialPermSemigroup[110X (the default, if [3Xfilt[103X is not specified),[133X
  
  [30X    [33X[0;6Y[10XIsReesZeroMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsTransformationSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBipartitionSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsPBRSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsBooleanMatSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsNTPMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsMaxPlusMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsMinPlusMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsTropicalMaxPlusMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsTropicalMinPlusMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsProjectiveMaxPlusMatrixSemigroup[110X,[133X
  
  [30X    [33X[0;6Y[10XIsIntegerMatrixSemigroup.[110X[133X
  
  [33X[0;0YThe  optional argument [3XG[103X defaults to a trivial permutation group. If present
  [3XG[103X must be a permutation group, unless [3Xfilt[103X is [10XIsReesZeroMatrixSemigroup[110X when
  [3XG[103X may be any type of finite group.[133X
  
  [33X[0;0YSee [2XIsBrandtSemigroup[102X ([14X16.2-2[114X) for more information about Brandt semigroups.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := BrandtSemigroup(5);[127X[104X
    [4X[28X<0-simple inverse partial perm semigroup of rank 5 with 4 generators>[128X[104X
    [4X[25Xgap>[125X [27XIsBrandtSemigroup(S);[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XS := BrandtSemigroup(IsTransformationSemigroup, 15);[127X[104X
    [4X[28X<0-simple transformation semigroup of degree 16 with 28 generators>[128X[104X
    [4X[25Xgap>[125X [27XSize(S);[127X[104X
    [4X[28X226[128X[104X
    [4X[25Xgap>[125X [27XMultiplicativeZero(S);[127X[104X
    [4X[28XTransformation( [ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16,[128X[104X
    [4X[28X  16, 16, 16 ] )[128X[104X
    [4X[25Xgap>[125X [27XS := BrandtSemigroup(Group((1, 2)), 3);[127X[104X
    [4X[28X<0-simple inverse partial perm semigroup of rank 6 with 3 generators>[128X[104X
    [4X[25Xgap>[125X [27XS := BrandtSemigroup(IsTransformationSemigroup, Group((1, 2)), 3);[127X[104X
    [4X[28X<0-simple transformation semigroup of degree 7 with 5 generators>[128X[104X
    [4X[25Xgap>[125X [27XS := BrandtSemigroup(IsReesZeroMatrixSemigroup, [127X[104X
    [4X[25X>[125X [27X                        DihedralGroup(4), [127X[104X
    [4X[25X>[125X [27X                        2);[127X[104X
    [4X[28X<Rees 0-matrix semigroup 2x2 over <pc group of size 4 with [128X[104X
    [4X[28X 2 generators>>[128X[104X
  [4X[32X[104X
  
