Skip to content

Commit

Permalink
FIX: Perfect subgroups
Browse files Browse the repository at this point in the history
This fixes an error in finding the perfect subgroups which got introducted
with a recent newer method.
If the perfect residuum is too large, it now recurses to maximal subgroups

Also fixed name of tst file (that was erraneously named txt)
  • Loading branch information
hulpke committed Jul 26, 2023
1 parent c7ea8e7 commit fc03bf2
Show file tree
Hide file tree
Showing 3 changed files with 25 additions and 7 deletions.
27 changes: 20 additions & 7 deletions lib/grplatt.gi
Original file line number Diff line number Diff line change
Expand Up @@ -887,6 +887,7 @@ InstallGlobalFunction(LatticeViaRadical,function(arg)
fi;
fi;


ser:=PermliftSeries(G:limit:=300); # do not form too large spaces as they
# clog up memory
pcgs:=ser[2];
Expand Down Expand Up @@ -930,6 +931,7 @@ InstallGlobalFunction(LatticeViaRadical,function(arg)
elif select=IsPerfectGroup or select=IsNonabelianSimpleGroup then
c:=ConjugacyClassesPerfectSubgroups(f);
c:=Filtered(c,x->Size(Representative(x))>1);
SortBy(c,x->Size(Representative(x)));
fselect:=U->not IsSolvableGroup(U);
elif select<>fail then
c:=LatticeByCyclicExtension(f,select)!.conjugacyClassesSubgroups;
Expand Down Expand Up @@ -1004,6 +1006,7 @@ InstallGlobalFunction(LatticeViaRadical,function(arg)
if not k in nts then Add(nts,k);fi;
od;
od;
SortBy(nts,x->Size(x)); # increasing order
# by setting up `act' as fail, we force a different selection later
act:=[nts,fail];

Expand Down Expand Up @@ -1092,8 +1095,8 @@ InstallGlobalFunction(LatticeViaRadical,function(arg)
fi;
od;
if Length(as)>0 then
Info(InfoLattice,2,"Normal subgroup ",j,", ",Length(as),
" subgroups to consider");
Info(InfoLattice,2,"Normal subgroup ",j,", Size ",Size(nts[j]),": ",
Length(as)," subgroups to consider");
# there are subgroups that will complement with this kernel.
# Construct the modulo pcgs and the action of the largest subgroup
# (which must be the normalizer)
Expand Down Expand Up @@ -1398,7 +1401,15 @@ local badsizes,n,un,cl,r,i,l,u,bw,cnt,gens,go,imgs,bg,bi,emb,nu,k,j,

pls:=Maximum(SizesPerfectGroups());
if ForAny(un,i->i>pls) then
Error("the perfect residuum is too large");
# go through maximals
cl:=Unique(List(MaximalSubgroupClassReps(G),PerfectResiduum));
cl:=SubgroupsOrbitsAndNormalizers(G,cl,false);
cl:=List(cl,x->x.representative);
l:=List(cl,RepresentativesPerfectSubgroups);
l:=Unique(Concatenation(l));
r:=List(SubgroupsOrbitsAndNormalizers(G,l,false),x->x.representative);;
SortBy(r,Size);
return r;
fi;

un:=Filtered(un,i->i in PERFRec.sizes);
Expand Down Expand Up @@ -1517,11 +1528,13 @@ local badsizes,n,un,cl,r,i,l,u,bw,cnt,gens,go,imgs,bg,bi,emb,nu,k,j,
fi;
end);

InstallMethod(RepresentativesPerfectSubgroups,"using Holt/Plesken library",
true,[IsGroup],0,G->RepsPerfSimpSub(G,false));
InstallMethod(RepresentativesPerfectSubgroups,
"using Holt/Plesken/Hulpke library",true,[IsGroup],0,
G->RepsPerfSimpSub(G,false));

InstallMethod(RepresentativesSimpleSubgroups,"using Holt/Plesken library",
true,[IsGroup],0,G->RepsPerfSimpSub(G,true));
InstallMethod(RepresentativesSimpleSubgroups,
"using Holt/Plesken/Hulpke library",true,[IsGroup],0,
G->RepsPerfSimpSub(G,true));

InstallMethod(RepresentativesSimpleSubgroups,"if perfect subs are known",
true,[IsGroup and HasRepresentativesPerfectSubgroups],0,
Expand Down
File renamed without changes.
5 changes: 5 additions & 0 deletions tst/testbugfix/2023-07-23-Lattice.tst
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
# Missing perfect subgroups, causing problems for lattice.

gap> g:=Group((1,10)(3,7)(5,16)(6,22)(8,17)(9,20)(11,13)(18,21), (1,19,7)
> (2,5,22,6,9,18)(3,14)(4,21,17,12,23,20)(8,13,11)(10,15));;
gap> TableOfMarks(g);;

0 comments on commit fc03bf2

Please sign in to comment.