Skip to content

Commit

Permalink
MaximalSubgroupClassReps uses AtlasRep
Browse files Browse the repository at this point in the history
if available
  • Loading branch information
hulpke committed Aug 13, 2023
1 parent d693b2f commit 315c4d8
Show file tree
Hide file tree
Showing 2 changed files with 31 additions and 2 deletions.
31 changes: 30 additions & 1 deletion lib/grplatt.gi
Original file line number Diff line number Diff line change
Expand Up @@ -3123,7 +3123,7 @@ local T,t,hom,inf,nam,i;
end);

InstallGlobalFunction(TomDataMaxesAlmostSimple,function(G)
local recog,m;
local recog,m,p,inf,a;
# avoid the isomorphism test falling back
if ValueOption("cheap")=true and IsInt(ValueOption("intersize")) and
ValueOption("intersize")<=Size(G) then
Expand All @@ -3132,6 +3132,35 @@ local recog,m;

recog:=TomDataAlmostSimpleRecognition(G);
if recog=fail then

# can we use the Atlasrep package?
if IsSimpleGroup(G) and IsPackageMarkedForLoading("atlasrep","")=true
and ValueOption(NO_PRECOMPUTED_DATA_OPTION)<>true then
recog:=DataAboutSimpleGroup(G);
inf:=CallFuncList(ValueGlobal("AtlasRepInfoRecord"),[recog.tomName]);
p:=CallFuncList(ValueGlobal("AtlasProgram"),[recog.tomName,1,"find"]);
if p<>fail and inf<>fail and IsBound(inf.nrMaxes) then
Info(InfoLattice,1,"Maxes of ",recog.tomName," by ATLAS words");
a:=CallFuncList(ValueGlobal("ResultOfBBoxProgram"),[p.program,G]);
p:=List([1..inf.nrMaxes],
x->CallFuncList(ValueGlobal("AtlasProgram"),[inf.name,1,"maxes",x]));
m:=List(p,x->CallFuncList(ValueGlobal("ResultOfStraightLineProgram"),
[x.program,a]));
m:=List(m,x->SubgroupNC(G,x));
return m;

Check warning on line 3150 in lib/grplatt.gi

View check run for this annotation

Codecov / codecov/patch

lib/grplatt.gi#L3143-L3150

Added lines #L3143 - L3150 were not covered by tests
elif inf<>fail and IsBound(inf.nrMaxes) then
Info(InfoLattice,1,"Maxes of ",recog.tomName," by ATLAS group");
a:=CallFuncList(ValueGlobal("AtlasGroup"),[inf.name]);
recog:=IsomorphismGroups(a,G);
m:=List([1..inf.nrMaxes],x->CallFuncList(
ValueGlobal("AtlasSubgroup"),[inf.name,x]));
if ForAny(m,x->x=fail) then return fail;fi;
Assert(1,ForAll(m,x->IsSubset(a,x)));
m:=List(m,x->Image(recog,x));
return m;

Check warning on line 3160 in lib/grplatt.gi

View check run for this annotation

Codecov / codecov/patch

lib/grplatt.gi#L3158-L3160

Added lines #L3158 - L3160 were not covered by tests
fi;
fi;

return fail;
fi;
m:=List(MaximalSubgroupsTom(recog[2])[1],i->RepresentativeTom(recog[2],i));
Expand Down
2 changes: 1 addition & 1 deletion tst/teststandard/permgrp.tst
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@
##
## Some tests for permutation groups and friends(takes a few seconds to run)
##
#@local g, dc, ac, p, s, dc1, u, part, iso,l,it,i
#@local g, dc, ac, p, s, dc1, u, part, iso,l,it,i,w,d,a,hom
gap> START_TEST("permgrp.tst");
gap> Size(Normalizer(SymmetricGroup(100),PrimitiveGroup(100,1)));
1209600
Expand Down

0 comments on commit 315c4d8

Please sign in to comment.