-
Notifications
You must be signed in to change notification settings - Fork 163
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
Normalisers of simple groups #4100
base: master
Are you sure you want to change the base?
Normalisers of simple groups #4100
Conversation
lib/gpprmsya.gi
Outdated
@@ -1430,6 +1430,42 @@ local P; | |||
fi; | |||
end); | |||
|
|||
|
|||
BindGlobal( "NormalizerSimpleGroupInParentSymmetricViaAutomorphisms", | |||
function( T, aut... ), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I think we need T
to be transitive. We should check what ConjugatorOfConjugatorIsomorphism
does otherwise.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
So we assume that T
is finite non-abelian and simple. If the action is faithful, it is either transitive or trivial. As we compute the normalizer in the symmetric group on the moved points, I guess we want to assume that the action of T
on its moved points is faithful? If so, the only thing we need to check is that the action is not trivial. What do you think @ssiccha ?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I don't think ConjugatorIsomorphism
requires T
to be transitive, so this should not cause any problems.
## of <A>grp</A>. <P/> | ||
## Note: This Algorithm might become slow if the automorphism group | ||
## of <A>grp</A> is large. | ||
DeclareGlobalName("RepresentativesOuterAutomorphismGroup"); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
DeclareGlobalName("RepresentativesOuterAutomorphismGroup"); | |
DeclareGlobalName("RepresentativesOuterAutomorphismGroupViaRandomSearch"); |
I'd specify the way we search for the representatives. Why? I feel without the suffix ViaRandomSearch
the name of the function suggests that it is the GAP function to compute representatives of the elements of the outer automorphism group. But the function (at least in its current form) is rather specialized, i.e. only applicable where the outer automorphism group is really small.
Ofc better name suggestions are always welcome. :)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I updated this for now. We might change this again if the improve the speed of the function.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
We added a TODO for now pointing to Alex' suggestion below.
What one could do (and I have done in similar cases) is to represent the outer automorphism group as (say) permutation group (it is an iterated semidirect product of cyclic groups, and e.g. |
7af88d5
to
4d73945
Compare
@hulpke Thanks a lot for the suggestion! We'll look into it. :) |
@hulpke Are there situations in which GAP can compute the automorphism group, but |
@DominikBernhardt has looked into |
No, there should not be any such situations (the one that existed was a bad bug). In fact the code for normalizer in Sn uses the information to see whether a simople group can have normalizing elements outside the centralizer. And with the new code in, it would not be hard to always return a faithful representation of the outer automorphism group as well. (The main difficulty is to match the naming of the extension to the ones used in the character table library.) |
@hulpke I'm a bit at a loss how to actually do that 😅
Can you give me a starting point for where to look into that? Or would that be easier and quicker to explain in a short video call? |
If you'd find it useful, I can add a component to |
@hulpke That would be awesome! But, don't we also need the homomorphism? Or at least an easy way to get a homomorphism from the automorphism group to the image. |
Yes, the homomorphism from Aut(T) to Out(T) would be more useful (but will be much harder, and I cannot offer that). |
7661f1d
to
1823d5b
Compare
RepresentativesOuterAutomorphismGroup.
649e4b0
to
f3242c1
Compare
Very stupid question: The function |
@hulpke I guess the fact that The only thing I could find out was from the commit log (the "secret" internal one which is not generally available on GitHub) is that the initial version of that function was added by you 2002-05-08 with this commit message:
and it is called by @DominikBernhardt do you have a reply? |
Sorry @hulpke and @fingolfin , I forgot to reply. |
Well, it did not help that we expunge the comment messages. I'll add a comment to the file. SA is ``symmetric or alternating''. First parameter is Sn or An, second is the subgroup. What is computed is a subgroup that:
|
@hulpke So, does that mean that if the group
I think it can't be "2." since otherwise it should also be quick for imprimitive simple groups. What our function does is essentially always this part of
So do you think it would make sense to put that part that both |
@ssiccha Ah -- I did not realize that your focus was imprimitive simple groups. If an imprimitive (may be simple) group is given, and the block system is ``unique'' so that it must be styabilizerd by the normalizer, it will return a wreath product A\wr B where A normalizes the block stabilizers action on the block and B normalizes the action on the blocks (Note that for simple groups the action on the blocks is (ultimately) primitive, so this recursive call will use in the primitive case.) viz:
In the imprimitive case, it does not try to use automorphisms per se. If a primitive (again may be simple) group with nonabelian socle is given, the routine either tries to find possible larger groups from the primitive groups library, or tries to find which automorphisms are induced by the normalizer. If the normalizer is not computes in a symmetric or alternating group it oprobably is not worth to go through NormalizerParentSA. Yes, it might be useful to move the ``find normalizer by automorphisms'' into a helper function. Or NormalizerParentPA could call your routine in the case of a simple socle. |
Adds two functions:
NormalizerOfSimpleGroupInParentSymmetricViaAutomorphisms
RepresentativesOuterAutomorphismGroup
RepresentativesOuterAutomorphismGroup
is very unrefined. For moderate simple groups though this is already quicker than explicitly computing the outer automorphism group as a factor group.Joint work with @ssiccha.
(edit by Sergio)