Skip to content

Commit

Permalink
ENHANCE: Small improvements to descending subgroup iterator
Browse files Browse the repository at this point in the history
  • Loading branch information
hulpke committed Jan 21, 2020
1 parent b223921 commit ffe4b25
Showing 1 changed file with 22 additions and 2 deletions.
24 changes: 22 additions & 2 deletions lib/grplatt.gi
Original file line number Diff line number Diff line change
Expand Up @@ -3429,6 +3429,14 @@ local d,ind,i,ma,ab,a,p,b,c,e,n;
elif IsPrimeInt(ind) then return d;fi;
fi;
fi;
if Size(G)>1 and SIZE_OBJ(G.1)*Length(GeneratorsOfGroup(G))>10000 then
a:=SmallGeneratingSet(G);
if Length(a)<Length(GeneratorsOfGroup(G))-1 then
b:=Size(G);
G:=Group(a);
SetSize(G,b);
fi;
fi;
return G;
end);

Expand All @@ -3451,7 +3459,7 @@ local divs,limit,mode,l,process,done,bound,maxer,prime;
maxer:=function(sub)
local m,a,b,len,sz,i,j,k,r,tb;
#Print("call maxer for ",Size(sub)," |l|=",Length(l)," |process|=",Length(process),"\n");
if bound>1 and 2^(Length(AbelianInvariants(sub))-3)>bound then
if bound>1 and prime^(Length(AbelianInvariants(sub))-3)>bound then
i:=0;
repeat
m:=BoundedIndexAbelianized(G,sub,bound*prime^i);
Expand All @@ -3460,7 +3468,19 @@ local divs,limit,mode,l,process,done,bound,maxer,prime;
if Size(m)^2<Size(sub) then
m:=MaximalSubgroupClassReps(sub:cheap:=false);
else
m:=[m];
# add maxes not containing derived
if IsSolvableGroup(sub) then
i:=IsomorphismPcGroup(sub);
a:=DerivedSubgroup(Image(i));
a:=Filtered(MaximalSubgroupClassReps(Image(i)),
x->not IsSubset(x,a));
a:=List(a,x->PreImage(i,x));
else
a:=DerivedSubgroup(sub);
a:=Filtered(MaximalSubgroupClassReps(sub),
x->not IsSubset(x,a));
fi;
m:=Concatenation([m],a);
fi;
else
m:=MaximalSubgroupClassReps(sub:cheap:=false);
Expand Down

0 comments on commit ffe4b25

Please sign in to comment.