gap-packages / smallsemi

A library of small semigroups
https://gap-packages.github.io/smallsemi/
GNU General Public License v3.0
3 stars 3 forks source link

update documentation to make it clear that semigroups are listed up to isomorphism and anti-isomorphism #25

Open saliola opened 2 years ago

saliola commented 2 years ago

Hi, I'm probably doing something wrong here, but I can't seem to find a semigroup in the database. Perhaps it is how I am testing for isomorphism? But from what I understand, these methods should work.

Here is the semigroup:

LoadPackage("semigroups");
LoadPackage("smallsemi");
S := Semigroup([IdentityTransformation, Transformation([2,1]), Transformation([3,4,3,4]), Transformation([4,3,3,4])]);

Here is what I tried (uses the semigroup package):

for T in AllSmallSemigroups(Size(S)) do
    if IsIsomorphicSemigroup(S, T) then Print("true"); fi;
od;
for T in AllSmallSemigroups(Size(S)) do
    if CanonicalMultiplicationTable(S) = CanonicalMultiplicationTable(T) then Print("true"); fi;
od;
for T in AllSmallSemigroups(Size(S)) do
    if SmallestMultiplicationTable(S) = SmallestMultiplicationTable(T) then Print("true"); fi;
od;

Any ideas on what is happening here?

(I'm sorry if this isn't the right place to ask a question.)

saliola commented 2 years ago

Digging through the documentation some more, I found in Chapter 4 (and later in Chapter 3) that the semigroups are stored up to isomorphism and anti-isomorphism.

Since this behaviour is rather unexpected – perhaps due to my familiarity with the Small Groups library in which the groups are listed up to isomorphism – I suggest changing the documentation to clearly state this early on. One nice way to do this is to take the first sentence of Chapter 3 (below) and copy it to the introduction and to the README, since it is very descriptive.

The main features of the library can be summarized in three points: it provides a complete set of semigroups up to isomorphism and anti-isomorphism of sizes up to 8; it carries a vast amount of precomputed information about these semigroups; and there is an identification function which takes a semigroup with at most 8 elements and returns a map to the equivalent one from the library.

james-d-mitchell commented 2 years ago

@saliola great suggestion, thanks!