[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,

Vinod Valsalam asked:
>
> 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
     Add(len,Size(i));
     AddSet(sz,Size(Representative(i)));
   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],
       "\" [color=white,arrowhead=none];\n");
   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,
	         "\" [arrowhead=none];\n");
       od;
     od;
   od;
   AppendTo(file,"}\n");
end;





More information about the Forum mailing list