DrawSubgroupLattice - Maple Help
For the best experience, we recommend viewing online help using Google Chrome or Microsoft Edge.

Online Help

All Products    Maple    MapleSim

Home : Support : Online Help : Mathematics : Group Theory : DrawSubgroupLattice





draw the subgroup lattice of a finite group


Calling Sequence






Calling Sequence

DrawSubgroupLattice(G, opts)

DrawSubgroupLattice(sgl, opts)




group data structure



(optional) equations of the form keyword or keyword = value, as explained below



subgroup lattice data structure



assignlattice = name


Specifying assignlattice = x causes Maple to assign the subgroup lattice of G to the name x. If x already has an assigned value, it will typically be necessary to use quotes to prevent evaluation of x: one can do so by specifying assignelements = 'x'.


vertexcolor = color and edgecolor = color


These two options control the color for subgroups not specified by any of the following options, and the color with which the edges are colored, respectively. The default is white for the vertex color and gray for the edge color. The colors need to be specified in a way that is recognized by ColorTools[Color]. Maple also accepts the alternative spellings vertexcolour and edgecolour.


highlight = subgroup, or list of subgroups, or list of equations


The highlight option can be used to visually highlight one or a few subgroups by drawing the vertices that correspond to them in a particular color. The highlight option can be specified in multiple ways; in the following explanation, H1, H2, H3, H4 are subgroups of G and color1, color2 are colors recognized by ColorTools[Color]:


it can be a single subgroup H1,


it can be an equation H1 = color1,


it can be an equation [H1, H2, H3] = color1,


it can be a list of multiple entries of the previous three forms, such as [H1, [H2, H3] = color1, H4 = color2]


In all these cases, each subgroup Hi can be replaced by a subgroup series object consisting of subgroups of G (such as a LowerCentralSeries object).


Subgroups can be specified as group data structures for which the parent group is G, or as sets of generators.


Subgroups specified in the highlight option with an associated color will have the corresponding vertices highlighted in that color. Any subgroup that is specified in the highlight option, but has no associated color (such as H1 in the last example), will be highlighted in red. Subgroups not mentioned in the highlight option will be colored according to the vertexcolor option.


Colors of vertices can also be specified by the normal, center, or derived options described below. If multiple options specify the color for a single subgroup, then the priorities are as follows: highlight overrules center, center overrules derived, and derived overrules vertexcolor.


If you wish to supply an equation as the value of the option, then be aware that highlight = H1 = color1 will not be parsed correctly; the easiest way around that is to parenthesize the equation, as highlight = (H1 = color1).


center or center = color or center = true or center = false


Specifying this option is the same as including Center(G) = "LightBlue" or Center(G) = color in the highlight option. Specifying center = false colors the center in the same way as other subgroups. The default is center = true, if the group supports the Center operation.


normal or normal = color or normal = true or normal = false


Specifying this option is the same as including H = "LightGreen" or H = color in the highlight option, for every normal subgroup H of G. (Normal subgroups can be recognized visually as being the only ones in their conjugacy class.) Specifying normal = false colors the normal subgroups in the same way as other subgroups. The default is normal = true.


derived or derived = color or derived = true or derived = false


Specifying this option is the same as including H = "red" or H = color in the highlight option, for every group H in the derived series of G.  Specifying derived = false colors these subgroups in the same way as other subgroups. The default is derived = false.


indices or indices = true or indices = false


If the option indices = true or indices is specified, then every edge in the subgroup lattice graph, corresponding, say, to an inclusion of a subgroup H1 into a subgroup H2, is labeled with the index of H1 in H2. If indices = false is specified (the default) there are no labels on edges.


directed = true or false


If the option directed = true or directed is specified, then every edge in the subgroup lattice graph is directed from the smaller to the larger subgroup. If directed = false is specified (the default) then this is not the case.


labels = integers or labels = zuppos or labels = none or labels = ids


By default, each vertex is labeled with a single integer: the position of the corresponding subgroup in the list of subgroups obtained by calling convert(sgl, list) (see the SubgroupLattice help page for details). This behavior is explicitly specified by including the option labels = integers.


If you specify the option labels = none, the vertices will not be labeled. This option has no effect when combined with the output = graph option.


Alternatively, each vertex can be labeled with multiple integers. These integers correspond to the zuppos generating the corresponding subgroup H (the zuppos are ordered in a certain way and the integers correspond to the positions of the zuppos that generate H in the list of all zuppos). This allows for easy visual verification of the inclusion relations. This behavior is specified by including the option labels = zuppos. For more details about zuppos, see the SubgroupLattice help page.


The last alternative is that each vertex is labeled with its subgroup identity as determined by IdentifySmallGroup, with the size and number of the group separated by a slash (`/`). For example, the cyclic group with six elements is the second group of that order; it would get label 6/2. This is obtained by using the option labels = ids.


output = graph or output = plot


By default, this command returns a graphical representation of the subgroup lattice: a plot data structure for the corresponding graph. This behavior is explicitly specified by including the option output = plot.


Alternatively, if the option output = graph is specified, then this command returns the corresponding graph data structure itself, generated using the GraphTheory package. Its structure can then be examined or the display fine-tuned. In order to display the resulting graph, call the GraphTheory[DrawGraph] command.


title = expr


The given expression is typeset as the title above the subgroup lattice. This option is ignored if output = graph is specified.


titlefont = list


The title is printed with this font.  The font is specified as explained in plot/options.  This option is ignored if output = graph is specified.



The command DrawSubgroupLattice accepts a finite group G, calls the SubgroupLattice command in order to compute the subgroup lattice of G, and returns a plot of that subgroup lattice. Alternatively, you can pass it a subgroup lattice data structure you had computed before.


The subgroup lattice is displayed as a graph with a vertex for each subgroup of G and an edge between two subgroups H1 and H2 if H1 is a subgroup of H2 and there are no subgroups in between.  The vertices are drawn in horizontal layers corresponding to the layer structure described on the SubgroupLattice help page. Furthermore, in each layer, conjugacy classes of subgroups have their vertices spaced closer together than subgroups that are not conjugate.



Consider a group of order 48.


g1 < a permutation group on 48 letters with 5 generators >


We view its subgroup lattice.


Alternatively, we can highlight the subgroups given by each of the generators of the group. We see that some of the generators are redundant: they are contained in supergroups that are generated by other generators.


Let's take a look at the lower central series of g1. The two invocations of DrawSubgroupLattice are equivalent.


lcs < a permutation group on 48 letters with 5 generators > < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators > < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators > < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators > &comma; < a permutation group on 48 letters with 5 generators >




Try a different group, of order 24. We represent it as a Cayley table group.


g2 < a Cayley table group with 24 elements >



We can highlight the derived series members instead of the center and the other normal subgroups, and assign the subgroup lattice data structure to a variable l.

DrawSubgroupLatticeg2&comma;&apos;derived&apos;&comma;&apos;center&equals;false&apos;&comma;&apos;normal&equals;false&apos;&comma;&apos;assignlattice&equals;l&apos;&comma;&apos;title&apos;&equals;Derived subgroup&comma;&apos;titlefont&apos;&equals;HELVETICA&comma;10


subgroup lattice8 conjugacy classes10 subgroups


With the labels option, we can show the zuppos in each subgroup. With the indices option, we can show the index of each subgroup in each of its direct supergroups.


Alternatively, we can use the labels option to show the small group identity of each subgroup.


Finally, by requesting the output as a graph data structure, we can enable display in 3-D.


g3 < a permutation group on 60 letters with 4 generators >



graph3Graph 1: a directed graph with 20 vertices and 40 arc(s)





The GroupTheory[DrawSubgroupLattice] command was introduced in Maple 17.


For more information on Maple 17 changes, see Updates in Maple 17.

See Also