3
$\begingroup$

I am not sure that this is the right forum, but anyhow:

Suppose I have a subgroup $H$ of $S_n$ (given by generators). Does either system make it easy to find the maximal subgroup containing $H$?

  • 0
    "the"? ${}{}{}$2017-01-01
  • 0
    what does maximal mean here? a maximal subgroup which happens to contain $H$ or a subgroup that is maximal among those containing $H$?2017-01-01
  • 0
    @JorgeFernándezHidalgo A $K$ such that $K$ is maximal in $S_n$ and contains $H.$2017-01-01
  • 0
    @DustanLevenstein ?2017-01-01
  • 2
    "the maximal subgroup" implies uniqueness, but there will normally be more than one. So do you want just one of them or all of them?2017-01-01
  • 0
    It's easy to find such a maximal subgroup if $H$ is intransitive or imprimitive, because then you can find a maximal intransitive or imprimitive subgroup containing $H$. It is much harder if $H$ is primitive. If the degree is less than $4096$ then you can use the database of all primitive groups of that degree to identify $H$, and then you could check for containments in larger primitive groups of the same degree. It would involve a bit of programming but it could be done. Of course, if $H \le A_n$ then you have it already!2017-01-01

1 Answers 1

5

(I presume you want the maximal subgroup$\color{red}{s}$ of $S_n$ containing $H$.)

You probably would have to compute at least part of the maximal subgroups (which is easy for $S_n$ if the degree is not too big) and then test conjugates of which subgroup (representative) contain $H$.

For example -- modifying the code for IntermediateSubgroups that is to be in the next release of GAP -- the following routine does this:

# ContainingMaximals(,) returns all maximal subgroups of 
# that contain sub
ContainingMaximals:=function(G,U)
local uind,subs,incl,i,j,k,m,gens,t,c,p;
  subs:=[];
  gens:=SmallGeneratingSet(U);
  # find all maximals containing U
  m:=MaximalSubgroupClassReps(G);
  m:=Filtered(m,x->IndexNC(G,U) mod IndexNC(G,x)=0);
  for j in m do
    t:=RightTransversal(G,Normalizer(G,j)); # conjugates
    for k in t do
      if ForAll(gens,x->k*x/k in j) then
        # U is contained in j^k
        c:=j^k;
        Assert(1,IsSubset(c,U));
        Add(subs,c);
      fi;
    od;
  od;
  # rearrange
  c:=List(subs,x->IndexNC(x,U));
  p:=Sortex(c);
  subs:=Permuted(subs,p);
  return subs;
end;

This is not particularly clever standard code which nevertheless might be sufficient for doing a concrete example.

(I believe Magma has a variant of LowIndexSubgroups for permutation groups and that function might allow you to specify a subgroup that is to be contained, but I do not know that system enough to give details.)