In this chapter we describe some standard semigroup constructions which are available in the Semigroups package.
In this section, we describe the functions in Semigroups 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.
‣ TrivialSemigroup ( [filt, ][deg] ) | ( function ) |
Returns: A trivial semigroup.
A trivial semigroup is a semigroup with precisely one element. This function returns a trivial semigroup in the representation given by the filter filter, and (if possible) with the degree of the representation given by the non-negative integer deg.
The optional argument filt may be one of the following:
IsTransformationSemigroup
(the default, if filt is not specified),
IsPartialPermSemigroup
,
IsBipartitionSemigroup
,
IsBlockBijectionSemigroup
,
IsPBRSemigroup
,
IsBooleanMatSemigroup
.
If the optional argument deg is not specified, then the smallest possible degree will be used.
gap> S := TrivialSemigroup(); <trivial transformation group of degree 0 with 1 generator> gap> Size(S); 1 gap> S := TrivialSemigroup(3); <trivial transformation group of degree 3 with 1 generator> gap> S := TrivialSemigroup(IsBipartitionSemigroup, 2); <trivial block bijection group of degree 2 with 1 generator> gap> Elements(S); [ <block bijection: [ 1, 2, -1, -2 ]> ]
‣ MonogenicSemigroup ( [filt, ]m, r ) | ( function ) |
Returns: A monogenic semigroup with index m and period r.
If m and r are positive integers, then this function returns a monogenic semigroup S
with index m and period r in the representation given by the filter filt.
The optional argument filt may be one of the following:
IsTransformationSemigroup
(the default, if filt is not specified),
IsPartialPermSemigroup
,
IsBipartitionSemigroup
,
IsBlockBijectionSemigroup
,
IsPBRSemigroup
,
IsBooleanMatSemigroup
.
The semigroup S
is generated by a single element, f. S
consists of the elements f, f ^ 2, ..., f ^ m, ..., f ^ m + r - 1. The minimal ideal of S
consists of the elements f ^ m, ..., f ^ m + r - 1 and is isomorphic to the cyclic group of order r.
See IsMonogenicSemigroup
(15.1-11) for more information about monogenic semigroups.
gap> S := MonogenicSemigroup(5, 3); <commutative non-regular transformation semigroup of size 7, degree 8 with 1 generator> gap> IsMonogenicSemigroup(S); true gap> I := MinimalIdeal(S);; gap> IsGroupAsSemigroup(I); true gap> StructureDescription(I); "C3" gap> S := MonogenicSemigroup(IsBlockBijectionSemigroup, 9, 1); <commutative non-regular block bijection semigroup of size 9, degree 10 with 1 generator>
‣ RectangularBand ( [filt, ]m, n ) | ( function ) |
Returns: An m by n rectangular band.
If m and n are positive integers, then this function returns a semigroup isomorphic to an m by n rectangular band, in the representation given by the filter filt.
The optional argument filt may be one of the following:
IsTransformationSemigroup
(the default, if filt is not specified),
IsBipartitionSemigroup
,
IsPBRSemigroup
,
IsBooleanMatSemigroup
,
IsReesMatrixSemigroup
.
See IsRectangularBand
(15.1-15) for more information about rectangular bands.
gap> T := RectangularBand(5, 6); <regular transformation semigroup of size 30, degree 10 with 6 generators> gap> IsRectangularBand(T); true gap> S := RectangularBand(IsReesMatrixSemigroup, 4, 8); <Rees matrix semigroup 4x8 over Group(())> gap> IsRectangularBand(S); true gap> IsCompletelySimpleSemigroup(S) and IsHTrivial(S); true
‣ ZeroSemigroup ( [filt, ]n ) | ( function ) |
Returns: A zero semigroup of order n.
If n is a positive integer, then this function returns a zero semigroup of order n in the representation given by the filter filt.
The optional argument filt may be one of the following:
IsTransformationSemigroup
(the default, if filt is not specified),
IsPartialPermSemigroup
,
IsBipartitionSemigroup
,
IsBlockBijectionSemigroup
,
IsPBRSemigroup
,
IsBooleanMatSemigroup
,
IsReesZeroMatrixSemigroup
(provided that n > 1
).
See IsZeroSemigroup
(15.1-27) for more information about zero semigroups.
gap> S := ZeroSemigroup(5); <commutative non-regular transformation semigroup of size 5, degree 5 with 4 generators> gap> IsZeroSemigroup(S); true gap> S := ZeroSemigroup(IsPartialPermSemigroup, 15); <commutative non-regular partial perm semigroup of size 15, rank 14 with 14 generators> gap> Size(S); 15 gap> z := MultiplicativeZero(S); <empty partial perm> gap> IsZeroSemigroup(S); true gap> ForAll(S, x -> ForAll(S, y -> x * y = z)); true
‣ LeftZeroSemigroup ( [filt, ]n ) | ( function ) |
‣ RightZeroSemigroup ( [filt, ]n ) | ( function ) |
Returns: A left zero (or right zero) semigroup of order n.
If n is a positive integer, then this function returns a left zero (or right zero, as appropriate) semigroup of order n in the representation given by the filter filt. If filt is not specified then the default representation is IsTransformationSemigroup
.
The function LeftZeroSemigroup([filt,] n)
simply calls RectangularBand([filt,] n, 1)
and the function RightZeroSemigroup([filt,] n)
simply calls RectangularBand([filt,] 1, n)
.
For more information about RectangularBand
, including its permitted values of filt, see RectangularBand
(9.1-3). See IsLeftZeroSemigroup
(15.1-10) and IsRightZeroSemigroup
(15.1-18) for more information about left zero and right zero semigroups.
gap> S := LeftZeroSemigroup(20); <transformation semigroup of degree 6 with 20 generators> gap> IsLeftZeroSemigroup(S); true gap> ForAll(Tuples(S, 2), p -> p[1] * p[2] = p[1]); true gap> S := RightZeroSemigroup(IsBipartitionSemigroup, 5); <regular bipartition semigroup of size 5, degree 3 with 5 generators> gap> IsRightZeroSemigroup(S); true
‣ BrandtSemigroup ( [[filt, ]G, ]n ) | ( function ) |
Returns: An n by n Brandt semigroup over the group G.
If n is a positive integer, then this function returns an n by n Brandt semigroup over the group G in the representation given by the filter filt.
The optional argument filt can be any of the following:
IsPartialPermSemigroup
(the default, if filt is not specified),
IsReesZeroMatrixSemigroup
,
IsTransformationSemigroup
,
IsBipartitionSemigroup
,
IsPBRSemigroup
,
IsBooleanMatSemigroup
,
IsNTPMatrixSemigroup
,
IsMaxPlusMatrixSemigroup
,
IsMinPlusMatrixSemigroup
,
IsTropicalMaxPlusMatrixSemigroup
,
IsTropicalMinPlusMatrixSemigroup
,
IsProjectiveMaxPlusMatrixSemigroup
,
IsIntegerMatrixSemigroup.
The optional argument G defaults to a trivial permutation group. If present G must be a permutation group, unless filt is IsReesZeroMatrixSemigroup
when G may be any type of finite group.
See IsBrandtSemigroup
(16.2-2) for more information about Brandt semigroups.
gap> S := BrandtSemigroup(5); <0-simple inverse partial perm semigroup of rank 5 with 4 generators> gap> IsBrandtSemigroup(S); true gap> S := BrandtSemigroup(IsTransformationSemigroup, 15); <0-simple transformation semigroup of degree 16 with 28 generators> gap> Size(S); 226 gap> MultiplicativeZero(S); Transformation( [ 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16, 16 ] ) gap> S := BrandtSemigroup(Group((1, 2)), 3); <0-simple inverse partial perm semigroup of rank 6 with 3 generators> gap> S := BrandtSemigroup(IsTransformationSemigroup, Group((1, 2)), 3); <0-simple transformation semigroup of degree 7 with 5 generators> gap> S := BrandtSemigroup(IsReesZeroMatrixSemigroup, > DihedralGroup(4), > 2); <Rees 0-matrix semigroup 2x2 over <pc group of size 4 with 2 generators>>
generated by GAPDoc2HTML