48 Semigroups

This chapter describes functions for creating semigroups and determining information about them.

  • IsSemigroup( D ) P

    A semigroup is a magma (see Magmas) with associative multiplication.

  • Semigroup( gen1, gen2... ) F
  • Semigroup( gens ) F

    In the first form, Semigroup returns the semigroup generated by the arguments gen1, gen2 ..., that is, the closure of these elements under multiplication. In the second form, Semigroup returns the semigroup generated by the elements in the homogeneous list gens; a square matrix as only argument is treated as one generator, not as a list of generators.

    It is not checked whether the underlying multiplication is associative, use Magma (see Magma) and IsAssociative (see IsAssociative) if you want to check whether a magma is in fact a semigroup.

    gap> a:= Transformation([2, 3, 4, 1]);
    Transformation( [ 2, 3, 4, 1 ] )
    gap> b:= Transformation([2, 2, 3, 4]);
    Transformation( [ 2, 2, 3, 4 ] )
    gap> s:= Semigroup(a, b);
    <semigroup with 2 generators>
    

  • Subsemigroup( S, gens ) F
  • SubsemigroupNC( S, gens ) F

    are just synonyms of Submagma and SubmagmaNC, respectively (see Submagma).

    gap> a:=GeneratorsOfSemigroup(s)[1];
    Transformation( [ 2, 3, 4, 1 ] )
    gap> t:=Subsemigroup(s,[a]);
    <semigroup with 1 generator>
    

  • SemigroupByGenerators( gens ) O

    is the underlying operation of Semigroup (see Semigroup).

  • AsSemigroup( C ) A

    If C is a collection whose elements form a semigroup (see IsSemigroup) then AsSemigroup returns this semigroup. Otherwise fail is returned.

  • AsSubsemigroup( D, C ) O

    Let D be a domain and C a collection. If C is a subset of D that forms a semigroup then AsSubsemigroup returns this semigroup, with parent D. Otherwise fail is returned.

  • GeneratorsOfSemigroup( S ) A

    Semigroup generators of a semigroup D are the same as magma generators (see GeneratorsOfMagma).

    gap> GeneratorsOfSemigroup(s);
    [ Transformation( [ 2, 3, 4, 1 ] ), Transformation( [ 2, 2, 3, 4 ] ) ]
    gap> GeneratorsOfSemigroup(t);
    [ Transformation( [ 2, 3, 4, 1 ] ) ]
    

  • FreeSemigroup( rank ) F
  • FreeSemigroup( rank, name ) F
  • FreeSemigroup( name1, name2, ... ) F
  • FreeSemigroup( names ) F
  • FreeSemigroup( infinity, name, init ) F

    Called in the first form, FreeSemigroup returns a free semigroup on rank generators. Called in the second form, FreeSemigroup returns a free semigroup on rank generators, printed as name1, name2 etc., that is, each name is the concatenation of the string name and an integer from 1 to range. Called in the third form, FreeSemigroup returns a free semigroup on as many generators as arguments, printed as name1, name2 etc. Called in the fourth form, FreeSemigroup returns a free semigroup on as many generators as the length of the list names, the i-th generator being printed as names[ i]. Called in the fifth form, FreeSemigroup returns a free semigroup on infinitely many generators, where the first generators are printed by the names in the list init, and the other generators by name and an appended number.

    gap> f1 := FreeSemigroup( 3 );
    <free semigroup on the generators [ s1, s2, s3 ]>
    gap> f2 := FreeSemigroup( 3 , "generator" );
    <free semigroup on the generators [ generator1, generator2, generator3 ]>
    gap> f3 := FreeSemigroup( "gen1" , "gen2" );
    <free semigroup on the generators [ gen1, gen2 ]>
    gap> f4 := FreeSemigroup( ["gen1" , "gen2"] );
    <free semigroup on the generators [ gen1, gen2 ]>
    

  • SemigroupByMultiplicationTable( A ) F

    returns the semigroup whose multiplication is defined by the square matrix A (see MagmaByMultiplicationTable) if such a semigroup exists. Otherwise fail is returned.

    The following functions determine information about semigroups:

  • IsRegularSemigroup( S ) P

    returns true if S is regular---i.e. if every D class of S is regular.

  • IsRegularSemigroupElement( S, x ) O

    returns true if x has a general inverse in S---i.e. there is an element y Î S such that xyx = x and yxy = y.

  • IsSimpleSemigroup( S ) P

    true if and only if the semigroup has no proper ideals.

  • IsZeroSimpleSemigroup( S ) P

    S is a semigroup with zero true if and only if the semigroup has no proper ideals except for 0. If the semigroup does not find its zero, then it breaks

  • IsZeroGroup( S ) P

    true if and only if the semigroup is a group with zero adjoined

  • IsReesCongruenceSemigroup( S ) P

    retruns true if S is a Rees Congruence semigroup, that is, if all congruences of S are Rees Congruences

    Sections

    1. Making transformation semigroups
    2. Ideals of semigroups
    3. Congruences
    4. Quotients
    5. Green's Relations
    6. Rees Matrix Semigroups

    [Top] [Previous] [Up] [Next] [Index]

    GAP 4 manual
    February 2000