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

563642 views
1
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2
%%
3
%A Cohomology package documentation Derek Holt
4
%%
5
%Y Copyright 1995 -- Mathematics Institute, Univ. of Warwick, UK.
6
%%
7
%% This file describes certain cohomology functions.
8
%% They call external C programs in the cohomology package.
9
%%
10
%%
11
12
\Chapter{Cohomology}
13
14
\index{Cohomology!}
15
16
This chapter describes functions which may be used to perform certain
17
cohomological calculations on a finite group <G>.
18
There is a file `<gap-dir>/pkg/cohomolo/gap/cohomolo.tst' which contains
19
simple commands that can be used to test the installation of the package.
20
If you start {\GAP} in the directory `<gap-dir>/pkg/cohomolo/gap', then
21
you can read the file `cohomolo.tst' into {\GAP} to peform the test.
22
23
This Package has been updated from the original {\GAP}3 package
24
with minimal changes, so the user should find the interface unchanged.
25
In fact the only real changes are that the function `InfoCohomology' has been
26
replaced by the `Info' variable `InfoCohomolo', and the function
27
`SplitExtension' has been renamed `SplitExtensionCHR', to avoid clashing
28
with an existing {\GAP} function name. (Of course, it does more or less
29
the same thing as the {\GAP} function!)
30
31
The following properties of <G> can be computed:
32
33
\beginitems
34
`(i)' The <p>-part $Mul_p$ of the Schur multiplier <Mul> of <G>,
35
and a presentation
36
of a covering extension of $Mul_p$ by <G>, for a specified prime <p>;
37
38
`(ii)' The dimensions of the first and second cohomology groups of <G>
39
acting on a finite dimensional <KG> module <M>, where <K> is a field of prime
40
order; and
41
42
`(iii)' Presentations of split and nonsplit extensions of <M> by <G>.
43
\enditems
44
45
All of these functions require <G> to be defined as a finite permutation
46
group. The functions which compute presentations require, in addition, a
47
presentation of <G>. Finally, the functions which operate on a module <M>
48
require the module to be defined by a list of matrices over <K>. This
49
situation is handled by first defining a {\GAP} record, which contains the
50
required information. This is done using the function `CHR', which must be
51
called before any of the other functions. The remaining functions operate
52
on this record.
53
54
If no presentation of the permutation group <G> is known, and <G> has
55
order at most 32767, then a presentation can be computed using the
56
package function `CalcPres' (which calls a standalone `C' program), or
57
alternatively by the {\GAP} function `Image(IsomorphismFpGroup(<G>))'.
58
On the other hand, if you start with a finitely
59
presented group, then you can create a permutation representation
60
with the function `PermRep' (although there is no guarantee that the
61
representation will be faithful in general).
62
63
The functions all compute and make use of a descending sequence of subgroups
64
of <G>, starting at <G> and ending with a Sylow <p>-subgroup of <G>, and
65
it is usually most efficient to have the indices of the subgroups in this
66
chain as small as possible. If you get a warning message, and one of
67
the function fails because the indices in the chain computed are too large,
68
then you can try to remedy matters by supplying your own chain. See
69
Section~"Further Information" for more details, and an example.
70
71
If you set the Info variable `InfoCohomolo' to 1,
72
then a small amount of information will be printed, indicating what is
73
happening. If <chr> is the cohomology record you are working with, and
74
you set the field <chr>`.verbose' to the value `true', then you will
75
see all the output of the external programs.
76
77
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
78
\Section{CHR}
79
\index{CHR!}
80
81
\>CHR( <G>, <p>, [<F>, <mats>] ) F
82
83
`CHR' constructs a cohomology-record, which is used as a parameter for
84
all of the other functions in this chapter. <G> must be a finite
85
permutation group, and <p> a prime number. If present, <F> must either be
86
zero or a finitely presented group with the same number of generators as
87
<G>, of which the relators are satisfied by the generators of <G>.
88
In fact, to obtain meaningful results, <F> should almost certainly be
89
isomorphic to <G>. If present, <mats> should be a list of invertible matrices
90
over the finite field <K> = <GF(p)>. The list should have the same length as the
91
number of generators of <G>, and the matrices should correspond to these
92
generators, and define a <GF(p)G>-module, which we shall denote by <M>.
93
94
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
95
\Section{SchurMultiplier}
96
\index{SchurMultiplier!}
97
98
\>SchurMultiplier( <chr> ) F
99
100
<chr> must be a cohomology-record that was created by a call of
101
`CHR(<G>,<p>,[<F>,<mats>])'. `SchurMultiplier' calculates
102
the <p>-part $Mul_p$ of the Schur multiplier <Mul> of <G>.
103
The result is returned as a list of integers, which are the
104
abelian invariants of $Mul_p$. If the list is empty, then
105
$Mul_p$ is trivial.
106
107
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
108
\Section{CoveringGroup}
109
\index{CoveringGroup!}
110
111
\>CoveringGroup( <chr> ) F
112
113
<chr> must be a cohomology-record, created by a call of
114
`CHR(<G>,<p>,<F>[,<mats>])', where <F> is a finitely presented group.
115
`CoveringGroup' calculates a presentation of a covering extension of $Mul_p$
116
by <G>, where $Mul_p$ is the <p>-part of the Schur multiplier <Mul> of <G>.
117
The set of generators of the finitely presented group that is returned
118
is a union of two sets, which are in one-one correspondence with the
119
generators of <F> and of $Mul_p$, respectively.
120
121
The relators fall into three classes:
122
\beginitems
123
`(a)' Those that specify the orders of the generators of $Mul_p$;
124
125
`(b)' Those that say that the generators of $Mul_p$ are central; and
126
127
`(c)'
128
Those that give the values of the relators of <F> as elements of $Mul_p$.
129
\enditems
130
131
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
132
\Section{FirstCohomologyDimension}
133
\index{FirstCohomologyDimension!}
134
135
\>FirstCohomologyDimension( <chr> ) F
136
137
<chr> must be a cohomology-record, created by a call of
138
`CHR(<G>,<p>,<F>,<mats>)'. (If there is no finitely presented group <F>
139
involved, then the third parameter of `CHR' should be given as 0.)
140
`FirstCohomologyDimension' calculates and returns the dimension
141
over <K> = <GF(p)> of the first cohomology group $H^1(G,M)$ of the group
142
<G> in its action on the module <M> defined by the matrices <mats>.
143
144
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
145
\Section{SecondCohomologyDimension}
146
\index{SecondCohomologyDimension!}
147
148
\>SecondCohomologyDimension( <chr> ) F
149
150
<chr> must be a cohomology-record, created by a call of
151
`CHR(<G>,<p>,<F>,<mats>)'.
152
(If there is no finitely presented group <F> involved,
153
then the third parameter of `CHR' should be given as 0.)
154
`SecondCohomologyDimension' calculates and returns the dimension
155
over <K> = <GF(p)> of the second cohomology group $H^2(G,M)$ of the group
156
<G> in its action on the module <M> defined by the matrices <mats>.
157
158
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
159
\Section{SplitExtensionCHR}
160
\index{SplitExtensionCHR!}
161
162
\>SplitExtensionCHR( <chr> ) F
163
164
<chr> must be a cohomology-record, created by a call of
165
`CHR(<G>,<p>,<F>,<mats>)', where <F> is a finitely presented group.
166
`SplitExtensionCHR' returns a presentation of the split extension of the module
167
<M> defined by the matrices <mats> by the group <G>.
168
This is a straightforward calculation, and involves no call of the
169
external cohomology programs. It is provided here for convenience.
170
171
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
172
\Section{NonsplitExtension}
173
\index{NonsplitExtension!}
174
175
\>NonsplitExtension( <chr>[, <vec>] ) F
176
177
<chr> must be a cohomology-record, created by a call of
178
`CHR(<G>,<p>,<F>,<mats>)', where <F> is a finitely presented group.
179
If present, <vec> must be a list of integers of length equal to the
180
dimension over <K> = <GF(p)> of the second cohomology group $H^2(G,M)$ of the
181
group <G> in its action on the module <M> defined by the matrices <mats>.
182
`NonsplitExtension' calculates and returns a presentation of a nonsplit
183
extension of <M> by <G>. Since there may be many such extensions, and
184
the equivalence classes of these extensions are in one-one correspondence
185
with the nonzero elements of $H^2(G,M)$, the optional second parameter
186
can be used to specify an element of $H^2(G,M)$ as a vector.
187
The default value of this vector is `[1,0,...,0]'.
188
The set of generators of the finitely presented group that is returned
189
is a union of two sets, which are in one-one correspondence with the
190
generators of <F> and of <M> (as an abelian group), respectively.
191
192
The relators fall into three classes:
193
\beginitems
194
`(a)' Those that say that <M> is an abelian group of exponent <p>;
195
196
`(b)' Those that define the action of the generators of <F> on
197
those of <M>; and
198
199
`(c)' Those that give the values of the relators of <F> as elements of $M$.
200
\enditems
201
202
(<Note>: It is not particularly efficient to call `SecondCohomologyDimension'
203
first to calculate the dimension of $H^2(G,M)$, which must of course be known
204
if the second parameter is to be given; it is preferable to call
205
`NonsplitExtension' immediately without the second parameter (which will
206
return one nonsplit extension), and then to call 'SecondCohomologyDimension',
207
which will at that stage return the required dimension immediately -
208
all subsequent calls of `NonsplitExtension' on <chr> will also yield
209
immediate results.)
210
211
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
212
\Section{CalcPres}
213
\index{CalcPres!}
214
215
\>CalcPres( <chr> ) F
216
217
`CalcPres' computes a presentation of the permutation group <chr>`.permgp'
218
on the same set of generators as <chr>`.permgp', and stores it as <chr>`.fpgp'.
219
It currently only works for groups of order up to 32767, although that
220
could easily be increased if required. Note that a presentation of a
221
finite group <G> can also be computed by the standard {\GAP} function
222
call `Image(IsomorphismFpGroup(<G>))'.
223
224
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
225
\Section{PermRep}
226
\index{PermRep!}
227
228
\>PermRep( <G>, <K> ) F
229
230
`PermRep' calculates the permutation representation of the finitely
231
presented group <F> on the right cosets of the subgroup <K>, and returns
232
it as a permutation group of which the generators correspond to those
233
of <F>. It simply calls the {\GAP} Todd-Coxeter function. Of course,
234
there is no guarantee in general that this representation will be
235
faithful.
236
237
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
238
\Section{Further Information}
239
240
Suppose, as usual, that the cohomology record <chr> was constructed
241
with the call `CHR(<G>,<p>,[<F>],[<mats>] )'.
242
All of the functions make use of a strictly decreasing chain of subgroups
243
of the permutation group <G> starting with <G> itself and ending with a
244
Sylow <p>-subgroup <P> of <G>. In general, the programs run most efficiently
245
if the indices between successive terms in this sequence are as small as
246
possible. By default, {\GAP} will attempt to find a suitable chain, when
247
you call the first cohomology function on <chr>. However, you may be able
248
to construct a better chain yourself. If so, then you can do this
249
by assigning the record field <chr>`.chain' to the list <L> of subgroups
250
that you wish to use. You should do that before calling any of the
251
cohomology functions. Remeber that the first term in the list must be
252
<G> itself, the sequence of subgroups must be strictly decreasing,
253
and the last term must be equal to the Sylow subgroup stored as
254
<chr>`.sylow'. (You can change <chr>`.sylow' to a different Sylow
255
<p>-subgroup if you like.) Here is a slightly contrived example of this
256
process.
257
258
\beginexample
259
gap> G:=AlternatingGroup(16);;
260
gap> chr:=CHR(G,2);;
261
gap> SetInfoLevel(InfoCohomolo,1);;
262
gap> SchurMultiplier(chr);
263
#Indices in the subgroup chain are: 2027025 315
264
#WARNING: An index in the subgroup chain found is larger than 50000.
265
#This calculation may fail. See manual for possible remedies.
266
#I Cohomolo package: Calling external program.
267
Out of tree space. Increase TRSP.
268
#I External program complete.
269
Error 'Cohomolo' failed for some reason.
270
at
271
Error( "'Cohomolo' failed for some reason.\n" );
272
Cohomology( chr, true, false, false, TmpName( ) ); called from
273
<function>( <arguments> ) called from read-eval-loop
274
Entering break read-eval-print loop, you can 'quit;' to quit to outer loop,
275
or you can return to continue
276
brk> quit;
277
278
#The first index in the chain found by GAP was hopelessly large.
279
#Let's try and do better.
280
281
gap> P:=chr.sylow;;
282
gap> H1:=Subgroup(G, [(1,2)(9,10), (2,3,4,5,6,7,8),
283
> (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)]);;
284
gap> Index(G,H1);
285
6435
286
gap> H2:=Subgroup(H1, [(1,2)(5,6),(1,2)(9,10), (2,3,4),
287
> (1,5)(2,6)(3,7)(4,8), (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)]);;
288
gap> Index(H1,H2);
289
1225
290
gap> IsSubgroup(H2,P);
291
true
292
#If that had been false, we could have replaced chr.sylow by
293
#a Sylow 2-subgroup of H2.
294
gap> Index(H2,P);
295
81
296
gap> chr.chain := [G,H1,H2,P];;
297
gap> SchurMultiplier(chr);
298
#Calling external program.
299
#External program complete.
300
#Removing temporary files.
301
[ 2 ]
302
gap> quit;
303
\endexample
304
305