IsSemigroup(  obj ) 
IsSemigroup returns true if the object obj is a semigroup
and false otherwise. This function simply checks whether the record 
component obj.isSemigroup is bound and is true.
gap> IsSemigroup( t1 ); false # a transformation is not a semigroup gap> IsSemigroup( Group( (1,2,3) ) ); false # a group is not a semigroup gap> IsSemigroup( s27 ); true
GAP 3.4.4