Bug in alternate IsZeroSemigroup method

Issue #123 resolved
wilfwilson
created an issue

The logic of this method says that a semigroup is a zero semigroup if { 0 } is the only regular D-class. This is certainly not true, for instance a monogenic semigroup of index 3 and period 1:

gap> x := Transformation([ 1, 1, 2, 3 ]);;
gap> S := Semigroup(x);;
gap> I := SemigroupIdeal(S, x);;
gap> IsZeroSemigroup(S);
false
gap> IsZeroSemigroup(Semigroup(x, rec(acting := false)));
true
gap> IsZeroSemigroup(I);
true
gap> S = I;
true

This is the method which applies if IsActingSemigroup and HasGeneratorsOfSemigroup does not apply.

Does anyone have ideas for the appropriate check here? As it is, NrRegularDClasses(S) = 1 and MultiplicativeZero(S) <> fail is necessary but not sufficient.

Comments (5)

  1. James Mitchell repo owner

    This method should probably just do the same thing as the one for IsActingSemigroup and HasGeneratorsOfSemigroup. Not sure where the current method came from.

    As part of the clean up, I'd like to put the methods (like this one) for generic semigroups and for acting semigroups in a separate file: properties-generic and properties-acting.

  2. Log in to comment