  
  [1X3 [33X[0;0YIdeals[133X[101X
  
  [33X[0;0YIn  this  chapter  we describe the various ways that an ideal of a semigroup
  can be created and manipulated in [5XSemigroups[105X.[133X
  
  [33X[0;0YWe write [13Xideal[113X to mean two-sided ideal everywhere in this chapter.[133X
  
  [33X[0;0YThe   methods   in   the   [5XSemigroups[105X  package  apply  to  any  ideal  of  a
  transformation,  partial  permutation, or bipartition semigroup, or an ideal
  of  a  subsemigroup  of  a  Rees  0-matrix semigroup, that is created by the
  function [2XSemigroupIdeal[102X ([14X3.1-1[114X) or [10XSemigroupIdealByGenerators[110X. Anything that
  can  be  calculated  for a semigroup defined by a generating set can also be
  found  for  an ideal. This works particularly well for regular ideals, since
  such an ideal can be represented using a similar data structure to that used
  to  represent  a  semigroup  defined  by  a  generating  set but without the
  necessity  to  find  a  generating  set  for  the  ideal.  Many  methods for
  non-regular  ideals  rely  on  first finding a generating set for the ideal,
  which  can  be costly (but not nearly as costly as an exhaustive enumeration
  of  the  elements  of  the  ideal).  We plan to improve the functionality of
  [5XSemigroups[105X for non-regular ideals in the future.[133X
  
  
  [1X3.1 [33X[0;0YCreating ideals[133X[101X
  
  [1X3.1-1 SemigroupIdeal[101X
  
  [29X[2XSemigroupIdeal[102X( [3XS[103X, [3Xobj1[103X, [3Xobj2[103X, [3X...[103X ) [32X function
  [6XReturns:[106X  [33X[0;10YAn ideal of a semigroup.[133X
  
  [33X[0;0YIf  [3Xobj1[103X,  [3Xobj2[103X, ... are (any combination) of elements of the semigroup [3XS[103X or
  collections of elements of [3XS[103X (including subsemigroups and ideals of [3XS[103X), then
  [10XSemigroupIdeal[110X returns the 2-sided ideal of the semigroup [3XS[103X generated by the
  union of [3Xobj1[103X, [3Xobj2[103X, ....[133X
  
  [33X[0;0YThe [2XParent[102X ([14XReference: Parent[114X) of the ideal returned by this function is [3XS[103X.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=SymmetricInverseMonoid(10);[127X[104X
    [4X[28X<symmetric inverse semigroup on 10 pts>[128X[104X
    [4X[25Xgap>[125X [27XI:=SemigroupIdeal(S, PartialPerm([1,2]));[127X[104X
    [4X[28X<inverse partial perm semigroup ideal on 10 pts with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XSize(I);[127X[104X
    [4X[28X4151[128X[104X
    [4X[25Xgap>[125X [27XI:=SemigroupIdeal(S, I, Idempotents(S));[127X[104X
    [4X[28X<inverse partial perm semigroup ideal on 10 pts with 1025 generators>[128X[104X
  [4X[32X[104X
  
  
  [1X3.2 [33X[0;0YAttributes of ideals[133X[101X
  
  [1X3.2-1 GeneratorsOfSemigroupIdeal[101X
  
  [29X[2XGeneratorsOfSemigroupIdeal[102X( [3XI[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YThe generators of an ideal of a semigroup.[133X
  
  [33X[0;0YThis  function  returns  the generators of the two-sided ideal [3XI[103X, which were
  used to defined [3XI[103X when it was created.[133X
  
  [33X[0;0YIf  [3XI[103X  is an ideal of a semigroup, then [3XI[103X is defined to be the least 2-sided
  ideal  of  a  semigroup  [10XS[110X containing a set [10XJ[110X of elements of [10XS[110X. The set [10XJ[110X is
  said to [13Xgenerate[113X [3XI[103X.[133X
  
  [33X[0;0YThe  notion of the generators of an ideal is distinct from the notion of the
  generators  of a semigroup or monoid. In particular, the semigroup generated
  by  the  generators of an ideal is not, in general, equal to that ideal. Use
  [2XGeneratorsOfSemigroup[102X   ([14XReference:   GeneratorsOfSemigroup[114X)   to  obtain  a
  semigroup  generating  set  for  an  ideal, but beware that this can be very
  costly.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=Semigroup([127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1, 2, 3, 4, -1 ], [ -2, -4 ], [ -3 ] ] ), [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1, 2, 3, -3 ], [ 4 ], [ -1 ], [ -2, -4 ] ] ), [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1, 3, -2 ], [ 2, 4 ], [ -1, -3, -4 ] ] ), [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1 ], [ 2, 3, 4 ], [ -1, -3, -4 ], [ -2 ] ] ), [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1 ], [ 2, 4, -2 ], [ 3, -4 ], [ -1 ], [ -3 ] ] ) );;[127X[104X
    [4X[25Xgap>[125X [27XI:=SemigroupIdeal(S, S.1*S.2*S.5);[127X[104X
    [4X[28X<regular bipartition semigroup ideal on 4 pts with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XGeneratorsOfSemigroupIdeal(I);[127X[104X
    [4X[28X[ <bipartition: [ 1, 2, 3, 4, -4 ], [ -1 ], [ -2 ], [ -3 ]> ][128X[104X
    [4X[25Xgap>[125X [27XI=Semigroup(GeneratorsOfSemigroupIdeal(I));[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
  [1X3.2-2 MinimalIdealGeneratingSet[101X
  
  [29X[2XMinimalIdealGeneratingSet[102X( [3XI[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YA minimal set ideal generators of an ideal.[133X
  
  [33X[0;0YThis  function  returns  a  minimal  set  of  elements  of the parent of the
  semigroup ideal [3XI[103X required to generate [3XI[103X as an ideal.[133X
  
  [33X[0;0YThe  notion of the generators of an ideal is distinct from the notion of the
  generators  of a semigroup or monoid. In particular, the semigroup generated
  by  the  generators of an ideal is not, in general, equal to that ideal. Use
  [2XGeneratorsOfSemigroup[102X   ([14XReference:   GeneratorsOfSemigroup[114X)   to  obtain  a
  semigroup  generating  set  for  an  ideal, but beware that this can be very
  costly.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=Monoid( [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1, 2, 3, -2 ], [ 4 ], [ -1, -4 ], [ -3 ] ] ), [127X[104X
    [4X[25X>[125X [27XBipartition( [ [ 1, 4, -2, -4 ], [ 2, -1, -3 ], [ 3 ] ] ) );;[127X[104X
    [4X[25Xgap>[125X [27XI:=SemigroupIdeal(S, S);[127X[104X
    [4X[28X<non-regular bipartition semigroup ideal on 4 pts with 3 generators>[128X[104X
    [4X[25Xgap>[125X [27XMinimalIdealGeneratingSet(I);[127X[104X
    [4X[28X[ <block bijection: [ 1, -1 ], [ 2, -2 ], [ 3, -3 ], [ 4, -4 ]> ][128X[104X
  [4X[32X[104X
  
  [1X3.2-3 SupersemigroupOfIdeal[101X
  
  [29X[2XSupersemigroupOfIdeal[102X( [3XI[103X ) [32X attribute
  [6XReturns:[106X  [33X[0;10YAn ideal of a semigroup.[133X
  
  [33X[0;0YThe  [2XParent[102X  ([14XReference:  Parent[114X)  of an ideal is the semigroup in which the
  ideal  was  created,  i.e.  the  first argument of [2XSemigroupIdeal[102X ([14X3.1-1[114X) or
  [10XSemigroupByGenerators[110X.   This  function  returns  the  semigroup  containing
  [2XGeneratorsOfSemigroup[102X  ([14XReference:  GeneratorsOfSemigroup[114X) which are used to
  compute the ideal.[133X
  
  [33X[0;0YFor  a regular semigroup ideal, [10XSupersemigroupOfIdeal[110X will always be the top
  most  semigroup used to create any of the predecessors of the current ideal.
  For  example,  if  [10XS[110X  is a semigroup, [10XI[110X is a regular ideal of [10XS[110X, and [10XJ[110X is an
  ideal  of  [10XI[110X, then [10XParent(J)[110X is [10XI[110X and [10XSupersemigroupOfIdeal(J)[110X is [10XS[110X. This is
  to  avoid  computing  a  generating  set  for  [10XI[110X,  in this example, which is
  expensive  and  unnecessary  since  [10XI[110X  is regular (in which case the Green's
  relations of [10XI[110X are just restrictions of the Green's relations on [10XS[110X). If [10XS[110X is
  a  semigroup,  [10XI[110X  is  a  non-regular  ideal  of  [10XS[110X, [10XJ[110X is an ideal of [10XI[110X, then
  [10XSupersemigroupOfIdeal(J)[110X   is   [10XI[110X,   since   we   currently   have   to  use
  [10XGeneratorsOfSemigroup(I)[110X to compute anything about [10XI[110X other than its size and
  membership.[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS:=FullTransformationSemigroup(8);[127X[104X
    [4X[28X<full transformation semigroup on 8 pts>[128X[104X
    [4X[25Xgap>[125X [27Xx:=Transformation( [ 2, 6, 7, 2, 6, 1, 1, 5 ] );;[127X[104X
    [4X[25Xgap>[125X [27XD:=DClassNC(S, x);[127X[104X
    [4X[28X{Transformation( [ 2, 6, 7, 2, 6, 1, 1, 5 ] )}[128X[104X
    [4X[25Xgap>[125X [27XR:=PrincipalFactor(D);[127X[104X
    [4X[28X<Rees 0-matrix semigroup 1050x56 over Group([ (3,4), (2,8,7,4,3) ])>[128X[104X
    [4X[25Xgap>[125X [27XS:=Semigroup(List([1..10], x-> Random(R)));[127X[104X
    [4X[28X<subsemigroup of 1050x56 Rees 0-matrix semigroup with 10 generators>[128X[104X
    [4X[25Xgap>[125X [27XI:=SemigroupIdeal(S, MultiplicativeZero(S));[127X[104X
    [4X[28X<regular Rees 0-matrix semigroup ideal with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XSupersemigroupOfIdeal(I);[127X[104X
    [4X[28X<subsemigroup of 1050x56 Rees 0-matrix semigroup with 10 generators>[128X[104X
    [4X[25Xgap>[125X [27XJ:=SemigroupIdeal(I, Representative(MinimalDClass(S)));[127X[104X
    [4X[28X<regular Rees 0-matrix semigroup ideal with 1 generator>[128X[104X
    [4X[25Xgap>[125X [27XParent(J)=I;[127X[104X
    [4X[28Xtrue[128X[104X
    [4X[25Xgap>[125X [27XSupersemigroupOfIdeal(J)=I;[127X[104X
    [4X[28Xfalse[128X[104X
  [4X[32X[104X
  
