Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Bib Ind

### 15 Properties of semigroups

In this chapter we decribe the methods that are available in Semigroups for determining various properties of a semigroup.

#### 15.1 Properties of semigroups

In this section we describe the properties of a semigroup that can be determined using the Semigroups package.

##### 15.1-1 IsBand
 ‣ IsBand( S ) ( property )

Returns: true or false.

IsBand returns true if every element of the semigroup S is an idempotent and false if it is not. An inverse semigroup is band if and only if it is a semilattice; see IsSemilattice (15.1-21).

gap> S := Semigroup(
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 1]),
> Transformation([2, 2, 2, 5, 5, 5, 8, 8, 8, 2]),
> Transformation([3, 3, 3, 6, 6, 6, 9, 9, 9, 3]),
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 4]),
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 7]));;
gap> IsBand(S);
true
gap> S := InverseSemigroup(
> PartialPerm([1, 2, 3, 4, 8, 9], [5, 8, 7, 6, 9, 1]),
> PartialPerm([1, 3, 4, 7, 8, 9, 10], [2, 3, 8, 7, 10, 6, 1]));;
gap> IsBand(S);
false
gap> IsBand(IdempotentGeneratedSubsemigroup(S));
true
gap> S := PartitionMonoid(4);
<regular bipartition *-monoid of size 4140, degree 4 with 4
generators>
gap> M := MinimalIdeal(S);
<simple bipartition *-semigroup ideal of degree 4 with 1 generator>
gap> IsBand(M);
true

##### 15.1-2 IsBlockGroup
 ‣ IsBlockGroup( S ) ( property )

Returns: true or false.

IsBlockGroup returns true if the semigroup S is a block group and false if it is not.

A semigroup S is a block group if every $$\mathscr{L}$$-class and every $$\mathscr{R}$$-class of S contains at most one idempotent. Every semigroup of partial permutations is a block group.

gap> S := Semigroup(Transformation([5, 6, 7, 3, 1, 4, 2, 8]),
>                   Transformation([3, 6, 8, 5, 7, 4, 2, 8]));;
gap> IsBlockGroup(S);
true
gap> S := Semigroup(
> Transformation([2, 1, 10, 4, 5, 9, 7, 4, 8, 4]),
> Transformation([10, 7, 5, 6, 1, 3, 9, 7, 10, 2]));;
gap> IsBlockGroup(S);
false
gap> S := Semigroup(PartialPerm([1, 2], [5, 4]),
>                   PartialPerm([1, 2, 3], [1, 2, 5]),
>                   PartialPerm([1, 2, 3], [2, 1, 5]),
>                   PartialPerm([1, 3, 4], [3, 1, 2]),
>                   PartialPerm([1, 3, 4, 5], [5, 4, 3, 2]));;
gap> T := AsSemigroup(IsBlockBijectionSemigroup, S);
<block bijection semigroup of degree 6 with 5 generators>
gap> IsBlockGroup(T);
true
gap> IsBlockGroup(AsSemigroup(IsBipartitionSemigroup, S));
true
gap> S := Semigroup(
> Bipartition([[1, -2], [2, -3], [3, -4], [4, -1]]),
> Bipartition([[1, -2], [2, -1], [3, -3], [4, -4]]),
> Bipartition([[1, 2, -3], [3, -1, -2], [4, -4]]),
> Bipartition([[1, -1], [2, -2], [3, -3], [4, -4]]));;
gap> IsBlockGroup(S);
true

##### 15.1-3 IsCommutativeSemigroup
 ‣ IsCommutativeSemigroup( S ) ( property )

Returns: true or false.

IsCommutativeSemigroup returns true if the semigroup S is commutative and false if it is not. The function IsCommutative (Reference: IsCommutative) can also be used to test if a semigroup is commutative.

A semigroup S is commutative if x * y = y * x for all x, y in S.

gap> S := Semigroup(Transformation([2, 4, 5, 3, 7, 8, 6, 9, 1]),
>                   Transformation([3, 5, 6, 7, 8, 1, 9, 2, 4]));;
gap> IsCommutativeSemigroup(S);
true
gap> IsCommutative(S);
true
gap> S := InverseSemigroup(
>  PartialPerm([1, 2, 3, 4, 5, 6], [2, 5, 1, 3, 9, 6]),
>  PartialPerm([1, 2, 3, 4, 6, 8], [8, 5, 7, 6, 2, 1]));;
gap> IsCommutativeSemigroup(S);
false
gap> S := Semigroup(
> Bipartition([[1, 2, 3, 6, 7, -1, -4, -6],
>              [4, 5, 8, -2, -3, -5, -7, -8]]),
>  Bipartition([[1, 2, -3, -4], [3, -5], [4, -6], [5, -7],
>               [6, -8], [7, -1], [8, -2]]));;
gap> IsCommutativeSemigroup(S);
true

##### 15.1-4 IsCompletelyRegularSemigroup
 ‣ IsCompletelyRegularSemigroup( S ) ( property )

Returns: true or false.

IsCompletelyRegularSemigroup returns true if every element of the semigroup S is contained in a subgroup of S.

An inverse semigroup is completely regular if and only if it is a Clifford semigroup; see IsCliffordSemigroup (16.2-1).

gap> S := Semigroup(Transformation([1, 2, 4, 3, 6, 5, 4]),
>                   Transformation([1, 2, 5, 6, 3, 4, 5]),
>                   Transformation([2, 1, 2, 2, 2, 2, 2]));;
gap> IsCompletelyRegularSemigroup(S);
true
gap> IsInverseSemigroup(S);
true
gap> T := Range(IsomorphismPartialPermSemigroup(S));;
gap> IsCompletelyRegularSemigroup(T);
true
gap> IsCliffordSemigroup(T);
true
gap> S := Semigroup(
> Bipartition([[1, 3, -4], [2, 4, -1, -2], [-3]]),
> Bipartition([[1, -1], [2, 3, 4, -3], [-2, -4]]));;
gap> IsCompletelyRegularSemigroup(S);
false

##### 15.1-5 IsCongruenceFreeSemigroup
 ‣ IsCongruenceFreeSemigroup( S ) ( property )

Returns: true or false.

IsCongruenceFreeSemigroup returns true if the semigroup S is a congruence-free semigroup and false if it is not.

A semigroup S is congruence-free if it has no non-trivial proper congruences.

A semigroup with zero is congruence-free if and only if it is isomorphic to a regular Rees 0-matrix semigroup R whose underlying semigroup is the trivial group, no two rows of the matrix of R are identical, and no two columns are identical; see Theorem 3.7.1 in [How95].

A semigroup without zero is congruence-free if and only if it is a simple group or has order 2; see Theorem 3.7.2 in [How95].

gap> S := Semigroup(Transformation([4, 2, 3, 3, 4]));;
gap> IsCongruenceFreeSemigroup(S);
true
gap> S := Semigroup(Transformation([2, 2, 4, 4]),
>                   Transformation([5, 3, 4, 4, 6, 6]));;
gap> IsCongruenceFreeSemigroup(S);
false

##### 15.1-6 IsSurjectiveSemigroup
 ‣ IsSurjectiveSemigroup( S ) ( property )

Returns: true or false.

A semigroup is surjective if each of its elements can be written as a product of two elements in the semigroup. IsSurjectiveSemigroup(S) returns true if the semigroup S is surjective, and false if it is not.

See also IndecomposableElements (14.6-6).

Note that every monoid, and every regular semigroup, is surjective.

gap> S := FullTransformationMonoid(100);
<full transformation monoid of degree 100>
gap> IsSurjectiveSemigroup(S);
true
gap> F := FreeSemigroup(3);;
gap> P := F / [[F.1, F.2 * F.1], [F.3 ^ 3, F.3]];
<fp semigroup on the generators [ s1, s2, s3 ]>
gap> IsSurjectiveSemigroup(P);
false
gap> I := SingularTransformationMonoid(5);
<regular transformation semigroup ideal of degree 5 with 1 generator>
gap> IsSurjectiveSemigroup(I);
true
gap> M := MonogenicSemigroup(IsBipartitionSemigroup, 3, 2);
<commutative non-regular block bijection semigroup of size 4,
degree 6 with 1 generator>
gap> IsSurjectiveSemigroup(M);
false

##### 15.1-7 IsGroupAsSemigroup
 ‣ IsGroupAsSemigroup( S ) ( property )

Returns: true or false.

IsGroupAsSemigroup returns true if and only if the semigroup S is mathematically a group.

gap> S := Semigroup(Transformation([2, 4, 5, 3, 7, 8, 6, 9, 1]),
>                   Transformation([3, 5, 6, 7, 8, 1, 9, 2, 4]));;
gap> IsGroupAsSemigroup(S);
true
gap> G := SymmetricGroup(5);;
gap> IsGroupAsSemigroup(G);
true
gap> S := AsSemigroup(IsPartialPermSemigroup, G);
<partial perm group of size 120, rank 5 with 2 generators>
gap> IsGroupAsSemigroup(S);
true
gap> G := SymmetricGroup([1, 2, 10]);;
gap> T := AsSemigroup(IsBlockBijectionSemigroup, G);
<inverse block bijection semigroup of size 6, degree 11 with 2
generators>
gap> IsGroupAsSemigroup(T);
true

##### 15.1-8 IsIdempotentGenerated
 ‣ IsIdempotentGenerated( S ) ( property )
 ‣ IsSemiband( S ) ( property )

Returns: true or false.

IsIdempotentGenerated and IsSemiband return true if the semigroup S is generated by its idempotents and false if it is not. See also Idempotents (14.9-1) and IdempotentGeneratedSubsemigroup (14.9-3).

An inverse semigroup is idempotent-generated if and only if it is a semilattice; see IsSemilattice (15.1-21).

The terms semiband and idempotent-generated are synonymous in this context.

gap> S := SingularTransformationSemigroup(4);
<regular transformation semigroup ideal of degree 4 with 1 generator>
gap> IsIdempotentGenerated(S);
true
gap> S := SingularBrauerMonoid(5);
<regular bipartition *-semigroup ideal of degree 5 with 1 generator>
gap> IsIdempotentGenerated(S);
true

##### 15.1-9 IsLeftSimple
 ‣ IsLeftSimple( S ) ( property )
 ‣ IsRightSimple( S ) ( property )

Returns: true or false.

IsLeftSimple and IsRightSimple returns true if the semigroup S has only one $$\mathscr{L}$$-class or one $$\mathscr{R}$$-class, respectively, and returns false if it has more than one.

An inverse semigroup is left simple if and only if it is right simple if and only if it is a group; see IsGroupAsSemigroup (15.1-7).

gap> S := Semigroup(Transformation([6, 7, 9, 6, 8, 9, 8, 7, 6]),
>                   Transformation([6, 8, 9, 6, 8, 8, 7, 9, 6]),
>                   Transformation([6, 8, 9, 7, 8, 8, 7, 9, 6]),
>                   Transformation([6, 9, 8, 6, 7, 9, 7, 8, 6]),
>                   Transformation([6, 9, 9, 6, 8, 8, 7, 9, 6]),
>                   Transformation([6, 9, 9, 7, 8, 8, 6, 9, 7]),
>                   Transformation([7, 8, 8, 7, 9, 9, 7, 8, 6]),
>                   Transformation([7, 9, 9, 7, 6, 9, 6, 8, 7]),
>                   Transformation([8, 7, 6, 9, 8, 6, 8, 7, 9]),
>                   Transformation([9, 6, 6, 7, 8, 8, 7, 6, 9]),
>                   Transformation([9, 6, 6, 7, 9, 6, 9, 8, 7]),
>                   Transformation([9, 6, 7, 9, 6, 6, 9, 7, 8]),
>                   Transformation([9, 6, 8, 7, 9, 6, 9, 8, 7]),
>                   Transformation([9, 7, 6, 8, 7, 7, 9, 6, 8]),
>                   Transformation([9, 7, 7, 8, 9, 6, 9, 7, 8]),
>                   Transformation([9, 8, 8, 9, 6, 7, 6, 8, 9]));;
gap> IsRightSimple(S);
false
gap> IsLeftSimple(S);
true
gap> IsGroupAsSemigroup(S);
false
gap> NrRClasses(S);
16
gap> S := BrauerMonoid(6);;
gap> S := Semigroup(RClass(S, Random(MinimalDClass(S))));;
gap> IsLeftSimple(S);
false
gap> IsRightSimple(S);
true

##### 15.1-10 IsLeftZeroSemigroup
 ‣ IsLeftZeroSemigroup( S ) ( property )

Returns: true or false.

IsLeftZeroSemigroup returns true if the semigroup S is a left zero semigroup and false if it is not.

A semigroup is a left zero semigroup if x*y=x for all x,y. An inverse semigroup is a left zero semigroup if and only if it is trivial.

gap> S := Semigroup(Transformation([2, 1, 4, 3, 5]),
>                   Transformation([3, 2, 3, 1, 1]));;
gap> IsRightZeroSemigroup(S);
false
gap> S := Semigroup(Transformation([1, 2, 3, 3, 1]),
>                   Transformation([1, 2, 3, 3, 3]));;
gap> IsLeftZeroSemigroup(S);
true

##### 15.1-11 IsMonogenicSemigroup
 ‣ IsMonogenicSemigroup( S ) ( property )

Returns: true or false.

IsMonogenicSemigroup returns true if the semigroup S is monogenic and it returns false if it is not.

A semigroup is monogenic if it is generated by a single element. See also IsMonogenicMonoid (15.1-12), IsMonogenicInverseSemigroup (16.2-9), and IsMonogenicInverseMonoid (16.2-10).

gap> S := Semigroup(
> Transformation(
>  [2, 2, 2, 11, 10, 8, 10, 11, 2, 11, 10, 2, 11, 11, 10]),
> Transformation(
>  [2, 2, 2, 8, 11, 15, 11, 10, 2, 10, 11, 2, 10, 4, 7]),
> Transformation(
>  [2, 2, 2, 11, 10, 8, 10, 11, 2, 11, 10, 2, 11, 11, 10]),
> Transformation(
>  [2, 2, 12, 7, 8, 14, 8, 11, 2, 11, 10, 2, 11, 15, 4]));;
gap> IsMonogenicSemigroup(S);
true
gap> S := Semigroup(
> Bipartition([[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, -2, -5, -7, -9],
>              [-1, -10], [-3, -4, -6, -8]]),
>  Bipartition([[1, 4, 7, 8, -2], [2, 3, 5, 10, -5],
>               [6, 9, -7, -9], [-1, -10], [-3, -4, -6, -8]]));;
gap> IsMonogenicSemigroup(S);
true
gap> S := FullTransformationSemigroup(5);;
gap> IsMonogenicSemigroup(S);
false

##### 15.1-12 IsMonogenicMonoid
 ‣ IsMonogenicMonoid( S ) ( property )

Returns: true or false.

IsMonogenicMonoid returns true if the monoid S is a monogenic monoid and it returns false if it is not.

A monoid is monogenic if it is generated as a monoid by a single element. See also IsMonogenicSemigroup (15.1-11) and IsMonogenicInverseMonoid (16.2-10).

gap> x := PartialPerm([1, 2, 3, 6, 8, 10], [2, 6, 7, 9, 1, 5]);;
gap> S := Monoid(x, x ^ 2, x ^ 3);;
gap> IsMonogenicSemigroup(S);
false
gap> IsMonogenicMonoid(S);
true
gap> S := FullTransformationMonoid(5);;
gap> IsMonogenicMonoid(S);
false

##### 15.1-13 IsMonoidAsSemigroup
 ‣ IsMonoidAsSemigroup( S ) ( property )

Returns: true or false.

IsMonoidAsSemigroup returns true if and only if the semigroup S is mathematically a monoid, i.e. if and only if it contains a MultiplicativeNeutralElement (Reference: MultiplicativeNeutralElement).

It is possible that a semigroup which satisfies IsMonoidAsSemigroup is not in the GAP category IsMonoid (Reference: IsMonoid). This is possible if the MultiplicativeNeutralElement (Reference: MultiplicativeNeutralElement) of S is not equal to the One (Reference: One) of any element in S. Therefore a semigroup satisfying IsMonoidAsSemigroup may not possess the attributes of a monoid (such as, GeneratorsOfMonoid (Reference: GeneratorsOfMonoid)).

See also One (Reference: One), IsInverseMonoid (Reference: IsInverseMonoid) and IsomorphismTransformationMonoid (Reference: IsomorphismTransformationMonoid).

gap> S := Semigroup(Transformation([1, 4, 6, 2, 5, 3, 7, 8, 9, 9]),
>                   Transformation([6, 3, 2, 7, 5, 1, 8, 8, 9, 9]));;
gap> IsMonoidAsSemigroup(S);
true
gap> IsMonoid(S);
false
gap> MultiplicativeNeutralElement(S);
Transformation( [ 1, 2, 3, 4, 5, 6, 7, 8, 9, 9 ] )
gap> T := AsSemigroup(IsBipartitionSemigroup, S);;
gap> IsMonoidAsSemigroup(T);
true
gap> IsMonoid(T);
false
gap> One(T);
fail
gap> S := Monoid(Transformation([8, 2, 8, 9, 10, 6, 2, 8, 7, 8]),
>                Transformation([9, 2, 6, 3, 6, 4, 5, 5, 3, 2]));;
gap> IsMonoidAsSemigroup(S);
true

##### 15.1-14 IsOrthodoxSemigroup
 ‣ IsOrthodoxSemigroup( S ) ( property )

Returns: true or false.

IsOrthodoxSemigroup returns true if the semigroup S is orthodox and false if it is not.

A semigroup is orthodox if it is regular and its idempotent elements form a subsemigroup. Every inverse semigroup is also an orthodox semigroup.

See also IsRegularSemigroup (15.1-17) and IsRegularSemigroup (Reference: IsRegularSemigroup).

gap> S := Semigroup(Transformation([1, 1, 1, 4, 5, 4]),
>                   Transformation([1, 2, 3, 1, 1, 2]),
>                   Transformation([1, 2, 3, 1, 1, 3]),
>                   Transformation([5, 5, 5, 5, 5, 5]));;
gap> IsOrthodoxSemigroup(S);
true
gap> S := DualSymmetricInverseMonoid(5);;
gap> S := Semigroup(GeneratorsOfSemigroup(S));;
gap> IsOrthodoxSemigroup(S);
true

##### 15.1-15 IsRectangularBand
 ‣ IsRectangularBand( S ) ( property )

Returns: true or false.

IsRectangularBand returns true if the semigroup S is a rectangular band and false if it is not.

A semigroup S is a rectangular band if for all $$x, y, z$$ in S we have that $$x ^ 2 = x$$ and $$xyz = xz$$.

Equivalently, S is a rectangular band if S is isomorphic to a semigroup of the form $$I \times \Lambda$$ with multiplication $$(i, \lambda)(j, \mu) = (i, \mu)$$. In this case, S is called an $$|I| \times |\Lambda|$$ rectangular band.

An inverse semigroup is a rectangular band if and only if it is a group.

gap> S := Semigroup(
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 1]),
> Transformation([2, 2, 2, 5, 5, 5, 8, 8, 8, 2]),
> Transformation([3, 3, 3, 6, 6, 6, 9, 9, 9, 3]),
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 4]),
> Transformation([1, 1, 1, 4, 4, 4, 7, 7, 7, 7]));;
gap> IsRectangularBand(S);
true
gap> IsRectangularBand(MinimalIdeal(PartitionMonoid(4)));
true

##### 15.1-16 IsRectangularGroup
 ‣ IsRectangularGroup( S ) ( property )

Returns: true or false.

A semigroup is rectangular group if it is the direct product of a group and a rectangular band. Or equivalently, if it is orthodox and simple.

gap> G := AsSemigroup(IsTransformationSemigroup, MathieuGroup(11));
<transformation group of size 7920, degree 11 with 2 generators>
gap> R := RectangularBand(3, 2);
<regular transformation semigroup of size 6, degree 6 with 3
generators>
gap> S := DirectProduct(G, R);;
gap> IsRectangularGroup(R);
true
gap> IsRectangularGroup(G);
true
gap> IsRectangularGroup(S);
true
gap> IsRectangularGroup(JonesMonoid(3));
false

##### 15.1-17 IsRegularSemigroup
 ‣ IsRegularSemigroup( S ) ( property )

Returns: true or false.

IsRegularSemigroup returns true if the semigroup S is regular and false if it is not.

A semigroup S is regular if for all x in S there exists y in S such that x * y * x = x. Every inverse semigroup is regular, and a semigroup of partial permutations is regular if and only if it is an inverse semigroup.

See also IsRegularDClass (Reference: IsRegularDClass), IsRegularGreensClass (13.3-2), and IsRegularSemigroupElement (Reference: IsRegularSemigroupElement).

gap> IsRegularSemigroup(FullTransformationSemigroup(5));
true
gap> IsRegularSemigroup(JonesMonoid(5));
true

##### 15.1-18 IsRightZeroSemigroup
 ‣ IsRightZeroSemigroup( S ) ( property )

Returns: true or false.

IsRightZeroSemigroup returns true if the S is a right zero semigroup and false if it is not.

A semigroup S is a right zero semigroup if x * y = y for all x, y in S. An inverse semigroup is a right zero semigroup if and only if it is trivial.

gap> S := Semigroup(Transformation([2, 1, 4, 3, 5]),
>                   Transformation([3, 2, 3, 1, 1]));;
gap> IsRightZeroSemigroup(S);
false
gap> S := Semigroup(Transformation([1, 2, 3, 3, 1]),
>                   Transformation([1, 2, 4, 4, 1]));;
gap> IsRightZeroSemigroup(S);
true

##### 15.1-19 IsXTrivial
 ‣ IsRTrivial( S ) ( property )
 ‣ IsLTrivial( S ) ( property )
 ‣ IsHTrivial( S ) ( property )
 ‣ IsDTrivial( S ) ( property )
 ‣ IsAperiodicSemigroup( S ) ( property )
 ‣ IsCombinatorialSemigroup( S ) ( property )

Returns: true or false.

IsXTrivial returns true if Green's $$\mathscr{R}$$-relation, $$\mathscr{L}$$-relation, $$\mathscr{H}$$-relation, $$\mathscr{D}$$-relation, respectively, on the semigroup S is trivial and false if it is not. These properties can also be applied to a Green's class instead of a semigroup where applicable.

For inverse semigroups, the properties of being $$\mathscr{R}$$-trivial, $$\mathscr{L}$$-trivial, $$\mathscr{D}$$-trivial, and a semilattice are equivalent; see IsSemilattice (15.1-21).

A semigroup is aperiodic if its contains no non-trivial subgroups (equivalently, all of its group $$\mathscr{H}$$-classes are trivial). A finite semigroup is aperiodic if and only if it is $$\mathscr{H}$$-trivial.

Combinatorial is a synonym for aperiodic in this context.

gap> S := Semigroup(
>  Transformation([1, 5, 1, 3, 7, 10, 6, 2, 7, 10]),
>  Transformation([4, 4, 5, 6, 7, 7, 7, 4, 3, 10]));;
gap> IsHTrivial(S);
true
gap> Size(S);
108
gap> IsRTrivial(S);
false
gap> IsLTrivial(S);
false

 ‣ IsSemigroupWithAdjoinedZero( S ) ( property )

Returns: true or false.

IsSemigroupWithAdjoinedZero returns true if the semigroup S can be expressed as the disjoint union of subsemigroups $$\textit{S} \setminus \{ 0 \}$$ and $$\{ 0 \}$$ (where $$0$$ is the MultiplicativeZero (14.7-3) of S).

If this is not the case, then either S lacks a multiplicative zero, or the set $$\textit{S} \setminus \{ 0 \}$$ is not a subsemigroup of S, and so IsSemigroupWithAdjoinedZero returns false.

gap> S := Semigroup(Transformation([2, 3, 4, 5, 1, 6]),
>                   Transformation([2, 1, 3, 4, 5, 6]),
>                   Transformation([6, 6, 6, 6, 6, 6]));
<transformation semigroup of degree 6 with 3 generators>
gap> IsZeroGroup(S);
true
true
gap> S := FullTransformationMonoid(4);;
false

##### 15.1-21 IsSemilattice
 ‣ IsSemilattice( S ) ( property )

Returns: true or false.

IsSemilattice returns true if the semigroup S is a semilattice and false if it is not.

A semigroup is a semilattice if it is commutative and every element is an idempotent. The idempotents of an inverse semigroup form a semilattice.

gap> S := Semigroup(Transformation([2, 5, 1, 7, 3, 7, 7]),
>                   Transformation([3, 6, 5, 7, 2, 1, 7]));;
gap> Size(S);
631
gap> IsInverseSemigroup(S);
true
gap> A := Semigroup(Idempotents(S));
<transformation semigroup of degree 7 with 32 generators>
gap> IsSemilattice(A);
true
gap> S := FactorisableDualSymmetricInverseMonoid(5);;
gap> S := IdempotentGeneratedSubsemigroup(S);;
gap> IsSemilattice(S);
true

##### 15.1-22 IsSimpleSemigroup
 ‣ IsSimpleSemigroup( S ) ( property )
 ‣ IsCompletelySimpleSemigroup( S ) ( property )

Returns: true or false.

IsSimpleSemigroup returns true if the semigroup S is simple and false if it is not.

A semigroup is simple if it has no proper 2-sided ideals. A semigroup is completely simple if it is simple and possesses minimal left and right ideals. A finite semigroup is simple if and only if it is completely simple. An inverse semigroup is simple if and only if it is a group.

gap> S := Semigroup(
>  Transformation([2, 2, 4, 4, 6, 6, 8, 8, 10, 10, 12, 12, 2]),
>  Transformation([1, 1, 3, 3, 5, 5, 7, 7, 9, 9, 11, 11, 3]),
>  Transformation([1, 7, 3, 9, 5, 11, 7, 1, 9, 3, 11, 5, 5]),
>  Transformation([7, 7, 9, 9, 11, 11, 1, 1, 3, 3, 5, 5, 7]));;
gap> IsSimpleSemigroup(S);
true
gap> IsCompletelySimpleSemigroup(S);
true
gap> IsSimpleSemigroup(MinimalIdeal(BrauerMonoid(6)));
true
gap> R := Range(IsomorphismReesMatrixSemigroup(
> MinimalIdeal(BrauerMonoid(6))));
<Rees matrix semigroup 15x15 over Group(())>

##### 15.1-23 IsSynchronizingSemigroup
 ‣ IsSynchronizingSemigroup( S ) ( property )
 ‣ IsSynchronizingSemigroup( S, n ) ( property )

Returns: true or false.

For a positive integer n, IsSynchronizingSemigroup returns true if the semigroup of transformations S contains a transformation with constant value on [1 .. n]. Note that this function will return true whenever n = 1. See also ConstantTransformation (Reference: ConstantTransformation).

If the optional second argument is not specified, then n will be taken to be the value of DegreeOfTransformationSemigroup (Reference: DegreeOfTransformationSemigroup) for S.

Note that the semigroup consisting of the identity transformation is the unique transformation semigroup with degree 0. In this special case, the function IsSynchronizingSemigroup will return false.

gap> S := Semigroup(
> Transformation([1, 1, 8, 7, 6, 6, 4, 1, 8, 9]),
> Transformation([5, 8, 7, 6, 10, 8, 7, 6, 9, 7]));;
gap> IsSynchronizingSemigroup(S, 10);
true
gap> S := Semigroup(
> Transformation([3, 8, 1, 1, 9, 9, 8, 7, 9, 6]),
> Transformation([7, 6, 8, 7, 5, 6, 8, 7, 8, 9]));;
gap> IsSynchronizingSemigroup(S, 10);
false
gap> Representative(MinimalIdeal(S));
Transformation( [ 7, 8, 8, 7, 8, 8, 8, 7, 8, 8 ] )

##### 15.1-24 IsUnitRegularMonoid
 ‣ IsUnitRegularMonoid( S ) ( property )

Returns: true if the semigroup S is unit regular and false if it is not.

A monoid is unit regular if and only if for every >x in S there exists an element y in the group of units of S such that x*y*x=x.

gap> IsUnitRegularMonoid(FullTransformationMonoid(3));
true

##### 15.1-25 IsZeroGroup
 ‣ IsZeroGroup( S ) ( property )

Returns: true or false.

IsZeroGroup returns true if the semigroup S is a zero group and false if it is not.

A semigroup S is a zero group if there exists an element z in S such that S without z is a group and x*z=z*x=z for all x in S. Every zero group is an inverse semigroup.

gap> S := Semigroup(Transformation([2, 2, 3, 4, 6, 8, 5, 5, 9]),
>                   Transformation([3, 3, 8, 2, 5, 6, 4, 4, 9]),
>                   ConstantTransformation(9, 9));;
gap> IsZeroGroup(S);
true
gap> T := Range(IsomorphismPartialPermSemigroup(S));;
gap> IsZeroGroup(T);
true
gap> IsZeroGroup(JonesMonoid(2));
true

##### 15.1-26 IsZeroRectangularBand
 ‣ IsZeroRectangularBand( S ) ( property )

Returns: true or false.

IsZeroRectangularBand returns true if the semigroup S is a zero rectangular band and false if it is not.

A semigroup is a 0-rectangular band if it is 0-simple and $$\mathscr{H}$$-trivial; see also IsZeroSimpleSemigroup (15.1-28) and IsHTrivial (15.1-19). An inverse semigroup is a 0-rectangular band if and only if it is a 0-group; see IsZeroGroup (15.1-25).

gap> S := Semigroup(
>  Transformation([1, 3, 7, 9, 1, 12, 13, 1, 15, 9, 1, 18, 1, 1, 13,
>                  1, 1, 21, 1, 1, 1, 1, 1, 25, 26, 1]),
> Transformation([1, 5, 1, 5, 11, 1, 1, 14, 1, 16, 17, 1, 1, 19, 1,
>                 11, 1, 1, 1, 23, 1, 16, 19, 1, 1, 1]),
> Transformation([1, 4, 8, 1, 10, 1, 8, 1, 1, 1, 10, 1, 8, 10, 1, 1,
>                 20, 1, 22, 1, 8, 1, 1, 1, 1, 1]),
> Transformation([1, 6, 6, 1, 1, 1, 6, 1, 1, 1, 1, 1, 6, 1, 6, 1, 1,
>                 6, 1, 1, 24, 1, 1, 1, 1, 6]));;
gap> D := DClass(S,
> Transformation([1, 8, 1, 1, 8, 1, 1, 1, 1, 1, 8, 1, 1, 8, 1, 1, 1,
>                 1, 1, 1, 1, 1, 1, 1, 1, 1]));;
gap> IsZeroRectangularBand(Semigroup(D));
true
gap> IsZeroRectangularBand(Semigroup(GreensDClasses(S)));
false

##### 15.1-27 IsZeroSemigroup
 ‣ IsZeroSemigroup( S ) ( property )

Returns: true or false.

IsZeroSemigroup returns true if the semigroup S is a zero semigroup and false if it is not.

A semigroup S is a zero semigroup if there exists an element z in S such that x*y=z for all x,y in S. An inverse semigroup is a zero semigroup if and only if it is trivial.

gap> S := Semigroup(
> Transformation([4, 7, 6, 3, 1, 5, 3, 6, 5, 9]),
> Transformation([5, 3, 5, 1, 9, 3, 8, 7, 4, 3]));;
gap> IsZeroSemigroup(S);
false
gap> S := Semigroup(
>  Transformation([7, 8, 8, 8, 5, 8, 8, 8]),
>  Transformation([8, 8, 8, 8, 5, 7, 8, 8]),
>  Transformation([8, 7, 8, 8, 5, 8, 8, 8]),
>  Transformation([8, 8, 8, 7, 5, 8, 8, 8]),
>  Transformation([8, 8, 7, 8, 5, 8, 8, 8]));;
gap> IsZeroSemigroup(S);
true
gap> MultiplicativeZero(S);
Transformation( [ 8, 8, 8, 8, 5, 8, 8, 8 ] )

##### 15.1-28 IsZeroSimpleSemigroup
 ‣ IsZeroSimpleSemigroup( S ) ( property )

Returns: true or false.

IsZeroSimpleSemigroup returns true if the semigroup S is 0-simple and false if it is not.

A semigroup is a 0-simple if it has no two-sided ideals other than itself and the set containing the zero element; see also MultiplicativeZero (14.7-3). An inverse semigroup is 0-simple if and only if it is a Brandt semigroup; see IsBrandtSemigroup (16.2-2).

gap> S := Semigroup(
>  Transformation([1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 5, 17,
>                  17, 17, 17, 17, 17]),
>  Transformation([1, 17, 17, 17, 11, 17, 17, 17, 17, 17, 17, 17,
>                  17, 17, 17, 17, 17]),
>  Transformation([1, 17, 17, 17, 17, 17, 17, 17, 17, 17, 4, 17,
>                  17, 17, 17, 17, 17]),
>  Transformation([1, 17, 17, 5, 17, 17, 17, 17, 17, 17, 17, 17,
>                  17, 17, 17, 17, 17]));;
gap> IsZeroSimpleSemigroup(S);
true
gap> S := Semigroup(
> Transformation([2, 3, 4, 5, 1, 8, 7, 6, 2, 7]),
> Transformation([2, 3, 4, 5, 6, 8, 7, 1, 2, 2]));;
gap> IsZeroSimpleSemigroup(S);
false
Goto Chapter: Top 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 Bib Ind

generated by GAPDoc2HTML