2. Basics

We give some examples of semigroups to be used later. We also describe some basic functions that are not directly available from GAP, but are useful for the purposes of this package.

2.1 Examples

These are some examples of semigroups that will be used through this manual


gap> f := FreeMonoid("a","b"); 
<free monoid on the generators [ a, b ]> 
gap> a := GeneratorsOfMonoid( f )[   1 ];; 
gap> b := GeneratorsOfMonoid( f )[ 2 ];; 
gap> r:=[[a^3,a^2],   
> [a^2*b,a^2], 
> [b*a^2,a^2], 
> [b^2,a^2], 
> [a*b*a,a], 
> [b*a*b,b] ]; 
[ [ a^3, a^2 ], [ a^2*b, a^2 ], [ b*a^2, a^2 ], [ b^2, a^2 ], [ a*b*a, a ], 
[ b*a*b, b ] ] 
gap> b21:= f/r; 
<fp semigroup on the generators [<identity ... >, a, b ]> 

gap> f := FreeSemigroup("a","b"); 
<free semigroup on the generators [ a, b ]>   
gap> a := GeneratorsOfSemigroup( f )[ 1 ];; 
gap> b :=   GeneratorsOfSemigroup( f )[ 2 ];; 
gap> r:=[[a^3,a^2], 
> [a^2*b,a^2],   
> [b*a^2,a^2], 
> [b^2,a^2], 
> [a*b*a,a], 
> [b*a*b,b] ]; 
[ [ a^3, a^2 ], [ a^2*b, a^2 ], [ b*a^2, a^2 ], [ b^2, a^2 ], [ a*b*a, a ], 
[ b*a*b, b ] ] 
gap> b2:= f/r; 
<fp semigroup on the generators [ a, b ]> 

gap> g0:=Transformation([4,1,2,4]);;
gap> g1:=Transformation([1,3,4,4]);;
gap> g2:=Transformation([2,4,3,4]);;
gap> poi3:= Monoid(g0,g1,g2);
<monoid with 3 generators>
     

2.2 Some attributes

These functions are semigroup attributes that get stored once computed.

2.2-1 HasCommutingIdempotents
> HasCommutingIdempotents( M )( attribute )

Tests whether the idempotents of the semigroup M commute.

2.2-2 IsInverseSemigroup
> IsInverseSemigroup( S )( attribute )

Tests whether a finite semigroup S is inverse. It is well-known that it suffices to test whether the idempotents of S commute and S is regular. The function IsRegularSemigroup is part of GAP.

2.3 Some basic functions

2.3-1 PartialTransformation
> PartialTransformation( L )( function )

A partial transformation is a partial function of a set of integers of the form {1, ..., n}. It is given by means of the list of images L. When an element has no image, we write 0. Returns a full transformation on a set with one more element that acts like a zero.


gap> PartialTransformation([2,0,4,0]);
Transformation( [ 2, 5, 4, 5, 5 ] )
      

2.3-2 SemigroupFactorization
> SemigroupFactorization( S, L )( function )

L is an element (or list of elements) of the semigroup S. Returns a minimal factorization on the generators of S of the element(s) of L. Works only for transformation semigroups.


gap> el1 := Transformation( [ 2, 3, 4, 4 ] );;
gap> el2 := Transformation( [ 2, 4, 3, 4 ] );;
gap> f1 := SemigroupFactorization(poi3,el1);
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] ) ] ]
gap> f1[1][1] * f1[1][2] = el1;
true
gap> SemigroupFactorization(poi3,[el1,el2]);
[ [ Transformation( [ 1, 3, 4, 4 ] ), Transformation( [ 2, 4, 3, 4 ] ) ],
  [ Transformation( [ 2, 4, 3, 4 ] ) ] ]

2.4 Cayley graphs

2.4-1 RightCayleyGraph
> RightCayleyGraph( S )( function )

Computes the right Cayley graph of a finite monoid or semigroup S. It uses the GAP buit-in function CayleyGraphSemigroup to compute the Cayley Graph and returns it as an automaton without initial and final states. The Automata is used to this effect


gap> rcg := RightCayleyGraph(b21);
< deterministic automaton on 2 letters with 6 states >
gap> Display(rcg);
   |  1  2  3  4  5  6
-----------------------
 a |  2  4  6  4  2  4
 b |  3  5  4  4  4  3
Initial state:   [ ]
Accepting state: [ ]
      

2.4-2 RightCayleyGraphMonoid
> RightCayleyGraphMonoid( S )( function )

This function is a synonym of RightCayleyGraph (2.4-1).




generated by GAPDoc2HTML