Maximal subgroup of a finite semigroup (GAP)

199 Views Asked by At

It is a very basic notion in semigroup theory that $H_e$ ,i.e. the groups of units of $eSe$, is just the maximal subgroup of semigroup $S$ where $e\in E(S)$. Here, I want to find it by using GAP for a finite semigroup:

    f:=FreeSemigroup("a","b");;  
    a:=f.1;; b:=f.2;; 
    s:=f/[[a^5,a],[a^2,b^3],[b*a,a*b^5]];;
    e:=Elements(s);
    l:=DuplicateFreeList(List([1..9],i-> e[9]*e[i]*e[9]));
    [ a*b*a^3*b*a, a*b*a*b*a*b*a, a*b*a^4*b*a, a*b*a^2*b*a*b*a,
    a*b*a*b*a^2*b*a, a*b*a*b^2*a*b*a, a*b*a^5*b*a, a*b*a^3*b*a*b*a ]

The last code find I=eSe where e is the only idempotent of s ,i.e. e[9]=a^4. Now to find the units, apparently, there is not a certain code so, I am thinking about finding $H_e$ by a boring for ...od & if...fi loops instead. What we have in GAP is the code Units(R) where R is a ring. Is there another alternative way to find $H_e$? Any hint is welcomed. Thanks for your time!


Edit:

Regarding to @ahulpke and @Alexander Konovalov leading comments; I could do the following codes for an arbitrary FP semigroup:

LoadPackage("Semigroups");;
s:= Semigroup(Transformation([1,4,3,2]), Transformation([1,4,3,1]));;
e:=Elements(s);; dd:=Idempotents(s);;
l:=DuplicateFreeList(dd[4]*e*dd[4]);;
re:=AsSubsemigroup(s,l);
rw:=GroupOfUnits(re);
gg:=IdGroup(rw);;
wa:=SmallGroup(gg[1],gg[2]);
H:=SimplifiedFpGroup(Image(IsomorphismFpGroup(wa)));

What I did above is very elementary but I think it works. Does not it?