This section gives you an example on how to use the function
GraphicSubgroupLattice
(see GraphicSubgroupLattice for details), which
will display the Hasse diagram of the subgroup lattice of a given group.
Using the dihedral group of size 8 as example the following will show you
most features of the GraphicSubgroupLattice
program. This exercise is
best carried out in front of XGAP, trying the various commands yourself.
First you have to define a group in GAP, this example uses a dihedral group defined as polycyclic group.
gap> d8 := DihedralGroup(8); <pc group of size 8 with 3 generators> gap> SetName(d8,"d8");
Now you ask for a graphical display by
gap> s := GraphicSubgroupLattice(d8); <graphic subgroup lattice "GraphicSubgroupLattice of d8">
XGAP will open a window containing a new graphic sheet, a menu bar (menus are described below) above the graphic sheet and a title. On most systems the title will be either below the graphic sheet or above the menu bar. The dimension of the graphic sheet is fixed, changing the size of the window will not change the size of the graphic sheet, see GraphicSubgroupLattice, Poset Menu how to resize the graphic sheet. It is possible that the graphic sheet is larger (depending on the lattice it might be much larger) than the window. In this case the window will contain so called scrollbars which allow you to select the portion of the graphic sheet which will be displayed.
XGAP first shows only the whole group (which is already selected) and the trivial subgroup, connected by a line indicating inclusion.
ConjugacyClassesSubgroups
computes and returns the conjugacy classes of
subgroups, so summing up the sizes of the classes tells you how many
elements the lattice has.
gap> Sum( List( ConjugacyClassesSubgroups(d8), Size ) ); 10
10 is small enough to use AllSubgroups
without painting the screen
black. After you have clicked this menu entry in the Subgroups
menu you
see the complete Hasse diagram in the graphic sheet.
The following initial remarks can be made about the graphical representation of the subgroup lattice:
The initial placement of the vertices chosen by GraphicSubgroupLattice
might not be optimal or you might want to choose a different one in order
to exploit certain features of the diagram. It is therefore possible to
move the vertices around using the mouse.
The mouse together with the left mouse button can be used to move and select vertices. A selected vertex is represented by a thicker circle, colored red if your screen supports color. For example, in order to move vertex 4 use the mouse to place the pointer inside the circle around 4 and press the left mouse button. Keep the mouse button pressed and start moving the mouse. The vertex will now follow the pointer. Because of the height restrictions given by the size it is not possible to move 4 above 6 or below 1. It must always stay within its level. If you release the left mouse button vertex 4 will stay at its current position and the rest of the conjugacy class (in this example 5) will be moved to this new position.
In order to select vertex G place the pointer inside the diamond around G, press the left mouse button and release it immediately. Do not move the mouse while you hold down the left mouse button. Vertex G now has a slightly thicker boundary and is red if you have a color screen. There are two different ways to select more than one vertex, see A Partial Subgroup Lattice of the Symmetric Group on 6 Points or GraphicSubgroupLattice, Selecting Vertices.
On the top of the window, above the graphic sheet, you can see a list
of menu names: Sheet
, Poset
, and Subgroups
. In order to
open any of these pull down menus place the pointer inside the
button containing the menu name and press the left mouse button. Keep
the button pressed. A pull down menu will be shown and by moving the
pointer down you can choose a menu entry. By choosing an entry and
then releasing the mouse button the entry is selected, the
corresponding function is executed and the pull down menu is closed.
If you release the mouse button while the pointer is outside the pull
down menu the menu is closed without selecting any entry. Note that
this behaviour is different from that of some other graphical user
interfaces such as for example Windows.
Now select Change Labels
from the Poset
menu. If this entry
is not available you have failed to select vertex G. After
selecting Change Labels
a small dialog box is opened asking for a
label. Type in D8
and press the return key or click on OK
. The
label of vertex G will now be changed to ``D8''. Note that in the
X Window System you have to move the pointer on the text field if you
want to edit the label.
In order to find out which vertex represents the centre of D8,
first select vertex D8 and then the menu entry Centres
from the
Subgroups
menu. In case of a color screen, vertex D8 will be
selected and colored red, and vertex 2 will be colored green. The
color green indicates that vertex 2 is the result of a computation.
There will also be a message in the GAP window saying that vertex
2 represents the centre of the group belonging to vertex D8.
#I Centres (D8) --> (2)
Most of the menu entries in Subgroups
should be self-explanatory, for
details and the difference between Closure
and Closures
see
GraphicSubgroupLattice, Subgroups Menu.
If you have selected some vertices (in the example D8 is now
selected), and you want to investigate the subgroups corresponding to
these vertices further in GAP, the function SelectedGroups
will
return a list of these subgroups (note that you can also achieve
calling this function by selecting SelectedGroups to GAP
in the
Subgroups
menu):
labelgapxgap
gap> SelectedGroups(s); [ d8 ]
On the other hand, the functions supplied via the Subgroups
menu are by
far not all functions applicable to groups. In order to show results of a
computation in GAP in the diagram, you can use SelectGroups
. The
function SelectGroups
allows you to mark any set of subgroups of D8 in
the diagram.
For instance, you can compute the lower central series of this (nilpotent) group in GAP.
gap> l := LowerCentralSeries(d8); [ d8, Group([ f3 ]), Group([ <identity> of ... ]) ] gap> SelectGroups(s,l);
This lower central series corresponds to the vertices D8, 2 and
1 which will now be selected. If, as it is not the case in this
example, the subgroups are not yet depicted in the lattice, a warning
appears in the GAP command window. You have to use InsertVertex
to insert a new vertex into the lattice (note that you can also
achieve this by selecting InsertVertices from GAP
in the
Subgroups
menu, see section InsertVertex for the complete
description of this function or section xgapgap for an example).
To summarize the above: the function SelectedGroups
can be used to
transfer information from the diagram to GAP, the functions
SelectGroups
and InsertVertex
can be used to transfer information
from GAP to the diagram.
In order to finish this example, close the window by selecting close
graphic sheet
from the Sheet
menu. This will close the window
containing the Hasse diagram of D8.
In this example you have learned, how to display the Hasse diagram of the
subgroup lattice of a group using GraphicSubgroupLattice
, how to use the
mouse to move and select vertices, how to select a menu entry and how to
transfer information between the Hasse diagram and GAP using SelectGroups
and SelectedGroups
.
In order to learn more about the menus Sheet
and Poset
, which were only
mentioned very briefly, see GraphicSubgroupLattice, Sheet Menu, and
GraphicSubgroupLattice, Poset Menu.
xgap manual