GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1\Chapter{Subgroup Lattices - Examples}23{\XGAP} provides a graphical interface to the lattice or a partial lattice4of subgroups of groups. For finitely presented groups it gives you easy5access for example to the low index, prime quotient and Reidemeister-Schreier6algorithms in order to build a partial lattice interactively. For other7types of groups it provides easy access to many of the group functions8(for example, the normalizer, normal subgroups, and Sylow subgroups).910This chapter explains how to use this interface by way of examples.11Chapter "Subgroup Lattices - Systematic Description" gives12details about the various options and menus available. These two13chapters will not describe how to write your own programs using the14graphic extensions supplied by {\XGAP}, see chapters "Graphic Sheets -15Basic graphic operations" to "Graphic Graphs" for details.1617It is assumed that you have already started {\XGAP}. On most systems you18do this by typing1920\begintt21user@host:~> xgap22\endtt2324on the command line. Ask your system administrator if this does not25work. This command will create a new window, the so called {\GAP}26window, in which {\GAP} is awaiting your input. Depending on the window27system and window manager you use, placing a new window on your screen28might be done automatically or might require you to use the mouse to29choose a position for the window and pressing the left mouse button to30place the window.3132The small arrow or cross you see on your screen is called a pointer.33Although the device used to move this pointer can be anything, a mouse, a34track ball, a glide-pad, or even something as exotic as a rat, we will use35the term mouse to refer to this pointer device.3637In case that some computation takes longer than expected, for instance38the low index and the prime quotient can be quite time consuming, you39can always interrupt a computation by making the {\GAP} window active40and pressing <CTRL-C> or selecting `Interrupt' in the `Run' menu.41Again, making a window active is system and window manager dependent.42In most cases you either have to move the pointer inside the {\GAP}43window or you have to click on the title bar of the {\GAP} window.4445Note that for each of the following examples there is a small {\GAP}46script in the `examples' subdirectory of the {\XGAP} home directory47which contains the necessary commands. However we consider it better48for learning {\XGAP} in a first time session if you type the commands49by hand as suggested in the next few sections of this manual.505152%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%53\Section{The Subgroup Lattice of the Dihedral Group of Order 8}5455This section gives you an example on how to use the function56`GraphicSubgroupLattice' (see "GraphicSubgroupLattice" for details), which57will display the Hasse diagram of the subgroup lattice of a given group.5859Using the dihedral group of size $8$ as example the following will show you60most features of the `GraphicSubgroupLattice' program. This exercise is61best carried out in front of {\XGAP}, trying the various commands yourself.6263First you have to define a group in {\GAP}, this example uses a64dihedral group defined as polycyclic group.6566\begintt67gap> d8 := DihedralGroup(8);68<pc group of size 8 with 3 generators>69gap> SetName(d8,"d8");70\endtt7172Now you ask for a graphical display by7374\begintt75gap> s := GraphicSubgroupLattice(d8);76<graphic subgroup lattice "GraphicSubgroupLattice of d8">77\endtt7879{\XGAP} will open a window containing a new graphic sheet, a menu bar80(menus are described below) above the graphic sheet and a title. On most81systems the title will be either below the graphic sheet or above the menu82bar. The dimension of the graphic sheet is fixed, changing the size of the83window will *not* change the size of the graphic sheet, see84"GraphicSubgroupLattice, Poset Menu" how to resize the graphic sheet. It85is possible that the graphic sheet is larger (depending on the lattice it86might be much larger) than the window. In this case the window will87contain so called scrollbars which allow you to select the portion of the88graphic sheet which will be displayed.8990{\XGAP} first shows only the whole group (which is already selected) and91the trivial subgroup, connected by a line indicating inclusion.9293`ConjugacyClassesSubgroups' computes and returns the conjugacy classes of94subgroups, so summing up the sizes of the classes tells you how many95elements the lattice has.9697\begintt98gap> Sum( List( ConjugacyClassesSubgroups(d8), Size ) );9910100\endtt101102$10$ is small enough to use `AllSubgroups' without painting the screen103black. After you have clicked this menu entry in the `Subgroups' menu you104see the complete Hasse diagram in the graphic sheet.105106The following initial remarks can be made about the graphical107representation of the subgroup lattice:108109\beginlist110\item{--} The vertex representing the trivial subgroup is labeled $1$.111112\item{--} Vertices representing subgroups of the same size are drawn at the113same height. They are said to be ``on the same level''. In our example114the subgroups that belong to the vertices $2$, $4$, $5$, $8$ and $9$ all115have size 2, and the subgroups of $3$, $6$, and $7$ have size $4$. The116default behaviour is to place a vertex above another one if the size of117the subgroup represented by the first vertex is larger than the size of118the subgroup of the second, but see "GraphicSubgroupLattice" for details. At119the right edge of the graphic sheet each level is labeled with the index120of the subgroups contained. See "levelsintro" for details on the121labelling of levels.122123\item{--} Vertices belonging to the same conjugacy class are placed closely124together. In our example the subgroups of $4$ and $5$ form one conjugacy125class.126\endlist127128The initial placement of the vertices chosen by `GraphicSubgroupLattice'129might not be optimal or you might want to choose a different one in order130to exploit certain features of the diagram. It is therefore possible to131move the vertices around using the mouse.132133The mouse together with the left mouse button can be used to move and134select vertices. A selected vertex is represented by a thicker circle,135colored red if your screen supports color. For example, in order to *move*136vertex $4$ use the mouse to place the pointer inside the circle around $4$137and press the *left* mouse button. Keep the mouse button pressed and start138moving the mouse. The vertex will now follow the pointer. Because of the139height restrictions given by the size it is not possible to move $4$ above140$6$ or below $1$. It must always stay within its level. If you release the141left mouse button vertex $4$ will stay at its current position and the rest142of the conjugacy class (in this example $5$) will be moved to this new143position.144145In order to *select* vertex $G$ place the pointer inside the diamond146around $G$, press the *left* mouse button and release it immediately.147Do not move the mouse while you hold down the left mouse button.148Vertex $G$ now has a slightly thicker boundary and is red if you have149a color screen. There are two different ways to select more than one150vertex, see "A Partial Subgroup Lattice of the Symmetric Group on 6151Points" or "GraphicSubgroupLattice, Selecting Vertices".152153On the top of the window, above the graphic sheet, you can see a list154of menu names: `Sheet', `Poset', and `Subgroups'. In order to155open any of these *pull down menus* place the pointer inside the156button containing the menu name and press the left mouse button. Keep157the button pressed. A pull down menu will be shown and by moving the158pointer down you can choose a menu entry. By choosing an entry and159then releasing the mouse button the entry is selected, the160corresponding function is executed and the pull down menu is closed.161If you release the mouse button while the pointer is outside the pull162down menu the menu is closed without selecting any entry. Note that163this behaviour is different from that of some other graphical user164interfaces such as for example Windows.165166Now select `Change Labels' from the `Poset' menu. If this entry167is not available you have failed to select vertex $G$. After168selecting `Change Labels' a small dialog box is opened asking for a169label. Type in `D8' and press the <return> key or click on `OK'. The170label of vertex $G$ will now be changed to ``$D8$''. Note that in the171X Window System you have to move the pointer on the text field if you172want to edit the label.173174In order to find out which vertex represents the centre of $D_8$,175first select vertex $D8$ and then the menu entry `Centres' from the176`Subgroups' menu. In case of a color screen, vertex $D8$ will be177selected and colored red, and vertex $2$ will be colored green. The178color green indicates that vertex $2$ is the result of a computation.179There will also be a message in the {\GAP} window saying that vertex180$2$ represents the centre of the group belonging to vertex $D8$.181182\begintt183#I Centres (D8) --> (2)184\endtt185186Most of the menu entries in `Subgroups' should be self-explanatory, for187details and the difference between `Closure' and `Closures' see188"GraphicSubgroupLattice, Subgroups Menu".189190If you have selected some vertices (in the example $D8$ is now191selected), and you want to investigate the subgroups corresponding to192these vertices further in {\GAP}, the function `SelectedGroups' will193return a list of these subgroups (note that you can also achieve194calling this function by selecting `SelectedGroups to GAP' in the195`Subgroups' menu):196197\label{gapxgap}198\begintt199gap> SelectedGroups(s);200[ d8 ]201\endtt202203On the other hand, the functions supplied via the `Subgroups' menu are by204far not all functions applicable to groups. In order to show results of a205computation in {\GAP} in the diagram, you can use `SelectGroups'. The206function `SelectGroups' allows you to mark any set of subgroups of $D_8$ in207the diagram.208209For instance, you can compute the lower central series of this (nilpotent)210group in {\GAP}.211212\begintt213gap> l := LowerCentralSeries(d8);214[ d8, Group([ f3 ]), Group([ <identity> of ... ]) ]215gap> SelectGroups(s,l);216\endtt217218This lower central series corresponds to the vertices $D8$, $2$ and219$1$ which will now be selected. If, as it is not the case in this220example, the subgroups are not yet depicted in the lattice, a warning221appears in the {\GAP} command window. You have to use `InsertVertex'222to insert a new vertex into the lattice (note that you can also223achieve this by selecting `InsertVertices from GAP' in the224`Subgroups' menu, see section "InsertVertex" for the complete225description of this function or section "xgapgap" for an example).226227To summarize the above: the function `SelectedGroups' can be used to228transfer information from the diagram to {\GAP}, the functions229`SelectGroups' and `InsertVertex' can be used to transfer information230from {\GAP} to the diagram.231232In order to finish this example, close the window by selecting `close233graphic sheet' from the `Sheet' menu. This will close the window234containing the Hasse diagram of $D_8$.235236In this example you have learned, how to display the Hasse diagram of the237subgroup lattice of a group using `GraphicSubgroupLattice', how to use the238mouse to move and select vertices, how to select a menu entry and how to239transfer information between the Hasse diagram and {\GAP} using `SelectGroups'240and `SelectedGroups'.241242In order to learn more about the menus `Sheet' and `Poset', which were only243mentioned very briefly, see "GraphicSubgroupLattice, Sheet Menu", and244"GraphicSubgroupLattice, Poset Menu".245246% obsolete:247%This example also did not discuss248%two additional menus, namely the `Information' and `Sheet' menu. The first249%is discussed in "A Partial Subgroup Lattice of the Symmetric Group on 6250%Points" and "GraphicSubgroupLattice, Information Menu", the latter in251%"GraphicSubgroupLattice, Sheet Menu".252253%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%254\Section{A Partial Subgroup Lattice of the Symmetric Group on 6 Points}255256This section investigates the subgroup lattice of $S_6$.257258\begintt259gap> s6 := SymmetricGroup(6);260Sym( [ 1 .. 6 ] )261gap> SetName(s6,"S6");262gap> cc := ConjugacyClassesSubgroups(s6);;263gap> Sum(List(cc,Size));2641455265\endtt266267As there are $1455$ subgroups, displaying the whole lattice of subgroups268would not be helpful because there are simply too many. Therefore this269example builds only a partial subgroup lattice. We assume that you are270familiar with the general ideas, mouse actions and menus, which were271discussed in "The Subgroup Lattice of the Dihedral Group of Order 8".272273We again start to build a partial lattice, by using274`GraphicSubgroupLattice' (see "GraphicSubgroupLattice"). After you have275entered276277\begintt278gap> s := GraphicSubgroupLattice(s6);279<graphic subgroup lattice "GraphicSubgroupLattice of S6">280\endtt281282{\XGAP} will open a window containing a new graphic sheet with two283connected vertices labeled $1$ and $G$. Vertex $1$ represents the284trivial subgroup and vertex $G$ the group $S_6$. Vertex $G$ is already285selected, so it will be red if your screen supports color.286287{\XGAP} can automatically write a protocol of all the subsequent288actions you perform via mouse clicks. This is convenient because in289comparison to normal {\GAP} sessions you do not have the script of290typed commands. You can activate this feature by selecting `Start291Logging' from the `Subgroups' menu. {\XGAP} prompts you for a filename292via a file selector box. See "loggingfacility" for details about this293feature.294295In order to find all subgroups of size $60$, we cannot not use the296`Subgroups' menu directly, so go back into the {\GAP} window and extract297the conjugacy classes of `cc' whose representatives have size $60$.298299\begintt300gap> c60 := Filtered(cc,x->Size(Representative(x))=60);;301gap> s60 := List(c60,Representative);302[ Group([ (1,2)(3,4), (1,3,5) ]), Group([ (1,2)(3,4), (1,2,3)(4,5,6) ]) ]303\endtt304305\label{xgapgap}306We now use the function `InsertVertex' (see "InsertVertex") to add307these two subgroups to your partial lattice.308309\begintt310gap> for g in s60 do InsertVertex(s,g); od;311\endtt312313Note that we could have achieved this result with the entry314`InsertVertices from GAP' in the `Subgroups' menu, see315"InsertVertex". The Hasse diagram now contains four vertices. The316new vertices are *not* selected automatically. You can do this as317mentioned above by clicking with the *left* mouse button on them.318Selecting `Conjugate Subgroups' from the `Subgroups' menu adds the319complete conjugacy classes. Please do this first for vertex $2$ and320then for vertex $3$ such that the numbering of vertices in the321following description is correct!322323In order to find out what type of subgroups we are looking at, use324another kind of menu not discussed so far, namely the ``Information''325menu. Place the pointer inside vertex $3$, press the *right* mouse326button and release it immediately. This will pop up a new window,327containing some text describing vertex $3$ (as mentioned above,328depending on the window system and window manager, placing this window329on the screen might require some interaction with the mouse).330331\begintt332Size 60333Index 12334IsAbelian unknown335IsCentral unknown336IsCyclic unknown337IsNilpotent false338IsNormal false339IsPerfect true340IsSimple unknown341IsSolvable false342Isomorphism unknown343\endtt344345Note that {\GAP} does not yet automatically draw the conclusion that a346nonsolvable subgroup is also not abelian, cyclic or central. Place the347pointer on top of the entry ``Isomorphism'' and press the *left* mouse348button. After a while this entry is changed to349350\begintt351Isomorphism [ 60, 5 ]352\endtt353354telling you that the subgroup represented by vertex $3$ is isomorphic to355the alternating group on five symbols. The notation `[ 60, 5 ]' comes out356of the small groups library and is the only information about the357isomorphism type we can get from {\GAP4} up to now. Select <close> to close358the ``Information'' menu. Repeat this with vertex $2$, you will see that the359subgroup of vertex $2$ is also isomorphic to $A_5$, however these two $A_5$360inside $S_6$ are not conjugate in $S_6$. The ``Information'' menu is described361in detail in "GraphicSubgroupLattice, Information Menu".362363Now we want to compute the normalizers of the elements of the conjugacy364class containing the subgroup of vertex $3$. You could either select365vertex $3$ and then <Normalizers> and repeat this process for the vertices366$9$ to $13$, or you can first select the vertices $3$, $9$ to $13$ and then367select <Normalizers>. But how to select more than one vertex? If you368first select $3$ and then $9$, vertex $3$ will get deselected as soon as369$9$ gets selected. However, if you select vertex $3$, place the pointer370inside vertex $9$, hold down the <SHIFT> key on your keyboard and then371select vertex $9$ using the left mouse button, vertex $9$ will be selected372in addition to vertex $3$. Another method to select more than one vertex373is to use the rubber band to catch vertices inside a rectangle. Place the374pointer left and a bit higher than vertex $3$ *outside* any other vertex.375Press the *left* mouse button and hold it down. Now, using the mouse, move376the pointer right and slightly below vertex $13$. You see a rectangle, one377corner at your start position and the other following the pointer. If378vertices $3$ and $9$ to $13$ are all inside this rectangle, release the379mouse button. Now these vertices are selected. Select `Normalizers' from380the `Subgroups' menu to compute and display the normalizers.381382Now select vertex $3$ and $4$ and compute the intersection. The383intersection is of size $10$. Select this intersection and use384`SelectedGroups' to get a {\GAP} record describing the subgroup.385386\begintt387gap> l := SelectedGroups(s);388[ Group([ (2,3)(4,6), (1,2)(3,4) ]) ]389gap> u := l[1];390Group([ (2,3)(4,6), (1,2)(3,4) ])391\endtt392393In order to find out which subgroups of the complete lattice lie above394the subgroup `u' you can use `Intermediate Subgroups'. You select the395whole group in addition to `u' and choose `Intermediate Subgroups' in the396`Subgroups' menu. You get 6 groups, some of them are already in the397lattice, the others are added.398399There is another feature we have not seen yet. Close the current graphic400sheet and start again with a fresh one.401402\begintt403gap> Close(s);404gap> s := GraphicSubgroupLattice(s6);405<graphic subgroup lattice "GraphicSubgroupLattice of S6">406\endtt407408In order to compute a Sylow $2$ subgroup select `Sylow Subgroup' from the409`Subgroups' menu. A small dialog box will pop up asking for a prime,410type in $2$ and press <return> or click on `OK'. Now select this new411vertex $2$ representing the Sylow $2$ subgroup and compute its normal412subgroups. This is rather slow because the function checks for each new413vertex if the corresponding subgroup is conjugate to an old one of the414same size.415416417%obsolete?:418%There is however a limit on the index of the normalizer or419%subgroup up to which this test is performed.420%421%\begintt422%gap> s.limits.conjugates;423%100424%\endtt425%426%If `limit.conjugates' contains a positive number the index of the427%normalizer of the new subgroup is checked. If `limit.conjugates' contains428%a negative number, only the index of the subgroup itself is checked. If429%the index is less than the absolute value then the conjugacy test is430%carried out. Change this limit to $-10$.431%432%\begintt433%gap> s.limits.conjugates := -10;434%-10435%\endtt436%437%Select vertex $3$ and compute a random conjugate by selecting `Random438%Conjugate' from the `Subgroups' menu. Select this new vertex and compute439%its normal subgroups. You will see that now the vertices of the new440%subgroups appear faster on the graphic sheet, however, they have a441%different shape. They are represented by a square instead of a circle.442%A square is meant as a danger sign, because {\GAP} has not checked if443%subgroups associated with square vertices are conjugate to any of the444%other subgroups. Therefore these subgroups might be (and in this example445%will be) conjugate to an old subgroup.446447%FIXME: do we want this feature?448%In order to untangle the Hasse diagram you can move the new (selected)449%vertices en block. Hold down the <SHIFT> key and move any of the new450%vertices to the right. All selected vertices will automatically be moved451%as soon as you release the left mouse button.452%FIXME: This feature does not yet exist.453454This is now the end of our partial investigation of the (partial)455subgroup lattice of $S_6$, close the graphic sheet(s) using `close456graphic sheet' of the `Sheet' menu. If you started the logging facility457of {\XGAP} as described above you now have a file (probably called458`xgap.log' if you did not change the default) describing the actions459we performed.460461462%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%463\Section{A Partial Subgroup Lattice of the Cavicchioli Group}464465This section investigates the following finitely presented group $C_2$,466which was first investigated by Alberto Cavicchioli in \cite{Cav86}:467$$468\langle a, b \;;\; aba^{-2}ba=b, (b^{-1}a^3b^{-1}a^{-3})^2=a^{-1}\rangle.469$$470471In this example we will show a way to prove a finitely presented group472to be infinite, and to find some big nonabelian factor groups of it.473474The following {\GAP} commands define $C_2$.475476\begintt477gap> f := FreeGroup( "a", "b" ); a := f.1;; b := f.2;;478<free group on the generators [ a, b ]>479gap> c2 := f / [ a*b*a^-2*b*a/b, (b^-1*a^3*b^-1*a^-3)^2*a ];480<fp group on the generators [ a, b ]>481gap> SetName(c2,"c2");482\endtt483484We again assume that you are familiar with the general ideas, mouse actions485and menus, which were discussed in "The Subgroup Lattice of the Dihedral486Group of Order 8" and "A Partial Subgroup Lattice of the Symmetric Group on4876 Points".488489In order to build a partial lattice of a finitely presented group, you490again use the function `GraphicSubgroup\-Lattice'. But if the first argument491to `GraphicSubgroupLattice' is a finitely presented group the available menus492are different from the example in the previous section. After you have493entered494495\begintt496gap> s := GraphicSubgroupLattice(c2);497<graphic subgroup lattice "GraphicSubgroupLattice of c2">498\endtt499500{\XGAP} will open a window containing a new graphic sheet. Compared to the501interactive lattice of a permutation group as described in the previous502section, there are the following differences:503504-- There is only one vertex instead of two. This vertex labeled $G$ is the505whole group $C_2$. There is no vertex for the trivial subgroup (yet).506507-- If you pull down the `Subgroups' menu, you will see that this menu is508now very different. It gives you access to various algorithms for509finitely presented groups but most of the entries from the last two510examples are missing because most of the {\GAP} functions behind these511entries are not applicable to (infinite) finitely presented groups.512513This example will show you how to prove that $C_2$ is infinite. First514look at the abelian invariants in order to see what the commutator factor515group is. In order to compute the abelian invariants pop up the516``Information'' menu. This is done in exactly the same manner as in the517previous section. Place the pointer inside vertex $G$, press the *right*518mouse button and release it immediately. This ``Information'' menu is519described in detail in "GraphicSubgroupLattice for FpGroups, Information520Menu".521522\begintt523Index 1524IsNormal true525IsFpGroup unknown526Abelian Invariants unknown527Coset Table unknown528IsomorphismFpGroup unknown529Factor Group unknown530\endtt531532This tells you what {\XGAP} already knows about the group associated with533vertex $G$. In order to compute the abelian invariants click onto this534line. After a while this entry will change to535536\begintt537Abelian Invariants perfect538\endtt539540telling you that $C_2$ is perfect. So none of the `Subgroups' menu541entries `Abelian Prime Quotient', `All Overgroups', `Conjugacy Class',542`Cores', `Derived Subgroups', `Intersection', `Intersections',543`Normalizers' or `Prime Quotient' will compute any new subgroups.544545In order to avoid accidents the menu entries `Abelian Prime Quotient',546`All Overgroups', `Epimorphisms (GQuotients)', `Conjugacy Class',547`Low Index Subgroups', and `Prime Quotient' from the `Subgroups' menu are548only selectable if exactly one vertex is selected because the549functions behind these entries are in general quite time and space550consuming.551552Close the ``Information'' window and select `Low Index Subgroups' from the553`Subgroups' menu. A small dialog box will pop up asking for a limit on554the index. Type in $12$ and press <return> or click on `OK'. In general555it is hard to say what kind of index limit will still work, for some556groups even $5$ might be too much while for others $20$ works fine, see557also "ref:LowIndexSubgroupsFpGroup".558559{\GAP} computes $10$ subgroups of index $11$ and $8$ subgroups of index560$12$. If you now start to check the abelian invariants of the index $12$561subgroups you will find out that all subgroups represented by vertices562$3$ to $10$ have a finite commutator factor group except the subgroup563belonging to vertex $4$ which has an infinite abelian quotient.564Therefore the group $C_2$ itself is infinite.565566Now we want to investigate $C_2$ a little further using {\GAP}. Select567vertices $3$, $4$, and $5$ and switch to the {\GAP} window. Use568`SelectedGroups' to get the subgroups associated with these vertices.569570\begintt571gap> u := SelectedGroups( s );572[ Group([ a, b*a^2*b^-2, b*a*b^2*a^-1*b^-1*a^-1*b^-1, b^4*a^-2*b^-2,573b^2*a^3*b^-1*a^-1*b^-2 ]),574Group([ a, b^2*a*b^-1*a^-1*b^-1, b^3*a^-1*b^-1, b*a*b*a^3*b^-1 ]),575Group([ a, b^2*a*b^-1*a^-1*b^-1, b*a^3*b^-2, b^4*a^-1*b^-3,576b*a*b^3*a^-1*b^-1 ]) ]577\endtt578579`FactorCosetAction' computes for each of these subgroups $u_i$ the580operation of $C_2$ on its cosets. It returns the result as a homomorphism581of $C_2$ onto a permutation group. The operation on $u_i$ is therefore a582permutation representation of the factor group $$C_2 / Core(u_i).$$ Using583`DisplayCompositionSeries' we can identify these factor groups.584585\begintt586gap> p := List( u, x -> FactorCosetAction( c2, x ) );;587gap> l := List( p, Image );;588gap> for x in l do DisplayCompositionSeries(x); Print("\n"); od;589G (2 gens, size 95040)590| M(12)5911 (0 gens, size 1)592593G (2 gens, size 660)594| A(1,11) = L(2,11) ~ B(1,11) = O(3,11) ~ C(1,11) = S(2,11) ~ 2A(1,11) = U(2,11)5951 (0 gens, size 1)596597G (2 gens, size 239500800)598| A(12)5991 (0 gens, size 1)600\endtt601602(This display can look a little different according to the {\GAP} version you603use.)604605So $C_2$ contains the Mathieu group $M_{12}$, the alternating group on606$12$ symbols and $PSL(2,11)$ as factor groups. Therefore it would607have been possible to find vertex $4$ using608`Epimorphisms (GQuotients)' instead of `Low Index Subgroups'.609Close the graphic610sheet by selecting the menu entry `close graphic sheet' from the `Sheet'611menu and start with a fresh one.612613\begintt614gap> s := GraphicSubgroupLattice(c2);615<graphic subgroup lattice "GraphicSubgroupLattice of c2">616\endtt617618Select `Epimorphisms (GQuotients)' from the `Subgroups' menu. This619pops up a menu similar to the ``Information'' menu (see620"GraphicSubgroupLattice for FpGroups, Subgroups Menu").621622\begintt623Sym(n)624Alt(n)625PSL(d,q)626Library627User Defined628\endtt629630Select <PSL(d,q)>, which pops up a dialog box asking for a dimension.631Enter `2' and click on <OK>. Then a second dialog box pops up asking632for a field size. Enter `11' and click on <OK>. After a short time633of computation the display in the `Epimorphisms (GQuotients)' menu634changes and shows635636\begintt637PSL(2,11) 1 found638\endtt639640telling you, that {\GAP} has found $1$ epimorphism (up to inner641automorphisms of $PSL(2,11)$) from $C_2$ onto $PSL(2,11)$. Click on642<display point stabilizer> to create a new vertex representing a subgroup643$u$ such that the factor group of $C_2 / Core(u)$ is isomorphic to644$PSL(2,11)$. You could have clicked on <display> to create a new vertex645representing the kernel of the epimorphism.646647This is now the end of our partial investigation of the (partial)648subgroup lattice of $C_2$, you have seen that $C_2$ is infinite and649contains $M_{12}$, $Alt(12)$, and $PSL(2,11)$ as factor groups. Close650the graphic sheet by selecting `close graphic sheet' from the `Sheet'651menu.652653654%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%655\Section{A Partial Subgroup Lattice of the Trefoil Knot Group}656657This section investigates the following finitely presented group, the658trefoil knot group $K_3$.659$$660\langle a, b \;;\; aba = bab \rangle661$$662663This examples shows some limitations of the methods available, in664particular if infinite factors occur.665666\begintt667gap> f := FreeGroup( "a", "b" );668<free group on the generators [ a, b ]>669gap> k3 := f / [ f.1*f.2*f.1 / (f.2*f.1*f.2) ];670<fp group on the generators [ a, b ]>671gap> s := GraphicSubgroupLattice(k3);672<graphic subgroup lattice "GraphicSubgroupLattice">673\endtt674675If you compute the Abelian invariants of $K_3$ you will see that the676commutator factor group is isomorphic to the infinite cyclic group.677If you try to compute the derived subgroups it works! Just click on678`Derived Subgroups' in the `Subgroups' menu. A vertex appears in a679level marked with `[ infinity, 1 ]'. However, there are not too many680things you can do with such infinite index subgroups up to now, as we681will illustrate below:682683First produce some more subgroups by `Low Index Subgroups' (for684example with index limit 5). If you now try to compare one of the new685subgroups with the derived subgroup, this is possible. If you however686try to calculate the intersection of one of the finite-index subgroups687with the derived subgroups, {\GAP} will run into an error:688689\begintt690Error the coset enumeration has defined more than 256000 cosets:691type 'return;' if you want to continue with a new limit of 512000 cosets,692type 'quit;' if you want to quit the coset enumeration,693type 'maxlimit := 0; return;' in order to continue without a limit,694... (a few lines follow)695\endtt696697This can happen if the coset enumeration algorithm tries to enumerate698the cosets of a subgroup with infinite index. This situation can also699occur with other operations.700701You can leave this break loop by entering the command `quit;' or by702clicking `Leave Break Loop' in the `Run' menu of the main {\XGAP}703window.704705Earlier you have computed the subgroups of index at most $5$. There706is one normal subgroup of index $2$ belonging to vertex $6$ and one of707index $4$ belonging to vertex $8$. There is *no* line between those708two vertices. Select both and click on `Compare Subgroups' in the709`Subgroups' menu. A line appears and the line between vertices $8$ and710$G$ vanishes. The reason for this is, that the711`LowIndexSubgroupsFpGroup' call did not deliver the complete inclusion712info. This can always happen for finitely presented groups in {\XGAP}.713In this case you have to compare the subgroups manually by714`Compare Subgroups'. Note that this can mean large computations, especially if715the indices are huge.716717Now select vertex $10$ and choose `Cores' from the `Subgroups' menu.718You will get a new vertex $12$ for an index $24$ subgroup. Select the719vertices $12$ and $G$ and choose `Intermediate Subgroups' from the720`Subgroups' menu. You will get lots of new vertices. Note that some721of them are duplicates of those which were already in the lattice.722This is because comparison of subgroups can be quite expensive and is723therefore *not* performed automatically in the case of finitely724presented groups.725726Select all vertices with a rubber band (click into the top left corner727of the sheet, hold down the mouse and move the pointer to the lower728right corner, then release the mouse button), and choose729`Compare Subgroups' from the `Subgroups' menu. A few vertices will disappear730and you get some messages in the {\GAP} window about merging of731vertices.732733The display is also not fully correct with respect to conjugacy734classes. `IntermediateSubgroups' does not return the complete735information about conjugacy of subgroups. Because also conjugacy tests736can be very expensive, they are also *not* performed automatically for737finitely presented groups. Select `Test Conjugacy' from the738`Subgroups' menu to trigger this test manually (note that all739vertices are still selected!). The vertices belonging to conjugate740subgroups are arranged together and if you move those containing the741normal subgroup of index $24$ above this one you recognize the742subgroup lattice of the symmetric group on $4$ points above that743normal subgroup.744745This is now the end of our partial investigation of the (partial)746subgroup lattice of $K_3$, close the graphic sheet by selecting `close747graphic sheet' from the `Sheet' menu.748749750%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%751\Section{A Partial Subgroup Lattice of a Finitely Presented Group}752753This section describes the investigation of the following finitely presented754group:755$$ G := \langle a, b \; ; \; a^6 = 1 \rangle $$756We will show especially how to deal with subgroups which have a very large757index like those occuring in the prime quotient algorithm.758759Define the group and open the subgroup lattice window:760761\begintt762gap> f := FreeGroup(2);763<free group on the generators [ f1, f2 ]>764gap> g := f/[f.1^6];765<fp group on the generators [ f1, f2 ]>766gap> s := GraphicSubgroupLattice(g);767<graphic subgroup lattice "GraphicSubgroupLattice">768\endtt769770First compute prime quotients by `Prime Quotient' in the `Subgroups'771menu. You are asked for a prime and a class. Enter $2$ and $7$772respectively. You get lots of output in the {\GAP} command window and773seven new vertices. Some of the corresponding subgroups have huge774indices. Note that these groups are only represented as kernels of775epimorphisms within {\GAP}. So explicit calculation of a coset table776or a presentation could take very long or be absolutely impossible!777778Now compute epimorphisms onto the symmetric group on $3$ points by779`Epimorphisms (GQuotients)' in the `Subgroups' menu, but use a polycyclic780presentation as follows (the reason for this will be explained below):781782\begintt783gap> IdGroup(SymmetricGroup(3));784[ 6, 1 ]785gap> s3 := SmallGroup(6,1);786<pc group with 2 generators>787gap> IMAGE_GROUP := s3;;788\endtt789790This first determines the identification number of the symmetric group791on $3$ points within the small groups library, and then fetches this792group as a polycyclic group. For groups of size less than $1000$ this793is often a good way to get a polycyclic presentation. Note that794`SymmetricGroup(3)' leads to a permutation group. The last statement795stores the group in a variable which can be used by {\XGAP}.796797Select vertex $G$, then click on `Epimorphisms (GQuotient)' in the798`Subgroups' menu and select `User defined' in the window that pops up.799This will always use the group stored in the global variable800`IMAGE_GROUP'. {\GAP} finds three epimorphisms. Display the three801kernels by selecting <display> in the epimorphisms window.802803Note that the new vertex $9$ will be drawn on the line between804vertices $2$ and $3$ because there is not yet a vertex in the level805corresponding to index 6. You can move it aside by dragging it with806the mouse to some better position within its level.807808Now select vertices $8$ and $11$ and calculate the intersection of the809two subgroups of indices $137438953472$ and $6$ respectively. {\GAP}810can calculate this intersection by calculating the subdirect product811of the image groups of the epimorphisms (the index of the subgroup812belonging to vertex $12$ in $G$ is $412316860416$ which is three times813of the index of the subgroup belonging to vertex $11$). Note that this814subdirect product can only be calculated because the two image groups815are polycyclic groups. This is the reason why we needed $S_3$ as816polycyclic group earlier.817818This is now the end of our partial investigation of the (partial)819subgroup lattice of $G$, close the graphic sheet by selecting `close820graphic sheet' from the `Sheet' menu.821822823%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%824\Section{A Partial Subgroup Lattice of a Space Group}825826This section describes an investigation of an (infinite) space group827provided by the catalogue CRYSTCAT of crystallographic groups and828using the package CRYST. Here you will see that subgroups of829finite index and of finite size can occur at the same time in a830graphic subgroup lattice of an infinite group. Note that you have to831install these packages to try this example.832833Load the packages, define the group and open the subgroup834lattice window:835836\begintt837gap> LoadPackage("crystcat");;838gap> LoadPackage("cryst");;839gap> g := SpaceGroupBBNWZ(4,6,3,1,2);840SpaceGroupOnRightBBNWZ( 4, 6, 3, 1, 2 )841gap> s := GraphicSubgroupLattice(g);842<graphic subgroup lattice "GraphicSubgroupLattice of SpaceGroupOnRightBBNWZ( 4, \8436, 3, 1, 2 )">844\endtt845846This fetches the space group of dimension $4$, associated crystal847system number $6$, $\Q$-class 3, $\Z$-class $1$, and space group type848$2$ (see the CRYSTCAT documentation for an explanation of this).849850Now we calculate some maximal subgroups with finite index and choose three of851them:852853\begintt854gap> m := MaximalSubgroupClassReps(g,rec(latticeequal := true));;855gap> mm := m{[1..3]};856[ <matrix group with 7 generators>, <matrix group with 7 generators>,857<matrix group with 7 generators> ]858\endtt859860Again refer to the CRYST package documentation for an861explanation of these commands. Insert this list of three subgroups862into the lattice by selecting `InsertSubgroups from GAP' from the863`Subgroups' menu.864865Next calculate subgroups of infinite index but with finite size:866867\begintt868gap> w := WyckoffPositions(g);;869gap> ww := w{[1..3]};870[ < Wyckoff position, point group 11, translation := [ 0, 1/2, 0, 0 ],871basis := [ ] >872, < Wyckoff position, point group 11, translation := [ 0, 1/2, 0, 1/2 ],873basis := [ ] >874, < Wyckoff position, point group 11, translation := [ 0, 1/2, 1/2, 0 ],875basis := [ ] >876]877gap> www := List(ww,WyckoffStabilizer);878[ <matrix group with 3 generators>, <matrix group with 3 generators>,879<matrix group with 3 generators> ]880\endtt881882Insert these subgroups into the lattice by selecting883`InsertSubgroups from GAP' from the `Subgroups' menu. They will be884inserted in the level for groups of size 8.885886Now you can compute the intersection of a subgroup with finite index887and a subgroup with finite size, select for example vertex $2$ and vertex888$5$ and choose `Intersection' from the `Subgroups' menu. You get a new889vertex representing a subgroup of size $4$.890891If you now calculate the centralizers of the fifteen latticeequal maximal892subgroups from above, you get among them four non-trivial cyclic subgroups:893894\begintt895gap> c := List(m,x->Centralizer(g,x));896[ <matrix group with 1 generators>, Group([ ]), Group([ ]), Group([ ]),897<matrix group with 1 generators>, Group([ ]), Group([ ]),898<matrix group with 1 generators>, Group([ ]),899<matrix group with 1 generators>, Group([ ]), Group([ ]), Group([ ]),900Group([ ]), Group([ ]) ]901\endtt902903Insert these into the graphic sheet by selecting `Insert Vertices from GAP'904from the `Subgroups' menu. You905will get four different new vertices representing groups with infinite906index *and* infinite size. Each such vertex is placed into a level on907its own, which is marked by `[ H1, <n>]' where <n> is replaced908with subsequent natural numbers (see section "levelsintro" for details909about levels). ``H1'' means Hirsch length 1, that is, each subnormal series910of the group contains one and only one infinite cycle. In fact, since911these are subgroups of space groups, it indicates that the translation912subgroup is of dimension 1.913914(Note that by calculating the point groups of these centralizers you can915in fact see, that the infinite cyclic groups consist of translations only.)916917Take two of these centralizers and calculate the closure by selecting918`Closure' from the `Subgroups' menu. You will get a new subgroup919of Hirsch length 2, which is also placed on a level of its own. Next920select three of them, and calculate the closure. What do you observe?921Also, select all four of them and calculate the closure. This time922you get a subgroup of index 16, hence its level is marked by this finite923index rather than a Hirsch number (which would be 4 here). Note that924the finite index is used rather than the Hirsch length for this placement.925926Finally, check, whether the centralizers are normal in the whole space927group by clicking on the vertices with the right mouse button and928choosing `IsNormal' in the ``Information'' window, which springs up.929Now form the closures of each of them with each of the size 8 point930stabilizers. You will get some other subgroups of Hirsch length 1.931Both the centralizers and the point stabilizers are abelian. Is this also932true for the closures?933934This is now the end of our partial investigation of the (partial)935subgroup lattice of $G$, close the graphic sheet by selecting `close936graphic sheet' from the `Sheet' menu.937938939%%% Local Variables:940%%% mode: latex941%%% TeX-master: "manual"942%%% End:943944945