Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Incorrect multiplication tables #2

Closed
flsmith opened this issue Oct 31, 2018 · 7 comments · Fixed by #7
Closed

Incorrect multiplication tables #2

flsmith opened this issue Oct 31, 2018 · 7 comments · Fixed by #7

Comments

@flsmith
Copy link

flsmith commented Oct 31, 2018

When trying to get the multiplication table of a small semigroup, I can trigger this:

gap> S := AsSemigroup(IsTransformationSemigroup, SmallSemigroup(4, 18));
<transformation semigroup of size 4, degree 5 with 3 generators>
gap> sortedlist := AsSSortedList(S);;
gap> M := MultiplicationTable(S);;
gap> for i in [1 .. 4] do
> for j in [1 .. 4] do
> if not sortedlist[i] * sortedlist[j] = sortedlist[M[i][j]] then
> Error(i, j, M[i][j]);
> fi;
> od;
> od;
Error, 141 at *stdin*:40 called from
<function "unknown">( <arguments> )
 called from read-eval loop at *stdin*:43
you can 'quit;' to quit to outer loop, or
you can 'return;' to continue

but the following is fine:

gap> S := Semigroup(GeneratorsOfSemigroup(S));
<transformation semigroup of degree 5 with 3 generators>
gap> sortedlist := AsSSortedList(S);;
gap> M := MultiplicationTable(S);;
gap> for i in [1 .. 4] do
> for j in [1 .. 4] do
> if not sortedlist[i] * sortedlist[j] = sortedlist[M[i][j]] then
> Error(i, j, M[i][j]);
> fi;
> od;
> od;
gap> 
@flsmith
Copy link
Author

flsmith commented Nov 2, 2018

This is due to the following function in SmallSemi small.gi:

InstallMethod(IsomorphismTransformationSemigroup, [IsSmallSemigroup],
function(S)
  local table, map, T, iso;

  table := TransposedMat(MultiplicationTable(S));
  map   := x -> TransformationNC(Concatenation(table[x!.index], [x!.index]));

  T     := Semigroup(List(MinimalGeneratingSet(S), map));
  SetSize(T, Size(S));
  SetMultiplicationTable(T, MultiplicationTable(S));
  SetAsSSortedList(T, Set(S, map));
  SetIdSmallSemigroup(T, IdSmallSemigroup(S));
  UseIsomorphismRelation(S, T);

  iso := SemigroupHomomorphismByImagesNC(S, T, List(AsSSortedList(S), map));
  SetIsBijective(iso, true);

  return iso;
end);

Set can reorder the list so the line SetAsSSortedList(T, Set(S, map)); is incorrect.

@james-d-mitchell
Copy link
Collaborator

So, perhaps there will be a github version of Smallsemi sometime soon (@alex-konovalov), and then you could submit a PR there @flsmith ?

@james-d-mitchell
Copy link
Collaborator

I labelled this issue wontfix because we won't fix it here, but in Smallsemi itself.

@olexandr-konovalov
Copy link
Member

With new GitHub feature, we will be able to transfer this issue to Smallsemi repo once it will be established.

@fingolfin
Copy link
Member

So, is there a chance somebody will submit a fix to smallsemi, and a new release with this fixed will be released?

@james-d-mitchell
Copy link
Collaborator

Yes I intend to do this soon.

@olexandr-konovalov
Copy link
Member

Fixed in #7 by @james-d-mitchell

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging a pull request may close this issue.

4 participants