GAP 4.8.9 installation with standard packages -- copy to your CoCalc project to get it
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%1%%2%A Cohomology package documentation Derek Holt3%%4%Y Copyright 1995 -- Mathematics Institute, Univ. of Warwick, UK.5%%6%% This file describes certain cohomology functions.7%% They call external C programs in the cohomology package.8%%9%%1011\Chapter{Cohomology}1213\index{Cohomology!}1415This chapter describes functions which may be used to perform certain16cohomological calculations on a finite group <G>.17There is a file `<gap-dir>/pkg/cohomolo/gap/cohomolo.tst' which contains18simple commands that can be used to test the installation of the package.19If you start {\GAP} in the directory `<gap-dir>/pkg/cohomolo/gap', then20you can read the file `cohomolo.tst' into {\GAP} to peform the test.2122This Package has been updated from the original {\GAP}3 package23with minimal changes, so the user should find the interface unchanged.24In fact the only real changes are that the function `InfoCohomology' has been25replaced by the `Info' variable `InfoCohomolo', and the function26`SplitExtension' has been renamed `SplitExtensionCHR', to avoid clashing27with an existing {\GAP} function name. (Of course, it does more or less28the same thing as the {\GAP} function!)2930The following properties of <G> can be computed:3132\beginitems33`(i)' The <p>-part $Mul_p$ of the Schur multiplier <Mul> of <G>,34and a presentation35of a covering extension of $Mul_p$ by <G>, for a specified prime <p>;3637`(ii)' The dimensions of the first and second cohomology groups of <G>38acting on a finite dimensional <KG> module <M>, where <K> is a field of prime39order; and4041`(iii)' Presentations of split and nonsplit extensions of <M> by <G>.42\enditems4344All of these functions require <G> to be defined as a finite permutation45group. The functions which compute presentations require, in addition, a46presentation of <G>. Finally, the functions which operate on a module <M>47require the module to be defined by a list of matrices over <K>. This48situation is handled by first defining a {\GAP} record, which contains the49required information. This is done using the function `CHR', which must be50called before any of the other functions. The remaining functions operate51on this record.5253If no presentation of the permutation group <G> is known, and <G> has54order at most 32767, then a presentation can be computed using the55package function `CalcPres' (which calls a standalone `C' program), or56alternatively by the {\GAP} function `Image(IsomorphismFpGroup(<G>))'.57On the other hand, if you start with a finitely58presented group, then you can create a permutation representation59with the function `PermRep' (although there is no guarantee that the60representation will be faithful in general).6162The functions all compute and make use of a descending sequence of subgroups63of <G>, starting at <G> and ending with a Sylow <p>-subgroup of <G>, and64it is usually most efficient to have the indices of the subgroups in this65chain as small as possible. If you get a warning message, and one of66the function fails because the indices in the chain computed are too large,67then you can try to remedy matters by supplying your own chain. See68Section~"Further Information" for more details, and an example.6970If you set the Info variable `InfoCohomolo' to 1,71then a small amount of information will be printed, indicating what is72happening. If <chr> is the cohomology record you are working with, and73you set the field <chr>`.verbose' to the value `true', then you will74see all the output of the external programs.7576%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%77\Section{CHR}78\index{CHR!}7980\>CHR( <G>, <p>, [<F>, <mats>] ) F8182`CHR' constructs a cohomology-record, which is used as a parameter for83all of the other functions in this chapter. <G> must be a finite84permutation group, and <p> a prime number. If present, <F> must either be85zero or a finitely presented group with the same number of generators as86<G>, of which the relators are satisfied by the generators of <G>.87In fact, to obtain meaningful results, <F> should almost certainly be88isomorphic to <G>. If present, <mats> should be a list of invertible matrices89over the finite field <K> = <GF(p)>. The list should have the same length as the90number of generators of <G>, and the matrices should correspond to these91generators, and define a <GF(p)G>-module, which we shall denote by <M>.9293%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%94\Section{SchurMultiplier}95\index{SchurMultiplier!}9697\>SchurMultiplier( <chr> ) F9899<chr> must be a cohomology-record that was created by a call of100`CHR(<G>,<p>,[<F>,<mats>])'. `SchurMultiplier' calculates101the <p>-part $Mul_p$ of the Schur multiplier <Mul> of <G>.102The result is returned as a list of integers, which are the103abelian invariants of $Mul_p$. If the list is empty, then104$Mul_p$ is trivial.105106%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%107\Section{CoveringGroup}108\index{CoveringGroup!}109110\>CoveringGroup( <chr> ) F111112<chr> must be a cohomology-record, created by a call of113`CHR(<G>,<p>,<F>[,<mats>])', where <F> is a finitely presented group.114`CoveringGroup' calculates a presentation of a covering extension of $Mul_p$115by <G>, where $Mul_p$ is the <p>-part of the Schur multiplier <Mul> of <G>.116The set of generators of the finitely presented group that is returned117is a union of two sets, which are in one-one correspondence with the118generators of <F> and of $Mul_p$, respectively.119120The relators fall into three classes:121\beginitems122`(a)' Those that specify the orders of the generators of $Mul_p$;123124`(b)' Those that say that the generators of $Mul_p$ are central; and125126`(c)'127Those that give the values of the relators of <F> as elements of $Mul_p$.128\enditems129130%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%131\Section{FirstCohomologyDimension}132\index{FirstCohomologyDimension!}133134\>FirstCohomologyDimension( <chr> ) F135136<chr> must be a cohomology-record, created by a call of137`CHR(<G>,<p>,<F>,<mats>)'. (If there is no finitely presented group <F>138involved, then the third parameter of `CHR' should be given as 0.)139`FirstCohomologyDimension' calculates and returns the dimension140over <K> = <GF(p)> of the first cohomology group $H^1(G,M)$ of the group141<G> in its action on the module <M> defined by the matrices <mats>.142143%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%144\Section{SecondCohomologyDimension}145\index{SecondCohomologyDimension!}146147\>SecondCohomologyDimension( <chr> ) F148149<chr> must be a cohomology-record, created by a call of150`CHR(<G>,<p>,<F>,<mats>)'.151(If there is no finitely presented group <F> involved,152then the third parameter of `CHR' should be given as 0.)153`SecondCohomologyDimension' calculates and returns the dimension154over <K> = <GF(p)> of the second cohomology group $H^2(G,M)$ of the group155<G> in its action on the module <M> defined by the matrices <mats>.156157%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%158\Section{SplitExtensionCHR}159\index{SplitExtensionCHR!}160161\>SplitExtensionCHR( <chr> ) F162163<chr> must be a cohomology-record, created by a call of164`CHR(<G>,<p>,<F>,<mats>)', where <F> is a finitely presented group.165`SplitExtensionCHR' returns a presentation of the split extension of the module166<M> defined by the matrices <mats> by the group <G>.167This is a straightforward calculation, and involves no call of the168external cohomology programs. It is provided here for convenience.169170%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%171\Section{NonsplitExtension}172\index{NonsplitExtension!}173174\>NonsplitExtension( <chr>[, <vec>] ) F175176<chr> must be a cohomology-record, created by a call of177`CHR(<G>,<p>,<F>,<mats>)', where <F> is a finitely presented group.178If present, <vec> must be a list of integers of length equal to the179dimension over <K> = <GF(p)> of the second cohomology group $H^2(G,M)$ of the180group <G> in its action on the module <M> defined by the matrices <mats>.181`NonsplitExtension' calculates and returns a presentation of a nonsplit182extension of <M> by <G>. Since there may be many such extensions, and183the equivalence classes of these extensions are in one-one correspondence184with the nonzero elements of $H^2(G,M)$, the optional second parameter185can be used to specify an element of $H^2(G,M)$ as a vector.186The default value of this vector is `[1,0,...,0]'.187The set of generators of the finitely presented group that is returned188is a union of two sets, which are in one-one correspondence with the189generators of <F> and of <M> (as an abelian group), respectively.190191The relators fall into three classes:192\beginitems193`(a)' Those that say that <M> is an abelian group of exponent <p>;194195`(b)' Those that define the action of the generators of <F> on196those of <M>; and197198`(c)' Those that give the values of the relators of <F> as elements of $M$.199\enditems200201(<Note>: It is not particularly efficient to call `SecondCohomologyDimension'202first to calculate the dimension of $H^2(G,M)$, which must of course be known203if the second parameter is to be given; it is preferable to call204`NonsplitExtension' immediately without the second parameter (which will205return one nonsplit extension), and then to call 'SecondCohomologyDimension',206which will at that stage return the required dimension immediately -207all subsequent calls of `NonsplitExtension' on <chr> will also yield208immediate results.)209210%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%211\Section{CalcPres}212\index{CalcPres!}213214\>CalcPres( <chr> ) F215216`CalcPres' computes a presentation of the permutation group <chr>`.permgp'217on the same set of generators as <chr>`.permgp', and stores it as <chr>`.fpgp'.218It currently only works for groups of order up to 32767, although that219could easily be increased if required. Note that a presentation of a220finite group <G> can also be computed by the standard {\GAP} function221call `Image(IsomorphismFpGroup(<G>))'.222223%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%224\Section{PermRep}225\index{PermRep!}226227\>PermRep( <G>, <K> ) F228229`PermRep' calculates the permutation representation of the finitely230presented group <F> on the right cosets of the subgroup <K>, and returns231it as a permutation group of which the generators correspond to those232of <F>. It simply calls the {\GAP} Todd-Coxeter function. Of course,233there is no guarantee in general that this representation will be234faithful.235236%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%237\Section{Further Information}238239Suppose, as usual, that the cohomology record <chr> was constructed240with the call `CHR(<G>,<p>,[<F>],[<mats>] )'.241All of the functions make use of a strictly decreasing chain of subgroups242of the permutation group <G> starting with <G> itself and ending with a243Sylow <p>-subgroup <P> of <G>. In general, the programs run most efficiently244if the indices between successive terms in this sequence are as small as245possible. By default, {\GAP} will attempt to find a suitable chain, when246you call the first cohomology function on <chr>. However, you may be able247to construct a better chain yourself. If so, then you can do this248by assigning the record field <chr>`.chain' to the list <L> of subgroups249that you wish to use. You should do that before calling any of the250cohomology functions. Remeber that the first term in the list must be251<G> itself, the sequence of subgroups must be strictly decreasing,252and the last term must be equal to the Sylow subgroup stored as253<chr>`.sylow'. (You can change <chr>`.sylow' to a different Sylow254<p>-subgroup if you like.) Here is a slightly contrived example of this255process.256257\beginexample258gap> G:=AlternatingGroup(16);;259gap> chr:=CHR(G,2);;260gap> SetInfoLevel(InfoCohomolo,1);;261gap> SchurMultiplier(chr);262#Indices in the subgroup chain are: 2027025 315263#WARNING: An index in the subgroup chain found is larger than 50000.264#This calculation may fail. See manual for possible remedies.265#I Cohomolo package: Calling external program.266Out of tree space. Increase TRSP.267#I External program complete.268Error 'Cohomolo' failed for some reason.269at270Error( "'Cohomolo' failed for some reason.\n" );271Cohomology( chr, true, false, false, TmpName( ) ); called from272<function>( <arguments> ) called from read-eval-loop273Entering break read-eval-print loop, you can 'quit;' to quit to outer loop,274or you can return to continue275brk> quit;276277#The first index in the chain found by GAP was hopelessly large.278#Let's try and do better.279280gap> P:=chr.sylow;;281gap> H1:=Subgroup(G, [(1,2)(9,10), (2,3,4,5,6,7,8),282> (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)]);;283gap> Index(G,H1);2846435285gap> H2:=Subgroup(H1, [(1,2)(5,6),(1,2)(9,10), (2,3,4),286> (1,5)(2,6)(3,7)(4,8), (1,9)(2,10)(3,11)(4,12)(5,13)(6,14)(7,15)(8,16)]);;287gap> Index(H1,H2);2881225289gap> IsSubgroup(H2,P);290true291#If that had been false, we could have replaced chr.sylow by292#a Sylow 2-subgroup of H2.293gap> Index(H2,P);29481295gap> chr.chain := [G,H1,H2,P];;296gap> SchurMultiplier(chr);297#Calling external program.298#External program complete.299#Removing temporary files.300[ 2 ]301gap> quit;302\endexample303304305