36.22 1-Cohomology

Let G be a finite group and M an elementary abelian normal p-subgroup of G. Then the group of 1-cocycles Z1( G/M, M ) is defined as

% Z^1(G/M,M)={ y: G/M -> M | For all g1,g2 in G holds: 
%                             y(g1 M * g2 M)= y(g1 M)^g2 * y(g2 M)
and is a GF(p)-vector space.

The group of 1-coboundaries B1( G/M, M ) is defined as

% B^1(G/M,M)={ y: G/M -> M | There is a m in M such that for all g in G
%                              y(gM)=m^-1*g*m   holds }
It also is a GF(p)-vector space.

Let a be the isomorphism of M into a row vector space W and (g1, ..., gl) representatives for a generating set of G/M. Then there exists a monomorphism b of Z1( G/M, M ) in the l-fold direct sum of W, such that b( g) = ( a( g( g1M ) ), ..., a( g( glM ) ) ) for every g Î Z1( G/M, M ).

  • OneCocycles( G, M ) O
  • OneCocycles( gens, M ) O
  • OneCocycles( G, mpcgs ) O
  • OneCocycles( gens, mpcgs ) O

    Computes the group of 1-Cocycles Z1(G /M ,M ). The normal subgroup M may be given by a (Modulo)Pcgs mpcgs. In this case the whole calculation is performed modulo the normal subgroup defined by the DenominatorOfModuloPcgs(mpcgs) (see Polycyclic Generating Systems). Similarly the group G may instead be specified by a set of elements gens that are representatives for a generating system for the factor group G/M. If this is done the 1-Cocycles are computed with respect to these generators (otherwise the routines try to select suitable generators themselves).

  • OneCoboundaries( G, M ) O

    computes the group of 1-coboundaries. Syntax of input and output otherwise is the same as with OneCocycles except that entries that refer to cocycles are not computed.

    The operations OneCocycles and OneCoboundaries return a record with (at least) the components:

    generators
    Is a list of representatives for a generating set of G/M. Cocycles are represented with respect to these generators.

    oneCocycles
    A space of row vectors over GF( p), representing Z1. The vectors are represented in dimension a·b where a is the length of generators and pb the size of M.

    oneCoboundaries
    A space of row vectors that represents B1.

    cocycleToList
    is a function to convert a cocycle (a row vector in oneCocycles) to a corresponding list of elements of M.

    listToCocycle
    is a function to convert a list of elements of M to a cocycle.

    isSplitExtension
    indicates whether G splits over M. The following components are only bound if the extension splits. Note that if M is given by a modulo pcgs all subgroups are given as subgroups of G by generators corresponding to generators and thus may not contain the denominator of the modulo pcgs. In this case taking the closure with this denominator will give the full preimage of the complement in the factor group.

    complement
    One complement to M in G.

    cocycleToComplement(cyc)
    is a function that takes a cocycle from oneCocycles and returns the corresponding complement to M in G (with respect to the fixed complement complement).

    complementToCocycle(U)
    is a function that takes a complement and returns the corresponding cocycle.

    If the factor G/M is given by a (modulo) pcgs gens then special methods are used that compute a presentation for the factor implicitly from the pcgs.

    Note that the groups of 1-cocycles and 1-coboundaries are not Groups in the sense of GAP but vector spaces.

    gap> g:=Group((1,2,3,4),(1,2));;
    gap> n:=Group((1,2)(3,4),(1,3)(2,4));;
    gap> oc:=OneCocycles(g,n);
    rec( oneCoboundaries := <vector space over GF(2), with 2 generators>, 
      oneCocycles := <vector space over GF(2), with 2 generators>, 
      generators := [ (3,4), (2,4,3) ], isSplitExtension := true, 
      complement := Group([ (3,4), (2,4,3) ]), 
      cocycleToList := function( c ) ... end, 
      listToCocycle := function( L ) ... end, 
      cocycleToComplement := function( c ) ... end, 
      factorGens := [ (3,4), (2,4,3) ], 
      complementToCocycle := function( K ) ... end )
    gap> oc.cocycleToList([ 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ]);
    [ (1,2)(3,4), (1,2)(3,4) ]
    gap> oc.listToCocycle([(),(1,3)(2,4)]);
    [ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ]
    gap> oc.cocycleToComplement([ 0*Z(2), Z(2)^0, 0*Z(2), Z(2)^0 ]);
    Group( [ (1,2), (1,2,3) ] )
    gap> oc.cocycleToComplement([ 0*Z(2), 0*Z(2), Z(2)^0, 0*Z(2) ]);
    Group( [ (3,4), (1,3,4) ] )
    gap> oc.complementToCocycle(Group((1,2,4),(1,4)));
    [ 0*Z(2), Z(2)^0, Z(2)^0, Z(2)^0 ]
    

    The factor group H1(G/M,M) = Z1(G/M,M)/B1(G/M,M) is called the first cohomology group. Currently there is no function which explicitly computes this group. The easiest way to represent it is as a vector space complement to B1 in Z1.

    If the only purpose of the calculation of H1 is the determination of complements it might be desirable to stop calculations once it is known that the extension cannot split. This can be achieved via the more technical function OCOneCocycles.

  • OCOneCocycles( ocr, onlySplit ) O

    is the more technical function to compute 1-cocycles. It takes an record ocr as first argument which must contain at least the components group for G and modulePcgs for a (modulo) pcgs of M. This record will also be returned with components as described under OneCocycles (with the exception of isSplitExtension which is indicated by the existence of a complement) but components such as oneCoboundaries will only be computed if not already present.

    If onlySplit is true, OneCocyclesOC returns false as soon as possible if the extension does not split.

  • ComplementclassesEA( G, N ) O

    computes Complementclasses to an elementary abelian normal subgroup N via 1-Cohomology. Normally, a user program should call Complementclasses (see Complementclasses) instead, which also works for a solvable (not necessarily elementary abelian) N.

  • InfoCoh V

    The info class for the cohomology calculations is InfoCoh.

    [Top] [Previous] [Up] [Next] [Index]

    GAP 4 manual
    February 2000