Happy Nowruz 2016 to every one here!
Using the code which James pointed here; I was playing with the following finite semigroup:
gap > f:=FreeSemigroup("a","b");;
a:=f.1;; b:=f.2;;
w:=f/[[a^4,a],[b^2,a^3],[b*a,a^2*b],[b^3,b]];;
T=Range(IsomorphismTransformationSemigroup(w));;
GAP tells us that T
has $6$ elements, is regular (Inverse) and has just one idempotent. This means that T
is a finite group see here.
But, by calling another codes AsGroup(T)
and IsGroup(T)
both would end to undesirable results failed
and false
respectively. Is there anything obvious I cannot see well?
Thanks for the time.
Alex is correct:
IsGroup
only returnstrue
if the object it is applied to belongs to the category of groups. This means that certain operations make sense for the object, such as inversion (viaInverse
or^ -1
), andOne
. Since transformations don't always have an inverse, this means that they sometimes don't belong to the category of groups even though they do define a group mathematically. Just to make life more complicated they also do sometimes belong to the category of groups but let's not get into that.The thing to check is
IsGroupAsSemigroup
which checks that the object mathematically defines a group, whether it belongs in the category of groups or not. Also you can doIsomorphismPermGroup
to give an isomorphism permutation group.With the Semigroups package loaded you will get:
Neither
IsGroupAsSemigroup
norIsomorphismPermGroup
work in GAP without the Semigroups package.I don't know why
AsGroup
returnsfail
, the documentation is a bit vague. This is probably a bug.