The share package polycyclic provides methods to compute the first and second cohomology group for a pcp-group U and a finite dimensional ZU or FU module A where F is a finite field. The algorithm for determining the first cohomology group are outlined in Eic00.
First we need some methods to create a module for a pcp-group U. This
module can either be defined externally
via a matrix operation of U
or internally
using an elementary or free abelian normal subfactor.
CRRecordByMats(
U,
mats )
creates an external module. The input mats is a list of integer or finite field matrices. This list corresponds to Pcp(U) and defines the matrix action of the elements of Pcp(U).
CRRecordBySubgroup(
U,
A )
CRRecordByPcp(
U,
pcp )
creates an internal module. The input A or pcp defines an elementary or free abelian normal subgroup or subfactor of U.
The returned cohomology record C contains the following entries:
And additionally, if C defines an internal module, then it contains:
Let U be a pcp-group and A a free or elementary abelian pcp-group and a U-module. By Zi(U, A) be denote the group of i-th cocycles and by Bi(U, A) the i-th coboundaries. The factor Zi(U,A) / Bi(U,A) is the i-th cohomology group. Since A is elementary or free abelian, the groups Zi(U, A) and Bi(U, A) are elementary or free abelian groups as well.
The polycyclic share package provides methods to compute first and second cohomology group for a polycyclic group U. We write all involved groups additively and we use an explicit description by bases for them. Let C be the cohomology record corresponding to U and A.
Let f1, ¼, fn be the elements in the entry factor of the cohomology record C. Then we use the following embedding of the first cocycle group to describe 1-cocycles and 1-coboundaries: Z1(U, A) \ra An : d\ms (d(f1), ¼, d(fn))
For the second cohomology group we recall that each element of Z2(U, A) defines an extension H of A by U. Thus there is a pc-presentation of H extending the pc-presentation of U given by the record C. The extended presentation is defined by tails in A; that is, each relator in the record entry relators is extended by an element of A. The concatenation of these tails yields a vector in Al where l is the length of the record entry relators of C. We use these tail vectors to describe Z2(U, A) and B2(U, A). Note that this description is dependent on the chosen presentation in C. However, the factor Z2(U, A)/ B2(U, A) is independent of the chosen presentation.
The following functions are available to compute explicitly the first and second cohomology group as described above.
OneCoboundariesCR(
C )
OneCocyclesCR(
C )
TwoCoboundariesCR(
C )
TwoCocyclesCR(
C )
OneCohomologyCR(
C )
TwoCohomologyCR(
C )
The first 4 functions return bases of the corresponding group. The last 2 functions need to describe a factor of additive abelian groups. They return the following descriptions for these factors.
noindent advancehsize-2cm beginitems
In some cases more information on the first cohomology group is of interest. In particular, if we have an internal module given and we want to compute the complements using the first cohomology group, then we need additional information. This extended version of first cohomology is obtained by the following functions.
OneCoboundariesEX(
C )
returns a record consisting of the entries
basis
transf
fixpts
OneCocyclesEX(
C )
returns a record consisting of the entries
basis
transl
OneCohomologyEX(
C )
returns the combined information on the first cohomology group.
4.4 Extensions and Complements
The natural applications of first and second cohomology group is the determination of extensions and complements. Let C be a cohomology record.
ComplementCR(
C,
c )
returns the complement corresponding to the 1-cocycle c. In the case
that C is an external module, we construct the split extension of U
with A first and then determine the complement. In the case that C
is an internal module, the vector c must be an element of the affine
space corresponding to the complements as described by OneCocyclesEX
.
ComplementsCR(
C )
returns all complements using the correspondence to Z1(U,A). Further, this function returns fail, if Z1(U,A) is infinite.
ComplementClassesCR(
C )
returns complement classes using the correspondence to H1(U,A). Further, this function returns fail, if H1(U,A) is infinite.
ComplementClassesEfaPcps(
U,
N,
pcps )
Let N be a normal subgroup of U. This function returns the complement classes to N in U. The classes are computed by iteration over the U-invariant efa series of N described by pcps. If at some stage in this iteration infinitely many complements are discovered, then the function returns fail. (Even though there might be only finitely many conjugacy classes of complements to N in U.)
ComplementClasses( [
V,]
U,
N )
Let N and U be normal subgroups of V with N £ U £ V. This function attempts to compute the V-conjugacy classes of complements to N in U. The algorithm proceeds by iteration over a V-invariant efa series of N. If at some stage in this iteration infinitely many complements are discovered, then the algorithm returns fail.
ExtensionCR(
C,
c )
returns the extension corresponding to the 2-cocycle c.
ExtensionsCR(
C )
returns all extensions using the correspondence to Z2(U,A). Further, this function returns fail, if Z2(U,A) is infinite.
ExtensionClassesCR(
C )
returns extension classes using the correspondence to H2(U,A). Further, this function returns fail, if H2(U,A) is infinite.
SplitExtensionPcpGroup(
U,
mats )
returns the split extension of U by the U-module described by mats.
Polycyclic manual