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

HasAbelianFactorGroup, HasSolvableFactorGroup, etc., does not require N to be normal subgroup #591

Closed
hungaborhorvath opened this issue Feb 6, 2016 · 3 comments

Comments

@hungaborhorvath
Copy link
Contributor

I was browsing grp.gi while came across these functions: HasAbelianFactorGroup, HasSolvableFactorGroup, HasElementaryAbelianFactorGroup. These all do what one would think to do (and what is written in the manual), except that N is not required to be a normal subgroup, and is not checked for it. In particular, weird results are obtained if N is not a normal subgroup, but just some subset:

gap> G := SymmetricGroup(4);
Sym( [ 1 .. 4 ] )
gap> HasAbelianFactorGroup(G, [(1,2)]);
true
gap> G=NormalClosure(G, Group((1,2)));
true

This for example can be interpreted as checked whether the factor by the normal subgroup generated by (1,2) is abelian. This interpretation, though, is not always right:

gap> HasAbelianFactorGroup(G, Group([(1,2,3)]));
true
gap> HasAbelianFactorGroup(G, [(1,2,3)]);
false
gap> NormalClosure(G, Group((1,2,3)))=AlternatingGroup(4);
true

I believe that either the manual should say that undefined results will happen if the user does not make sure that N is a normal subgroup, or the current methods should be the NC versions, and the non-NC versions should check whether N is really a normal subgroup. Maybe a subgroup check is enough, and then the results is about factor by the normal closure.

Another thing I noticed about HasSolvableFactorGroup (there is a typo in line 4540: abelian should really be solvable), is that it checks if any element of the derived series is in N. Would it not be enough to check for the last element of the derived series? Or, alternatively, computing the elements one by one (not using the derived series) and checking each whether they are already in N (which could spare some computation on the further commutators)? This is of course not really an issue for finite permutation groups, but rather for some fp-groups where derived subgroup computation and checking subsets could be expensive.

@hulpke
Copy link
Contributor

hulpke commented Feb 6, 2016

I will amend the documentation (and add a level 2 assertion).

hulpke added a commit to hulpke/gap that referenced this issue Feb 6, 2016
@hungaborhorvath
Copy link
Contributor Author

@hulpke Thank you.

Do you know why all elements of the derived series are checked instead of only the last one?

@hungaborhorvath
Copy link
Contributor Author

Completely fixed by #1066

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

No branches or pull requests

2 participants