Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
Download

GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it

610987 views
1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
\Chapter{Subgroup Lattices - Examples}
3
4
{\XGAP} provides a graphical interface to the lattice or a partial lattice
5
of subgroups of groups. For finitely presented groups it gives you easy
6
access for example to the low index, prime quotient and Reidemeister-Schreier
7
algorithms in order to build a partial lattice interactively. For other
8
types of groups it provides easy access to many of the group functions
9
(for example, the normalizer, normal subgroups, and Sylow subgroups).
10
11
This chapter explains how to use this interface by way of examples.
12
Chapter "Subgroup Lattices - Systematic Description" gives
13
details about the various options and menus available. These two
14
chapters will not describe how to write your own programs using the
15
graphic extensions supplied by {\XGAP}, see chapters "Graphic Sheets -
16
Basic graphic operations" to "Graphic Graphs" for details.
17
18
It is assumed that you have already started {\XGAP}. On most systems you
19
do this by typing
20
21
\begintt
22
user@host:~> xgap
23
\endtt
24
25
on the command line. Ask your system administrator if this does not
26
work. This command will create a new window, the so called {\GAP}
27
window, in which {\GAP} is awaiting your input. Depending on the window
28
system and window manager you use, placing a new window on your screen
29
might be done automatically or might require you to use the mouse to
30
choose a position for the window and pressing the left mouse button to
31
place the window.
32
33
The small arrow or cross you see on your screen is called a pointer.
34
Although the device used to move this pointer can be anything, a mouse, a
35
track ball, a glide-pad, or even something as exotic as a rat, we will use
36
the term mouse to refer to this pointer device.
37
38
In case that some computation takes longer than expected, for instance
39
the low index and the prime quotient can be quite time consuming, you
40
can always interrupt a computation by making the {\GAP} window active
41
and pressing <CTRL-C> or selecting `Interrupt' in the `Run' menu.
42
Again, making a window active is system and window manager dependent.
43
In most cases you either have to move the pointer inside the {\GAP}
44
window or you have to click on the title bar of the {\GAP} window.
45
46
Note that for each of the following examples there is a small {\GAP}
47
script in the `examples' subdirectory of the {\XGAP} home directory
48
which contains the necessary commands. However we consider it better
49
for learning {\XGAP} in a first time session if you type the commands
50
by hand as suggested in the next few sections of this manual.
51
52
53
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
54
\Section{The Subgroup Lattice of the Dihedral Group of Order 8}
55
56
This section gives you an example on how to use the function
57
`GraphicSubgroupLattice' (see "GraphicSubgroupLattice" for details), which
58
will display the Hasse diagram of the subgroup lattice of a given group.
59
60
Using the dihedral group of size $8$ as example the following will show you
61
most features of the `GraphicSubgroupLattice' program. This exercise is
62
best carried out in front of {\XGAP}, trying the various commands yourself.
63
64
First you have to define a group in {\GAP}, this example uses a
65
dihedral group defined as polycyclic group.
66
67
\begintt
68
gap> d8 := DihedralGroup(8);
69
<pc group of size 8 with 3 generators>
70
gap> SetName(d8,"d8");
71
\endtt
72
73
Now you ask for a graphical display by
74
75
\begintt
76
gap> s := GraphicSubgroupLattice(d8);
77
<graphic subgroup lattice "GraphicSubgroupLattice of d8">
78
\endtt
79
80
{\XGAP} will open a window containing a new graphic sheet, a menu bar
81
(menus are described below) above the graphic sheet and a title. On most
82
systems the title will be either below the graphic sheet or above the menu
83
bar. The dimension of the graphic sheet is fixed, changing the size of the
84
window will *not* change the size of the graphic sheet, see
85
"GraphicSubgroupLattice, Poset Menu" how to resize the graphic sheet. It
86
is possible that the graphic sheet is larger (depending on the lattice it
87
might be much larger) than the window. In this case the window will
88
contain so called scrollbars which allow you to select the portion of the
89
graphic sheet which will be displayed.
90
91
{\XGAP} first shows only the whole group (which is already selected) and
92
the trivial subgroup, connected by a line indicating inclusion.
93
94
`ConjugacyClassesSubgroups' computes and returns the conjugacy classes of
95
subgroups, so summing up the sizes of the classes tells you how many
96
elements the lattice has.
97
98
\begintt
99
gap> Sum( List( ConjugacyClassesSubgroups(d8), Size ) );
100
10
101
\endtt
102
103
$10$ is small enough to use `AllSubgroups' without painting the screen
104
black. After you have clicked this menu entry in the `Subgroups' menu you
105
see the complete Hasse diagram in the graphic sheet.
106
107
The following initial remarks can be made about the graphical
108
representation of the subgroup lattice:
109
110
\beginlist
111
\item{--} The vertex representing the trivial subgroup is labeled $1$.
112
113
\item{--} Vertices representing subgroups of the same size are drawn at the
114
same height. They are said to be ``on the same level''. In our example
115
the subgroups that belong to the vertices $2$, $4$, $5$, $8$ and $9$ all
116
have size 2, and the subgroups of $3$, $6$, and $7$ have size $4$. The
117
default behaviour is to place a vertex above another one if the size of
118
the subgroup represented by the first vertex is larger than the size of
119
the subgroup of the second, but see "GraphicSubgroupLattice" for details. At
120
the right edge of the graphic sheet each level is labeled with the index
121
of the subgroups contained. See "levelsintro" for details on the
122
labelling of levels.
123
124
\item{--} Vertices belonging to the same conjugacy class are placed closely
125
together. In our example the subgroups of $4$ and $5$ form one conjugacy
126
class.
127
\endlist
128
129
The initial placement of the vertices chosen by `GraphicSubgroupLattice'
130
might not be optimal or you might want to choose a different one in order
131
to exploit certain features of the diagram. It is therefore possible to
132
move the vertices around using the mouse.
133
134
The mouse together with the left mouse button can be used to move and
135
select vertices. A selected vertex is represented by a thicker circle,
136
colored red if your screen supports color. For example, in order to *move*
137
vertex $4$ use the mouse to place the pointer inside the circle around $4$
138
and press the *left* mouse button. Keep the mouse button pressed and start
139
moving the mouse. The vertex will now follow the pointer. Because of the
140
height restrictions given by the size it is not possible to move $4$ above
141
$6$ or below $1$. It must always stay within its level. If you release the
142
left mouse button vertex $4$ will stay at its current position and the rest
143
of the conjugacy class (in this example $5$) will be moved to this new
144
position.
145
146
In order to *select* vertex $G$ place the pointer inside the diamond
147
around $G$, press the *left* mouse button and release it immediately.
148
Do not move the mouse while you hold down the left mouse button.
149
Vertex $G$ now has a slightly thicker boundary and is red if you have
150
a color screen. There are two different ways to select more than one
151
vertex, see "A Partial Subgroup Lattice of the Symmetric Group on 6
152
Points" or "GraphicSubgroupLattice, Selecting Vertices".
153
154
On the top of the window, above the graphic sheet, you can see a list
155
of menu names: `Sheet', `Poset', and `Subgroups'. In order to
156
open any of these *pull down menus* place the pointer inside the
157
button containing the menu name and press the left mouse button. Keep
158
the button pressed. A pull down menu will be shown and by moving the
159
pointer down you can choose a menu entry. By choosing an entry and
160
then releasing the mouse button the entry is selected, the
161
corresponding function is executed and the pull down menu is closed.
162
If you release the mouse button while the pointer is outside the pull
163
down menu the menu is closed without selecting any entry. Note that
164
this behaviour is different from that of some other graphical user
165
interfaces such as for example Windows.
166
167
Now select `Change Labels' from the `Poset' menu. If this entry
168
is not available you have failed to select vertex $G$. After
169
selecting `Change Labels' a small dialog box is opened asking for a
170
label. Type in `D8' and press the <return> key or click on `OK'. The
171
label of vertex $G$ will now be changed to ``$D8$''. Note that in the
172
X Window System you have to move the pointer on the text field if you
173
want to edit the label.
174
175
In order to find out which vertex represents the centre of $D_8$,
176
first select vertex $D8$ and then the menu entry `Centres' from the
177
`Subgroups' menu. In case of a color screen, vertex $D8$ will be
178
selected and colored red, and vertex $2$ will be colored green. The
179
color green indicates that vertex $2$ is the result of a computation.
180
There will also be a message in the {\GAP} window saying that vertex
181
$2$ represents the centre of the group belonging to vertex $D8$.
182
183
\begintt
184
#I Centres (D8) --> (2)
185
\endtt
186
187
Most of the menu entries in `Subgroups' should be self-explanatory, for
188
details and the difference between `Closure' and `Closures' see
189
"GraphicSubgroupLattice, Subgroups Menu".
190
191
If you have selected some vertices (in the example $D8$ is now
192
selected), and you want to investigate the subgroups corresponding to
193
these vertices further in {\GAP}, the function `SelectedGroups' will
194
return a list of these subgroups (note that you can also achieve
195
calling this function by selecting `SelectedGroups to GAP' in the
196
`Subgroups' menu):
197
198
\label{gapxgap}
199
\begintt
200
gap> SelectedGroups(s);
201
[ d8 ]
202
\endtt
203
204
On the other hand, the functions supplied via the `Subgroups' menu are by
205
far not all functions applicable to groups. In order to show results of a
206
computation in {\GAP} in the diagram, you can use `SelectGroups'. The
207
function `SelectGroups' allows you to mark any set of subgroups of $D_8$ in
208
the diagram.
209
210
For instance, you can compute the lower central series of this (nilpotent)
211
group in {\GAP}.
212
213
\begintt
214
gap> l := LowerCentralSeries(d8);
215
[ d8, Group([ f3 ]), Group([ <identity> of ... ]) ]
216
gap> SelectGroups(s,l);
217
\endtt
218
219
This lower central series corresponds to the vertices $D8$, $2$ and
220
$1$ which will now be selected. If, as it is not the case in this
221
example, the subgroups are not yet depicted in the lattice, a warning
222
appears in the {\GAP} command window. You have to use `InsertVertex'
223
to insert a new vertex into the lattice (note that you can also
224
achieve this by selecting `InsertVertices from GAP' in the
225
`Subgroups' menu, see section "InsertVertex" for the complete
226
description of this function or section "xgapgap" for an example).
227
228
To summarize the above: the function `SelectedGroups' can be used to
229
transfer information from the diagram to {\GAP}, the functions
230
`SelectGroups' and `InsertVertex' can be used to transfer information
231
from {\GAP} to the diagram.
232
233
In order to finish this example, close the window by selecting `close
234
graphic sheet' from the `Sheet' menu. This will close the window
235
containing the Hasse diagram of $D_8$.
236
237
In this example you have learned, how to display the Hasse diagram of the
238
subgroup lattice of a group using `GraphicSubgroupLattice', how to use the
239
mouse to move and select vertices, how to select a menu entry and how to
240
transfer information between the Hasse diagram and {\GAP} using `SelectGroups'
241
and `SelectedGroups'.
242
243
In order to learn more about the menus `Sheet' and `Poset', which were only
244
mentioned very briefly, see "GraphicSubgroupLattice, Sheet Menu", and
245
"GraphicSubgroupLattice, Poset Menu".
246
247
% obsolete:
248
%This example also did not discuss
249
%two additional menus, namely the `Information' and `Sheet' menu. The first
250
%is discussed in "A Partial Subgroup Lattice of the Symmetric Group on 6
251
%Points" and "GraphicSubgroupLattice, Information Menu", the latter in
252
%"GraphicSubgroupLattice, Sheet Menu".
253
254
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
255
\Section{A Partial Subgroup Lattice of the Symmetric Group on 6 Points}
256
257
This section investigates the subgroup lattice of $S_6$.
258
259
\begintt
260
gap> s6 := SymmetricGroup(6);
261
Sym( [ 1 .. 6 ] )
262
gap> SetName(s6,"S6");
263
gap> cc := ConjugacyClassesSubgroups(s6);;
264
gap> Sum(List(cc,Size));
265
1455
266
\endtt
267
268
As there are $1455$ subgroups, displaying the whole lattice of subgroups
269
would not be helpful because there are simply too many. Therefore this
270
example builds only a partial subgroup lattice. We assume that you are
271
familiar with the general ideas, mouse actions and menus, which were
272
discussed in "The Subgroup Lattice of the Dihedral Group of Order 8".
273
274
We again start to build a partial lattice, by using
275
`GraphicSubgroupLattice' (see "GraphicSubgroupLattice"). After you have
276
entered
277
278
\begintt
279
gap> s := GraphicSubgroupLattice(s6);
280
<graphic subgroup lattice "GraphicSubgroupLattice of S6">
281
\endtt
282
283
{\XGAP} will open a window containing a new graphic sheet with two
284
connected vertices labeled $1$ and $G$. Vertex $1$ represents the
285
trivial subgroup and vertex $G$ the group $S_6$. Vertex $G$ is already
286
selected, so it will be red if your screen supports color.
287
288
{\XGAP} can automatically write a protocol of all the subsequent
289
actions you perform via mouse clicks. This is convenient because in
290
comparison to normal {\GAP} sessions you do not have the script of
291
typed commands. You can activate this feature by selecting `Start
292
Logging' from the `Subgroups' menu. {\XGAP} prompts you for a filename
293
via a file selector box. See "loggingfacility" for details about this
294
feature.
295
296
In order to find all subgroups of size $60$, we cannot not use the
297
`Subgroups' menu directly, so go back into the {\GAP} window and extract
298
the conjugacy classes of `cc' whose representatives have size $60$.
299
300
\begintt
301
gap> c60 := Filtered(cc,x->Size(Representative(x))=60);;
302
gap> s60 := List(c60,Representative);
303
[ Group([ (1,2)(3,4), (1,3,5) ]), Group([ (1,2)(3,4), (1,2,3)(4,5,6) ]) ]
304
\endtt
305
306
\label{xgapgap}
307
We now use the function `InsertVertex' (see "InsertVertex") to add
308
these two subgroups to your partial lattice.
309
310
\begintt
311
gap> for g in s60 do InsertVertex(s,g); od;
312
\endtt
313
314
Note that we could have achieved this result with the entry
315
`InsertVertices from GAP' in the `Subgroups' menu, see
316
"InsertVertex". The Hasse diagram now contains four vertices. The
317
new vertices are *not* selected automatically. You can do this as
318
mentioned above by clicking with the *left* mouse button on them.
319
Selecting `Conjugate Subgroups' from the `Subgroups' menu adds the
320
complete conjugacy classes. Please do this first for vertex $2$ and
321
then for vertex $3$ such that the numbering of vertices in the
322
following description is correct!
323
324
In order to find out what type of subgroups we are looking at, use
325
another kind of menu not discussed so far, namely the ``Information''
326
menu. Place the pointer inside vertex $3$, press the *right* mouse
327
button and release it immediately. This will pop up a new window,
328
containing some text describing vertex $3$ (as mentioned above,
329
depending on the window system and window manager, placing this window
330
on the screen might require some interaction with the mouse).
331
332
\begintt
333
Size 60
334
Index 12
335
IsAbelian unknown
336
IsCentral unknown
337
IsCyclic unknown
338
IsNilpotent false
339
IsNormal false
340
IsPerfect true
341
IsSimple unknown
342
IsSolvable false
343
Isomorphism unknown
344
\endtt
345
346
Note that {\GAP} does not yet automatically draw the conclusion that a
347
nonsolvable subgroup is also not abelian, cyclic or central. Place the
348
pointer on top of the entry ``Isomorphism'' and press the *left* mouse
349
button. After a while this entry is changed to
350
351
\begintt
352
Isomorphism [ 60, 5 ]
353
\endtt
354
355
telling you that the subgroup represented by vertex $3$ is isomorphic to
356
the alternating group on five symbols. The notation `[ 60, 5 ]' comes out
357
of the small groups library and is the only information about the
358
isomorphism type we can get from {\GAP4} up to now. Select <close> to close
359
the ``Information'' menu. Repeat this with vertex $2$, you will see that the
360
subgroup of vertex $2$ is also isomorphic to $A_5$, however these two $A_5$
361
inside $S_6$ are not conjugate in $S_6$. The ``Information'' menu is described
362
in detail in "GraphicSubgroupLattice, Information Menu".
363
364
Now we want to compute the normalizers of the elements of the conjugacy
365
class containing the subgroup of vertex $3$. You could either select
366
vertex $3$ and then <Normalizers> and repeat this process for the vertices
367
$9$ to $13$, or you can first select the vertices $3$, $9$ to $13$ and then
368
select <Normalizers>. But how to select more than one vertex? If you
369
first select $3$ and then $9$, vertex $3$ will get deselected as soon as
370
$9$ gets selected. However, if you select vertex $3$, place the pointer
371
inside vertex $9$, hold down the <SHIFT> key on your keyboard and then
372
select vertex $9$ using the left mouse button, vertex $9$ will be selected
373
in addition to vertex $3$. Another method to select more than one vertex
374
is to use the rubber band to catch vertices inside a rectangle. Place the
375
pointer left and a bit higher than vertex $3$ *outside* any other vertex.
376
Press the *left* mouse button and hold it down. Now, using the mouse, move
377
the pointer right and slightly below vertex $13$. You see a rectangle, one
378
corner at your start position and the other following the pointer. If
379
vertices $3$ and $9$ to $13$ are all inside this rectangle, release the
380
mouse button. Now these vertices are selected. Select `Normalizers' from
381
the `Subgroups' menu to compute and display the normalizers.
382
383
Now select vertex $3$ and $4$ and compute the intersection. The
384
intersection is of size $10$. Select this intersection and use
385
`SelectedGroups' to get a {\GAP} record describing the subgroup.
386
387
\begintt
388
gap> l := SelectedGroups(s);
389
[ Group([ (2,3)(4,6), (1,2)(3,4) ]) ]
390
gap> u := l[1];
391
Group([ (2,3)(4,6), (1,2)(3,4) ])
392
\endtt
393
394
In order to find out which subgroups of the complete lattice lie above
395
the subgroup `u' you can use `Intermediate Subgroups'. You select the
396
whole group in addition to `u' and choose `Intermediate Subgroups' in the
397
`Subgroups' menu. You get 6 groups, some of them are already in the
398
lattice, the others are added.
399
400
There is another feature we have not seen yet. Close the current graphic
401
sheet and start again with a fresh one.
402
403
\begintt
404
gap> Close(s);
405
gap> s := GraphicSubgroupLattice(s6);
406
<graphic subgroup lattice "GraphicSubgroupLattice of S6">
407
\endtt
408
409
In order to compute a Sylow $2$ subgroup select `Sylow Subgroup' from the
410
`Subgroups' menu. A small dialog box will pop up asking for a prime,
411
type in $2$ and press <return> or click on `OK'. Now select this new
412
vertex $2$ representing the Sylow $2$ subgroup and compute its normal
413
subgroups. This is rather slow because the function checks for each new
414
vertex if the corresponding subgroup is conjugate to an old one of the
415
same size.
416
417
418
%obsolete?:
419
%There is however a limit on the index of the normalizer or
420
%subgroup up to which this test is performed.
421
%
422
%\begintt
423
%gap> s.limits.conjugates;
424
%100
425
%\endtt
426
%
427
%If `limit.conjugates' contains a positive number the index of the
428
%normalizer of the new subgroup is checked. If `limit.conjugates' contains
429
%a negative number, only the index of the subgroup itself is checked. If
430
%the index is less than the absolute value then the conjugacy test is
431
%carried out. Change this limit to $-10$.
432
%
433
%\begintt
434
%gap> s.limits.conjugates := -10;
435
%-10
436
%\endtt
437
%
438
%Select vertex $3$ and compute a random conjugate by selecting `Random
439
%Conjugate' from the `Subgroups' menu. Select this new vertex and compute
440
%its normal subgroups. You will see that now the vertices of the new
441
%subgroups appear faster on the graphic sheet, however, they have a
442
%different shape. They are represented by a square instead of a circle.
443
%A square is meant as a danger sign, because {\GAP} has not checked if
444
%subgroups associated with square vertices are conjugate to any of the
445
%other subgroups. Therefore these subgroups might be (and in this example
446
%will be) conjugate to an old subgroup.
447
448
%FIXME: do we want this feature?
449
%In order to untangle the Hasse diagram you can move the new (selected)
450
%vertices en block. Hold down the <SHIFT> key and move any of the new
451
%vertices to the right. All selected vertices will automatically be moved
452
%as soon as you release the left mouse button.
453
%FIXME: This feature does not yet exist.
454
455
This is now the end of our partial investigation of the (partial)
456
subgroup lattice of $S_6$, close the graphic sheet(s) using `close
457
graphic sheet' of the `Sheet' menu. If you started the logging facility
458
of {\XGAP} as described above you now have a file (probably called
459
`xgap.log' if you did not change the default) describing the actions
460
we performed.
461
462
463
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
464
\Section{A Partial Subgroup Lattice of the Cavicchioli Group}
465
466
This section investigates the following finitely presented group $C_2$,
467
which was first investigated by Alberto Cavicchioli in \cite{Cav86}:
468
$$
469
\langle a, b \;;\; aba^{-2}ba=b, (b^{-1}a^3b^{-1}a^{-3})^2=a^{-1}\rangle.
470
$$
471
472
In this example we will show a way to prove a finitely presented group
473
to be infinite, and to find some big nonabelian factor groups of it.
474
475
The following {\GAP} commands define $C_2$.
476
477
\begintt
478
gap> f := FreeGroup( "a", "b" ); a := f.1;; b := f.2;;
479
<free group on the generators [ a, b ]>
480
gap> c2 := f / [ a*b*a^-2*b*a/b, (b^-1*a^3*b^-1*a^-3)^2*a ];
481
<fp group on the generators [ a, b ]>
482
gap> SetName(c2,"c2");
483
\endtt
484
485
We again assume that you are familiar with the general ideas, mouse actions
486
and menus, which were discussed in "The Subgroup Lattice of the Dihedral
487
Group of Order 8" and "A Partial Subgroup Lattice of the Symmetric Group on
488
6 Points".
489
490
In order to build a partial lattice of a finitely presented group, you
491
again use the function `GraphicSubgroup\-Lattice'. But if the first argument
492
to `GraphicSubgroupLattice' is a finitely presented group the available menus
493
are different from the example in the previous section. After you have
494
entered
495
496
\begintt
497
gap> s := GraphicSubgroupLattice(c2);
498
<graphic subgroup lattice "GraphicSubgroupLattice of c2">
499
\endtt
500
501
{\XGAP} will open a window containing a new graphic sheet. Compared to the
502
interactive lattice of a permutation group as described in the previous
503
section, there are the following differences:
504
505
-- There is only one vertex instead of two. This vertex labeled $G$ is the
506
whole group $C_2$. There is no vertex for the trivial subgroup (yet).
507
508
-- If you pull down the `Subgroups' menu, you will see that this menu is
509
now very different. It gives you access to various algorithms for
510
finitely presented groups but most of the entries from the last two
511
examples are missing because most of the {\GAP} functions behind these
512
entries are not applicable to (infinite) finitely presented groups.
513
514
This example will show you how to prove that $C_2$ is infinite. First
515
look at the abelian invariants in order to see what the commutator factor
516
group is. In order to compute the abelian invariants pop up the
517
``Information'' menu. This is done in exactly the same manner as in the
518
previous section. Place the pointer inside vertex $G$, press the *right*
519
mouse button and release it immediately. This ``Information'' menu is
520
described in detail in "GraphicSubgroupLattice for FpGroups, Information
521
Menu".
522
523
\begintt
524
Index 1
525
IsNormal true
526
IsFpGroup unknown
527
Abelian Invariants unknown
528
Coset Table unknown
529
IsomorphismFpGroup unknown
530
Factor Group unknown
531
\endtt
532
533
This tells you what {\XGAP} already knows about the group associated with
534
vertex $G$. In order to compute the abelian invariants click onto this
535
line. After a while this entry will change to
536
537
\begintt
538
Abelian Invariants perfect
539
\endtt
540
541
telling you that $C_2$ is perfect. So none of the `Subgroups' menu
542
entries `Abelian Prime Quotient', `All Overgroups', `Conjugacy Class',
543
`Cores', `Derived Subgroups', `Intersection', `Intersections',
544
`Normalizers' or `Prime Quotient' will compute any new subgroups.
545
546
In order to avoid accidents the menu entries `Abelian Prime Quotient',
547
`All Overgroups', `Epimorphisms (GQuotients)', `Conjugacy Class',
548
`Low Index Subgroups', and `Prime Quotient' from the `Subgroups' menu are
549
only selectable if exactly one vertex is selected because the
550
functions behind these entries are in general quite time and space
551
consuming.
552
553
Close the ``Information'' window and select `Low Index Subgroups' from the
554
`Subgroups' menu. A small dialog box will pop up asking for a limit on
555
the index. Type in $12$ and press <return> or click on `OK'. In general
556
it is hard to say what kind of index limit will still work, for some
557
groups even $5$ might be too much while for others $20$ works fine, see
558
also "ref:LowIndexSubgroupsFpGroup".
559
560
{\GAP} computes $10$ subgroups of index $11$ and $8$ subgroups of index
561
$12$. If you now start to check the abelian invariants of the index $12$
562
subgroups you will find out that all subgroups represented by vertices
563
$3$ to $10$ have a finite commutator factor group except the subgroup
564
belonging to vertex $4$ which has an infinite abelian quotient.
565
Therefore the group $C_2$ itself is infinite.
566
567
Now we want to investigate $C_2$ a little further using {\GAP}. Select
568
vertices $3$, $4$, and $5$ and switch to the {\GAP} window. Use
569
`SelectedGroups' to get the subgroups associated with these vertices.
570
571
\begintt
572
gap> u := SelectedGroups( s );
573
[ 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,
574
b^2*a^3*b^-1*a^-1*b^-2 ]),
575
Group([ a, b^2*a*b^-1*a^-1*b^-1, b^3*a^-1*b^-1, b*a*b*a^3*b^-1 ]),
576
Group([ a, b^2*a*b^-1*a^-1*b^-1, b*a^3*b^-2, b^4*a^-1*b^-3,
577
b*a*b^3*a^-1*b^-1 ]) ]
578
\endtt
579
580
`FactorCosetAction' computes for each of these subgroups $u_i$ the
581
operation of $C_2$ on its cosets. It returns the result as a homomorphism
582
of $C_2$ onto a permutation group. The operation on $u_i$ is therefore a
583
permutation representation of the factor group $$C_2 / Core(u_i).$$ Using
584
`DisplayCompositionSeries' we can identify these factor groups.
585
586
\begintt
587
gap> p := List( u, x -> FactorCosetAction( c2, x ) );;
588
gap> l := List( p, Image );;
589
gap> for x in l do DisplayCompositionSeries(x); Print("\n"); od;
590
G (2 gens, size 95040)
591
| M(12)
592
1 (0 gens, size 1)
593
594
G (2 gens, size 660)
595
| A(1,11) = L(2,11) ~ B(1,11) = O(3,11) ~ C(1,11) = S(2,11) ~ 2A(1,11) = U(2,11)
596
1 (0 gens, size 1)
597
598
G (2 gens, size 239500800)
599
| A(12)
600
1 (0 gens, size 1)
601
\endtt
602
603
(This display can look a little different according to the {\GAP} version you
604
use.)
605
606
So $C_2$ contains the Mathieu group $M_{12}$, the alternating group on
607
$12$ symbols and $PSL(2,11)$ as factor groups. Therefore it would
608
have been possible to find vertex $4$ using
609
`Epimorphisms (GQuotients)' instead of `Low Index Subgroups'.
610
Close the graphic
611
sheet by selecting the menu entry `close graphic sheet' from the `Sheet'
612
menu and start with a fresh one.
613
614
\begintt
615
gap> s := GraphicSubgroupLattice(c2);
616
<graphic subgroup lattice "GraphicSubgroupLattice of c2">
617
\endtt
618
619
Select `Epimorphisms (GQuotients)' from the `Subgroups' menu. This
620
pops up a menu similar to the ``Information'' menu (see
621
"GraphicSubgroupLattice for FpGroups, Subgroups Menu").
622
623
\begintt
624
Sym(n)
625
Alt(n)
626
PSL(d,q)
627
Library
628
User Defined
629
\endtt
630
631
Select <PSL(d,q)>, which pops up a dialog box asking for a dimension.
632
Enter `2' and click on <OK>. Then a second dialog box pops up asking
633
for a field size. Enter `11' and click on <OK>. After a short time
634
of computation the display in the `Epimorphisms (GQuotients)' menu
635
changes and shows
636
637
\begintt
638
PSL(2,11) 1 found
639
\endtt
640
641
telling you, that {\GAP} has found $1$ epimorphism (up to inner
642
automorphisms of $PSL(2,11)$) from $C_2$ onto $PSL(2,11)$. Click on
643
<display point stabilizer> to create a new vertex representing a subgroup
644
$u$ such that the factor group of $C_2 / Core(u)$ is isomorphic to
645
$PSL(2,11)$. You could have clicked on <display> to create a new vertex
646
representing the kernel of the epimorphism.
647
648
This is now the end of our partial investigation of the (partial)
649
subgroup lattice of $C_2$, you have seen that $C_2$ is infinite and
650
contains $M_{12}$, $Alt(12)$, and $PSL(2,11)$ as factor groups. Close
651
the graphic sheet by selecting `close graphic sheet' from the `Sheet'
652
menu.
653
654
655
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
656
\Section{A Partial Subgroup Lattice of the Trefoil Knot Group}
657
658
This section investigates the following finitely presented group, the
659
trefoil knot group $K_3$.
660
$$
661
\langle a, b \;;\; aba = bab \rangle
662
$$
663
664
This examples shows some limitations of the methods available, in
665
particular if infinite factors occur.
666
667
\begintt
668
gap> f := FreeGroup( "a", "b" );
669
<free group on the generators [ a, b ]>
670
gap> k3 := f / [ f.1*f.2*f.1 / (f.2*f.1*f.2) ];
671
<fp group on the generators [ a, b ]>
672
gap> s := GraphicSubgroupLattice(k3);
673
<graphic subgroup lattice "GraphicSubgroupLattice">
674
\endtt
675
676
If you compute the Abelian invariants of $K_3$ you will see that the
677
commutator factor group is isomorphic to the infinite cyclic group.
678
If you try to compute the derived subgroups it works! Just click on
679
`Derived Subgroups' in the `Subgroups' menu. A vertex appears in a
680
level marked with `[ infinity, 1 ]'. However, there are not too many
681
things you can do with such infinite index subgroups up to now, as we
682
will illustrate below:
683
684
First produce some more subgroups by `Low Index Subgroups' (for
685
example with index limit 5). If you now try to compare one of the new
686
subgroups with the derived subgroup, this is possible. If you however
687
try to calculate the intersection of one of the finite-index subgroups
688
with the derived subgroups, {\GAP} will run into an error:
689
690
\begintt
691
Error the coset enumeration has defined more than 256000 cosets:
692
type 'return;' if you want to continue with a new limit of 512000 cosets,
693
type 'quit;' if you want to quit the coset enumeration,
694
type 'maxlimit := 0; return;' in order to continue without a limit,
695
... (a few lines follow)
696
\endtt
697
698
This can happen if the coset enumeration algorithm tries to enumerate
699
the cosets of a subgroup with infinite index. This situation can also
700
occur with other operations.
701
702
You can leave this break loop by entering the command `quit;' or by
703
clicking `Leave Break Loop' in the `Run' menu of the main {\XGAP}
704
window.
705
706
Earlier you have computed the subgroups of index at most $5$. There
707
is one normal subgroup of index $2$ belonging to vertex $6$ and one of
708
index $4$ belonging to vertex $8$. There is *no* line between those
709
two vertices. Select both and click on `Compare Subgroups' in the
710
`Subgroups' menu. A line appears and the line between vertices $8$ and
711
$G$ vanishes. The reason for this is, that the
712
`LowIndexSubgroupsFpGroup' call did not deliver the complete inclusion
713
info. This can always happen for finitely presented groups in {\XGAP}.
714
In this case you have to compare the subgroups manually by
715
`Compare Subgroups'. Note that this can mean large computations, especially if
716
the indices are huge.
717
718
Now select vertex $10$ and choose `Cores' from the `Subgroups' menu.
719
You will get a new vertex $12$ for an index $24$ subgroup. Select the
720
vertices $12$ and $G$ and choose `Intermediate Subgroups' from the
721
`Subgroups' menu. You will get lots of new vertices. Note that some
722
of them are duplicates of those which were already in the lattice.
723
This is because comparison of subgroups can be quite expensive and is
724
therefore *not* performed automatically in the case of finitely
725
presented groups.
726
727
Select all vertices with a rubber band (click into the top left corner
728
of the sheet, hold down the mouse and move the pointer to the lower
729
right corner, then release the mouse button), and choose
730
`Compare Subgroups' from the `Subgroups' menu. A few vertices will disappear
731
and you get some messages in the {\GAP} window about merging of
732
vertices.
733
734
The display is also not fully correct with respect to conjugacy
735
classes. `IntermediateSubgroups' does not return the complete
736
information about conjugacy of subgroups. Because also conjugacy tests
737
can be very expensive, they are also *not* performed automatically for
738
finitely presented groups. Select `Test Conjugacy' from the
739
`Subgroups' menu to trigger this test manually (note that all
740
vertices are still selected!). The vertices belonging to conjugate
741
subgroups are arranged together and if you move those containing the
742
normal subgroup of index $24$ above this one you recognize the
743
subgroup lattice of the symmetric group on $4$ points above that
744
normal subgroup.
745
746
This is now the end of our partial investigation of the (partial)
747
subgroup lattice of $K_3$, close the graphic sheet by selecting `close
748
graphic sheet' from the `Sheet' menu.
749
750
751
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
752
\Section{A Partial Subgroup Lattice of a Finitely Presented Group}
753
754
This section describes the investigation of the following finitely presented
755
group:
756
$$ G := \langle a, b \; ; \; a^6 = 1 \rangle $$
757
We will show especially how to deal with subgroups which have a very large
758
index like those occuring in the prime quotient algorithm.
759
760
Define the group and open the subgroup lattice window:
761
762
\begintt
763
gap> f := FreeGroup(2);
764
<free group on the generators [ f1, f2 ]>
765
gap> g := f/[f.1^6];
766
<fp group on the generators [ f1, f2 ]>
767
gap> s := GraphicSubgroupLattice(g);
768
<graphic subgroup lattice "GraphicSubgroupLattice">
769
\endtt
770
771
First compute prime quotients by `Prime Quotient' in the `Subgroups'
772
menu. You are asked for a prime and a class. Enter $2$ and $7$
773
respectively. You get lots of output in the {\GAP} command window and
774
seven new vertices. Some of the corresponding subgroups have huge
775
indices. Note that these groups are only represented as kernels of
776
epimorphisms within {\GAP}. So explicit calculation of a coset table
777
or a presentation could take very long or be absolutely impossible!
778
779
Now compute epimorphisms onto the symmetric group on $3$ points by
780
`Epimorphisms (GQuotients)' in the `Subgroups' menu, but use a polycyclic
781
presentation as follows (the reason for this will be explained below):
782
783
\begintt
784
gap> IdGroup(SymmetricGroup(3));
785
[ 6, 1 ]
786
gap> s3 := SmallGroup(6,1);
787
<pc group with 2 generators>
788
gap> IMAGE_GROUP := s3;;
789
\endtt
790
791
This first determines the identification number of the symmetric group
792
on $3$ points within the small groups library, and then fetches this
793
group as a polycyclic group. For groups of size less than $1000$ this
794
is often a good way to get a polycyclic presentation. Note that
795
`SymmetricGroup(3)' leads to a permutation group. The last statement
796
stores the group in a variable which can be used by {\XGAP}.
797
798
Select vertex $G$, then click on `Epimorphisms (GQuotient)' in the
799
`Subgroups' menu and select `User defined' in the window that pops up.
800
This will always use the group stored in the global variable
801
`IMAGE_GROUP'. {\GAP} finds three epimorphisms. Display the three
802
kernels by selecting <display> in the epimorphisms window.
803
804
Note that the new vertex $9$ will be drawn on the line between
805
vertices $2$ and $3$ because there is not yet a vertex in the level
806
corresponding to index 6. You can move it aside by dragging it with
807
the mouse to some better position within its level.
808
809
Now select vertices $8$ and $11$ and calculate the intersection of the
810
two subgroups of indices $137438953472$ and $6$ respectively. {\GAP}
811
can calculate this intersection by calculating the subdirect product
812
of the image groups of the epimorphisms (the index of the subgroup
813
belonging to vertex $12$ in $G$ is $412316860416$ which is three times
814
of the index of the subgroup belonging to vertex $11$). Note that this
815
subdirect product can only be calculated because the two image groups
816
are polycyclic groups. This is the reason why we needed $S_3$ as
817
polycyclic group earlier.
818
819
This is now the end of our partial investigation of the (partial)
820
subgroup lattice of $G$, close the graphic sheet by selecting `close
821
graphic sheet' from the `Sheet' menu.
822
823
824
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
825
\Section{A Partial Subgroup Lattice of a Space Group}
826
827
This section describes an investigation of an (infinite) space group
828
provided by the catalogue CRYSTCAT of crystallographic groups and
829
using the package CRYST. Here you will see that subgroups of
830
finite index and of finite size can occur at the same time in a
831
graphic subgroup lattice of an infinite group. Note that you have to
832
install these packages to try this example.
833
834
Load the packages, define the group and open the subgroup
835
lattice window:
836
837
\begintt
838
gap> LoadPackage("crystcat");;
839
gap> LoadPackage("cryst");;
840
gap> g := SpaceGroupBBNWZ(4,6,3,1,2);
841
SpaceGroupOnRightBBNWZ( 4, 6, 3, 1, 2 )
842
gap> s := GraphicSubgroupLattice(g);
843
<graphic subgroup lattice "GraphicSubgroupLattice of SpaceGroupOnRightBBNWZ( 4, \
844
6, 3, 1, 2 )">
845
\endtt
846
847
This fetches the space group of dimension $4$, associated crystal
848
system number $6$, $\Q$-class 3, $\Z$-class $1$, and space group type
849
$2$ (see the CRYSTCAT documentation for an explanation of this).
850
851
Now we calculate some maximal subgroups with finite index and choose three of
852
them:
853
854
\begintt
855
gap> m := MaximalSubgroupClassReps(g,rec(latticeequal := true));;
856
gap> mm := m{[1..3]};
857
[ <matrix group with 7 generators>, <matrix group with 7 generators>,
858
<matrix group with 7 generators> ]
859
\endtt
860
861
Again refer to the CRYST package documentation for an
862
explanation of these commands. Insert this list of three subgroups
863
into the lattice by selecting `InsertSubgroups from GAP' from the
864
`Subgroups' menu.
865
866
Next calculate subgroups of infinite index but with finite size:
867
868
\begintt
869
gap> w := WyckoffPositions(g);;
870
gap> ww := w{[1..3]};
871
[ < Wyckoff position, point group 11, translation := [ 0, 1/2, 0, 0 ],
872
basis := [ ] >
873
, < Wyckoff position, point group 11, translation := [ 0, 1/2, 0, 1/2 ],
874
basis := [ ] >
875
, < Wyckoff position, point group 11, translation := [ 0, 1/2, 1/2, 0 ],
876
basis := [ ] >
877
]
878
gap> www := List(ww,WyckoffStabilizer);
879
[ <matrix group with 3 generators>, <matrix group with 3 generators>,
880
<matrix group with 3 generators> ]
881
\endtt
882
883
Insert these subgroups into the lattice by selecting
884
`InsertSubgroups from GAP' from the `Subgroups' menu. They will be
885
inserted in the level for groups of size 8.
886
887
Now you can compute the intersection of a subgroup with finite index
888
and a subgroup with finite size, select for example vertex $2$ and vertex
889
$5$ and choose `Intersection' from the `Subgroups' menu. You get a new
890
vertex representing a subgroup of size $4$.
891
892
If you now calculate the centralizers of the fifteen latticeequal maximal
893
subgroups from above, you get among them four non-trivial cyclic subgroups:
894
895
\begintt
896
gap> c := List(m,x->Centralizer(g,x));
897
[ <matrix group with 1 generators>, Group([ ]), Group([ ]), Group([ ]),
898
<matrix group with 1 generators>, Group([ ]), Group([ ]),
899
<matrix group with 1 generators>, Group([ ]),
900
<matrix group with 1 generators>, Group([ ]), Group([ ]), Group([ ]),
901
Group([ ]), Group([ ]) ]
902
\endtt
903
904
Insert these into the graphic sheet by selecting `Insert Vertices from GAP'
905
from the `Subgroups' menu. You
906
will get four different new vertices representing groups with infinite
907
index *and* infinite size. Each such vertex is placed into a level on
908
its own, which is marked by `[ H1, <n>]' where <n> is replaced
909
with subsequent natural numbers (see section "levelsintro" for details
910
about levels). ``H1'' means Hirsch length 1, that is, each subnormal series
911
of the group contains one and only one infinite cycle. In fact, since
912
these are subgroups of space groups, it indicates that the translation
913
subgroup is of dimension 1.
914
915
(Note that by calculating the point groups of these centralizers you can
916
in fact see, that the infinite cyclic groups consist of translations only.)
917
918
Take two of these centralizers and calculate the closure by selecting
919
`Closure' from the `Subgroups' menu. You will get a new subgroup
920
of Hirsch length 2, which is also placed on a level of its own. Next
921
select three of them, and calculate the closure. What do you observe?
922
Also, select all four of them and calculate the closure. This time
923
you get a subgroup of index 16, hence its level is marked by this finite
924
index rather than a Hirsch number (which would be 4 here). Note that
925
the finite index is used rather than the Hirsch length for this placement.
926
927
Finally, check, whether the centralizers are normal in the whole space
928
group by clicking on the vertices with the right mouse button and
929
choosing `IsNormal' in the ``Information'' window, which springs up.
930
Now form the closures of each of them with each of the size 8 point
931
stabilizers. You will get some other subgroups of Hirsch length 1.
932
Both the centralizers and the point stabilizers are abelian. Is this also
933
true for the closures?
934
935
This is now the end of our partial investigation of the (partial)
936
subgroup lattice of $G$, close the graphic sheet by selecting `close
937
graphic sheet' from the `Sheet' menu.
938
939
940
%%% Local Variables:
941
%%% mode: latex
942
%%% TeX-master: "manual"
943
%%% End:
944
945