# [GAP Forum] Maximal subgroups of non-representatives in lattice

Alexander Hulpke ahulpke at gmail.com
Sat Sep 27 03:39:55 BST 2008

```Dear GAP-Forum,

>
> In the subgroup lattice produced by LatticeSubgroups(), I can find the
> maximal subgroup relations among conjugacy class representatives using
> the function MaximalSubgroupsLattice().  However, I am also interested
> in the maximal subgroups of all the other elements of the class; not
> just those of the class representatives.  In GAP 3, section 7.74 of
> the manual describes an easy way to display this information by
> setting the print level to 4 or 5:

This information is not any longer available via the print level, it
can however be obtained easily from the maximal subgroups information
by conjugating representatives. As an example I append a function that
takes a subgroup lattice and writes out the lattice structure as a
graph in the .dot (graphviz) format. I'd expect that this function
(which will be in the next major release) is easily adapted for other
purposes.

Hope this helps,

Alexander Hulpke
>

-- Colorado State University, Department of Mathematics,
Weber Building, 1874 Campus Delivery, Fort Collins, CO 80523-1874, USA
email: hulpke at math.colostate.edu, Phone: ++1-970-4914288
http://www.math.colostate.edu/~hulpke

#############################################################################
##
#F  DotFileLatticeSubgroups(<L>,<filename>)

DotFileLatticeSubgroups:=function(L,file)
local cls, len, sz, max, rep, z, t, i, j, k;
cls:=ConjugacyClassesSubgroups(L);
len:=[];
sz:=[];
for i in cls do
od;

PrintTo(file,"digraph lattice {\nsize = \"6,6\";\n");
# sizes and arrangement
for i in sz do
AppendTo(file,"\"s",i,"\" [label=\"",i,"\", color=white];\n");
od;
sz:=Reversed(sz);
for i in [2..Length(sz)] do
AppendTo(file,"\"s",sz[i-1],"\"->\"s",sz[i],
od;

# subgroup nodes, also acccording to size
for i in [1..Length(cls)] do
for j in [1..len[i]] do
if len[i]=1 then
AppendTo(file,"\"",i,"x",j,"\" [label=\"",i,"\", shape=box];\n");
else
AppendTo(file,"\"",i,"x",j,"\" [label=\"",i,"-",j,"\", shape=circle];
\n");
fi;
od;
AppendTo(file,"{ rank=same;
\"s",Size(Representative(cls[i])),"\"");
for j in [1..len[i]] do
AppendTo(file," \"",i,"x",j,"\"");
od;
AppendTo(file,";}\n");
od;

max:=MaximalSubgroupsLattice(L);
for i in [1..Length(cls)] do
for j in max[i] do
rep:=ClassElementLattice(cls[i],1);
for k in [1..len[i]] do
if k=1 then
z:=j[2];
else
t:=cls[i]!.normalizerTransversal[k];
z:=ClassElementLattice(cls[j[1]],1); # force computation of transv.
z:=cls[j[1]]!.normalizerTransversal[j[2]]*t;
z:=PositionCanonical(cls[j[1]]!.normalizerTransversal,z);
fi;
AppendTo(file,"\"",i,"x",k,"\" -> \"",j[1],"x",z,