  
  [1X9 [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 semigroup that
  is    created    using    the    function    [2XSemigroupIdeal[102X    ([14X9.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
  
  
  [1X9.1 [33X[0;0YCreating ideals[133X[101X
  
  [1X9.1-1 SemigroupIdeal[101X
  
  [33X[1;0Y[29X[2XSemigroupIdeal[102X( [3XS[103X, [3Xobj1[103X, [3Xobj2[103X, [3X..[103X, [3X.[103X ) [32X function[133X
  [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 monoid of degree 10>[128X[104X
    [4X[25Xgap>[125X [27XI := SemigroupIdeal(S, PartialPerm([1, 2]));[127X[104X
    [4X[28X<inverse partial perm semigroup ideal of rank 10 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 of rank 10 with 1025 generators>[128X[104X
  [4X[32X[104X
  
  [1X9.1-2 Ideals[101X
  
  [33X[1;0Y[29X[2XIdeals[102X( [3XS[103X ) [32X attribute[133X
  [6XReturns:[106X  [33X[0;10YAn list of ideals.[133X
  
  [33X[0;0YIf  [3XS[103X is a finite non-empty semigroup, then this attribute returns a list of
  the non-empty two-sided ideals of [3XS[103X.[133X
  
  [33X[0;0YThe  ideals  are  returned  in  no particular order, and each ideal uses the
  minimum   possible  number  of  generators  (see  [2XGeneratorsOfSemigroupIdeal[102X
  ([14X9.2-1[114X)).[133X
  
  [4X[32X  Example  [32X[104X
    [4X[25Xgap>[125X [27XS := Semigroup([Transformation([4, 3, 4, 1]),[127X[104X
    [4X[25X>[125X [27X                   Transformation([4, 3, 2, 2])]);[127X[104X
    [4X[28X<transformation semigroup of degree 4 with 2 generators>[128X[104X
    [4X[25Xgap>[125X [27XIdeals(S);[127X[104X
    [4X[28X[ <non-regular transformation semigroup ideal of degree 4 with[128X[104X
    [4X[28X      1 generator>,[128X[104X
    [4X[28X <non-regular transformation semigroup ideal of degree 4 with[128X[104X
    [4X[28X     1 generator>,[128X[104X
    [4X[28X<non-regular transformation semigroup ideal of degree 4 with[128X[104X
    [4X[28X    2 generators>,[128X[104X
    [4X[28X<regular transformation semigroup ideal of degree 4 with 1 generator>,[128X[104X
    [4X[28X<non-regular transformation semigroup ideal of degree 4 with[128X[104X
    [4X[28X  1 generator>,[128X[104X
    [4X[28X<regular transformation semigroup ideal of degree 4 with 1 generator>[128X[104X
    [4X[28X][128X[104X
  [4X[32X[104X
  
  
  [1X9.2 [33X[0;0YAttributes of ideals[133X[101X
  
  [1X9.2-1 GeneratorsOfSemigroupIdeal[101X
  
  [33X[1;0Y[29X[2XGeneratorsOfSemigroupIdeal[102X( [3XI[103X ) [32X attribute[133X
  [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[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
  
  [1X9.2-2 MinimalIdealGeneratingSet[101X
  
  [33X[1;0Y[29X[2XMinimalIdealGeneratingSet[102X( [3XI[103X ) [32X attribute[133X
  [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[25Xgap>[125X [27XMinimalIdealGeneratingSet(I);[127X[104X
    [4X[28X[ <block bijection: [ 1, -1 ], [ 2, -2 ], [ 3, -3 ], [ 4, -4 ]> ][128X[104X
  [4X[32X[104X
  
  [1X9.2-3 SupersemigroupOfIdeal[101X
  
  [33X[1;0Y[29X[2XSupersemigroupOfIdeal[102X( [3XI[103X ) [32X attribute[133X
  [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 ([14X9.1-1[114X) or
  [10XSemigroupIdealByGenerators[110X.  This  function returns the semigroup containing
  the  generators  of  the  semigroup  (i.e. [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).[133X
  
  [33X[0;0YIf [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 monoid of degree 8>[128X[104X
    [4X[25Xgap>[125X [27Xx := Transformation([2, 6, 7, 2, 6, 1, 1, 5]);;[127X[104X
    [4X[25Xgap>[125X [27XD := DClass(S, x);[127X[104X
    [4X[28X<Green's D-class: 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([ (2,8,7,4,3), (3,4) ])>[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
  
