Skip to content

Commit

Permalink
ENHANCE: Added manual to `LowIndexSubgroups'.
Browse files Browse the repository at this point in the history
as requested in #2131

Also added `LowLayerSubgroups` and minor rephrasing.

Also redid part of #683, as for some reason (probably my stupidity)
part of #683 had fallen out of master. Added it again.
  • Loading branch information
hulpke committed Feb 1, 2018
1 parent 8763634 commit 1eed10d
Show file tree
Hide file tree
Showing 3 changed files with 27 additions and 4 deletions.
3 changes: 2 additions & 1 deletion doc/ref/groups.xml
Original file line number Diff line number Diff line change
Expand Up @@ -449,8 +449,9 @@ the series without destroying the properties of the series.
<#Include Label="IsConjugacyClassSubgroupsRep">
<#Include Label="ConjugacyClassesSubgroups">
<#Include Label="ConjugacyClassesMaximalSubgroups">
<#Include Label="AllSubgroups">
<#Include Label="MaximalSubgroupClassReps">
<#Include Label="LowIndexSubgroups">
<#Include Label="AllSubgroups">
<#Include Label="MaximalSubgroups">
<#Include Label="NormalSubgroups">
<#Include Label="MaximalNormalSubgroups">
Expand Down
11 changes: 8 additions & 3 deletions lib/grp.gd
Original file line number Diff line number Diff line change
Expand Up @@ -4486,12 +4486,12 @@ DeclareGlobalFunction("GroupEnumeratorByClosure");
##
## <#GAPDoc Label="LowIndexSubgroups">
## <ManSection>
## <Oper Name="LowIndexSubgroups"
## Arg='G, index'/>
## <Oper Name="LowIndexSubgroups" Arg='G, index'/>
## <Oper Name="LowLayerSubgroups" Arg='G, layer'/>
##
## <Description>
## These operations computes representatives of the conjugacy classes of
## The operation <C>LowIndexSubgroups</C> computes representatives of the
## conjugacy classes of
## subgroups of the group <A>G</A> that
## index less than or equal to
## <A>index</A>.
Expand All @@ -4500,6 +4500,11 @@ DeclareGlobalFunction("GroupEnumeratorByClosure");
## <C>LowIndexSubgroupsFpGroup</C>. In other cases, it uses repeated
## calculation of maximal subgroups.
## <P/>
## <P>
## The operation <C>LowLayerSubgroups</C> works similar but does not bound
## the index, but instead considers up to <A>layer</A>-th maximal
## subgroups.
## </P>
## <Example><![CDATA[
## gap> g:=TransitiveGroup(18,950);;
## gap> l:=LowIndexSubgroups(g,20);;Collected(List(l,x->Index(g,x)));
Expand Down
17 changes: 17 additions & 0 deletions lib/grplatt.gi
Original file line number Diff line number Diff line change
Expand Up @@ -3055,6 +3055,23 @@ local recog,m,len;
return m;
end);

InstallMethod(LowIndexSubgroups,"finite groups, using iterated maximals",
true,[IsGroup and IsFinite,IsPosInt],0,
function(G,n)
local m,all,m2;
m:=[G];
all:=[G];
while Length(m)>0 do
m2:=Concatenation(List(m,MaximalSubgroupClassReps));
m2:=Unique(Filtered(m2,x->Index(G,x)<=n));
m2:=List(SubgroupsOrbitsAndNormalizers(G,m2,false),x->x.representative);
m2:=Filtered(m2,x->ForAll(all,y->RepresentativeAction(G,x,y)=fail));
Append(all,m2);
m:=Filtered(m2,x->Index(G,x)<=n/2); # otherwise subgroups will have too large index
od;
return all;
end);

#############################################################################
##
#F LowLayerSubgroups( [<act>,] <G>, <lim> [,<cond> [,<dosub>]] )
Expand Down

0 comments on commit 1eed10d

Please sign in to comment.