semigroups / Semigroups

The GAP package Semigroups
https://semigroups.github.io/Semigroups/
Other
23 stars 35 forks source link

`IsSelfDualSemigroup` returns false negatives #1014

Open james-d-mitchell opened 3 months ago

james-d-mitchell commented 3 months ago

For example, with only Smallsemi loaded:

gap> S := SmallSemigroup(6, 2);;
gap> IsSelfDualSemigroup(S);
true

with Semigroups loaded:

gap> S := SmallSemigroup(6, 2);;
gap> IsSelfDualSemigroup(S);
false

The correct answer seems to be the one returned by Smallsemi, since:

gap> S := SmallSemigroup(6, 2);;
gap> T := DualSemigroup(S);;
gap> IsIsomorphicSemigroup(S, T);
true

The issue is that the generators don't have to be mapped by the identity function from T to Range(map) in:

https://github.com/semigroups/Semigroups/blob/fa9344fa86f7578e6c1e763dc7fafb01f39b1757/gap/attributes/properties.gi#L1651-L1657

gap> S := SmallSemigroup(6, 2);;
gap> OnTuples(GeneratorsOfSemigroup(S), map); 
[ m1, m2, m3, m4, m6, m5 ]