Minimal Permutation Degree for Simple and Semi-Simple Groups
Added the function MinimalFaithfulPermutationDegreeOfSimpleGroup which computes the minimal degree directly, using table 4 of this paper : https://www.ams.org/journals/tran/2015-367-11/S0002-9947-2015-06293-X/S0002-9947-2015-06293-X.pdf
Also added test MinimalFaithfulPermutationDegreeOfSimpleGroup.tst to cross verify using DoMinimalFaithfulPermutationDegree and the list SIMPLEGPSNONL2.
Added the function MinimalFaithfulPermutationDegreeOfSemiSimpleGroup based on this research paper : https://dl.acm.org/doi/10.1145/3618260.3649641
Also added the test MinimalFaithfulPermutationDegreeOfSemiSimpleGroup.tst .
Could someone please review this ?
What is the motivation for this? You add a new internal (=undocumented) function that is not used by anything. Is there a bigger plan here, somehow?
@fingolfin Isn't it useful to have a function which computes the smallest degree of a faithful permutation representation of a finite (simple) group? I mean, of course the function should be documented then.
@fingolfin , I am working on a similar function for semi simple groups, which will be using this function. I'm quite new to GAP and open source in general and that's why I didn't think of documenting it. Thanks for pointing it out. I have added it now.
Should this new method always be used for calculating the MinimalFaithfulPermutationDegree of a simple group?
In that case, in GAP we usually use InstallMethod, to add specialised versions of functions.
For example, I think in this case you want:
InstallMethod( MinimalFaithfulPermutationDegree, "for simple groups", [ IsSimpleGroup ], ... your function)
In order to make testing easier, it is reasonable to still give a different name to your function (for example, we already have DoMinimalFaithfulPermutationDegree).
In this particular (unusual) case, you should probably look at grplatt.gi:3637, where you will see the existing overload, which has a special ValueOption piece of code to deal with an old removed feature -- that could should probably be copied.
This does make testing a little harder,
Should I document MinimalFaithfulPermutationDegreeOfSimpleGroupWithIsomorphismType or let it be, considering it isn't very user friendly. I am mainly using it for testing, since computing IsomorphismTypeInfoFiniteSimpleGroup takes some time.
This should be integrated with the existing functiinality of
SufficientlySmallDegreeSimpleGroupOrder(grp/simple.gi), which already provides much of this information up to order 2^55
Doesn't that function return a heuristic though? I want to compute exact value. I can certainly use this to update my tests, but how should I "integrate" my function in this ? Should I simply move my code to simple.gi ?
For starters, perhaps SufficientlySmallDegreeSimpleGroupOrder could be changed to call your new function? (I am writing this without having even looked at the code of this function, so it might not be feasible at all)
This should be integrated with the existing functiinality of
SufficientlySmallDegreeSimpleGroupOrder(grp/simple.gi), which already provides much of this information up to order 2^55Doesn't that function return a heuristic though? I want to compute exact value. I can certainly use this to update my tests, but how should I "integrate" my function in this ?
The function uses a heuristic, only because we did not have proper data. If we do, the proper data should be used.
This should be integrated with the existing functiinality of
SufficientlySmallDegreeSimpleGroupOrder(grp/simple.gi), which already provides much of this information up to order 2^55Doesn't that function return a heuristic though? I want to compute exact value. I can certainly use this to update my tests, but how should I "integrate" my function in this ?
The function uses a heuristic, only because we did not have proper data. If we do, the proper data should be used.
I still don't understand what I should change ? Both the functions are very different from each other. One gives the permutation degree of a specific group, while one gives an upper bound on the degree for groups of a particular order.