-
Notifications
You must be signed in to change notification settings - Fork 160
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Implement IsMinimalNonmonomial for nonsolvable grp
The previous implementation followed van der Waall in only handling solvable groups. Indeed in the paper, [MR507832](https://mathscinet.ams.org/mathscinet-getitem?mr=507832) van der Waall says the nonsolvable groups can easily be disposed of using Thompson's N-groups papers, however he does not state the result. Luckily most of the minimal simple groups are also minimal non-monomial. The exception is just PSL(3,3) which contains a subgroup isomorphic to the non-monomial group SL(2,3). The groups of the form PSL(2,q) are handled by Dickson's classification of their subgroups, all of which are metabelian or non-solvable. Since the non-solvable subgroups are eliminated by being minimal simple, we have only monomial subgroups. The Suzuki groups require a short argument, given in the source. Suzuki 1960 lists the maximal subgroups, and all but the Sylow 2-normalizer are metabelian. The Sylow 2-normalizer's characters are described in sufficient detail in the paper to ensure they are monomial. I included a commented out "IsMNMNaive" that checks all the conditions. I ran this for 10 or 20 minutes on the small, perfect, and primitive group libraries.
- Loading branch information
1 parent
c9b1809
commit 5e6cbbc
Showing
2 changed files
with
130 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,60 @@ | ||
gap> START_TEST("ctblmono.tst"); | ||
|
||
# | ||
# the following test comes from https://github.com/gap-system/gap/issues/4452 | ||
# this used to give method not found for non-solvable groups | ||
# | ||
gap> IsMinimalNonmonomial(SL(2,3)); | ||
true | ||
gap> IsMinimalNonmonomial(GL(2,3)); | ||
false | ||
gap> IsMinimalNonmonomial(PSL(2,4)); | ||
true | ||
gap> IsMinimalNonmonomial(PGL(2,5)); | ||
false | ||
gap> IsMinimalNonmonomial(PSL(2,7)); | ||
true | ||
gap> IsMinimalNonmonomial(PSL(2,8)); | ||
true | ||
gap> IsMinimalNonmonomial(PSL(2,9)); | ||
false | ||
gap> IsMinimalNonmonomial(PSL(2,11)); | ||
false | ||
gap> IsMinimalNonmonomial(PSL(2,27)); | ||
true | ||
gap> IsMinimalNonmonomial(PSL(3,3)); | ||
false | ||
gap> IsMinimalNonmonomial(Sz(8)); | ||
true | ||
gap> g := Sz(512);; SetIsSolvableGroup(g,false);; IsMinimalNonmonomial(g); | ||
false | ||
|
||
# To avoid more silly mistakes, the following tests were also run | ||
# Since they take several minutes, I have left them commented out | ||
# gap> IsMNMNaive := g -> | ||
# > (IsMonomialGroup(g)=false) # not monomial itself | ||
# > and ForAll( NormalSubgroups(g), n -> Size(n) = 1 or | ||
# > IsMonomialGroup(g/n) ) # every proper quotient is monomial | ||
# > and ForAll( MaximalSubgroupClassReps(g), IsMonomialGroup) # quicker | ||
# > and ForAll( ConjugacyClassesSubgroups(g), c -> # every proper subgroup | ||
# > Size( Representative(c) ) = Size(g) or IsMonomialGroup(Representative(c)));; | ||
# gap> for n in [1..767] do | ||
# > if IsPrimePowerInt(n) then continue; fi; | ||
# > if NrSmallGroups(n) > 2000 then continue; fi; | ||
# > for k in [1..NrSmallGroups(n)] do | ||
# > sg := SmallGroup(n,k); | ||
# > Assert(0, IsMNMNaive(sg) = IsMinimalNonmonomial(sg) ); | ||
# > od; od; | ||
# gap> for n in SizesPerfectGroups() do | ||
# > for k in [1..NrPerfectLibraryGroups(n)] do | ||
# > pg := PerfectGroup(IsPermGroup,n,k); | ||
# > Assert(0, IsMNMNaive(pg) = IsMinimalNonmonomial(pg) ); | ||
# > od; od; | ||
# gap> for pg in PrimitiveGroupsIterator(NrMovedPoints,[1..20],IsSolvableGroup,false) do | ||
# > if IsNaturalAlternatingGroup(pg) or IsNaturalSymmetricGroup(pg) then continue; fi; | ||
# > if Size(pg) > 10^6 then continue; fi; | ||
# > Assert(0, IsMNMNaive(pg) = IsMinimalNonmonomial(pg) ); | ||
# > od; | ||
|
||
# | ||
gap> STOP_TEST( "ctblmono.tst", 1); |