5

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.

Mikasa
  • 67,942
  • Your attempt to apply AsGroup is correct. I don't know why it returns fail, since AsGroup(MagmaByMultiplicationTable(MultiplicationTable(AsList(T)))); returns a group. But in the other attempt IsGroup is of no help here since it checks the category of the object, and not its mathematical property. – Olexandr Konovalov Mar 20 '16 at 15:57
  • Thanks Alexander for the points. – Mikasa Mar 20 '16 at 17:09

1 Answers1

5

Alex is correct: IsGroup only returns true 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 (via Inverse or ^ -1), and One. 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 do IsomorphismPermGroup to give an isomorphism permutation group.

With the Semigroups package loaded you will get:

gap> IsGroupAsSemigroup(T);
true
gap> IsomorphismPermGroup(T);
MappingByFunction( <transformation group of degree 7 with 2 generators>
, Group([ (2,3,4)(5,6,7), (2,7)(3,6)
(4,5) ]), <Attribute "PermutationOfImage">, function( x ) ... end )

Neither IsGroupAsSemigroup nor IsomorphismPermGroup work in GAP without the Semigroups package.

I don't know why AsGroup returns fail, the documentation is a bit vague. This is probably a bug.

James Mitchell
  • 2,456
  • 15
  • 26
  • Thanks James for paving the way. I need time to reflect about the points. – Mikasa Mar 20 '16 at 17:11
  • 1
    This is something that trips up many GAP users, including me. IsMonoid is another example, it does not return true for something that is mathematically a monoid but is not in the category of monoids. – James Mitchell Mar 20 '16 at 17:39
  • Can I call 'StructureDescription' to find out the related possible group after appling 'IsomorphismPermGroup' under 'Xmod' package? – Mikasa Mar 21 '16 at 07:29
  • Yes, you can, do 'StrucureDescription(Range(map));' where 'map' is the variable holding the isomorphism to a perm group. This has nothing to do with the xmod package, as far as I'm aware. – James Mitchell Mar 21 '16 at 08:43
  • Thanks so much James for every seconds. :-) – Mikasa Mar 21 '16 at 09:50