Cocycles

Before invoking the functions in this section, it is necessary to first invoke the function CohomologyGroup(CM, n) for the appropriate n.

For n = 0, 1 or 2, an n-cocycle is a function from Gn to the module M, where elements of Gn are represented as an n-tuple < g1, ..., gn > of group elements, for which a certain relation is satisfied. These relations are consistent with the Magma convention of the use of right actions, and so they are slightly different from those encountered in many textbooks, where left actions are more common.

0-, 1- and 2-cocycles z, o and t, respectively, satisfy the following relations for all g, h, ∈G. z(< >)g = z(< >); o(< gh >) = o(< g >)h + o(< h >); t(< gh, k >) + t(< g, h >)k = t(< g, hk >) + t(< h, k >) .

ZeroCocycle(CM, s) : ModCoho, SeqEnum -> UserProgram
ZeroCocycle(CM, s) : ModCoho, ModTupRngElt -> UserProgram
Given a cohomology module (CM) constructed from the K[G]-module M and an element s of the cohomology group H0(G, M) associated with (CM), this function returns the corresponding zero-cocycle. The zero-cocycle is returned as a function of the 0-tuple < >, of which the image is an element of the fixed point submodule of M. The argument s may either be given as an element of H0(G, M) or as a sequence of integers defining such an element.
IdentifyZeroCocycle(CM, s) : ModCoho, UserProgram -> ModTupRngElt
Given a cohomology module (CM) constructed from the K[G]-module M and a zero-cocycle given as a function of the 0-tuple < >, of which the image is an element of the fixed point submodule of M, this function returns the corresponding element of H0(G, M). Hence this function is the inverse function to ZeroCocycle.
OneCocycle(CM, s) : ModCoho, SeqEnum -> UserProgram
OneCocycle(CM, s) : ModCoho, ModTupRngElt -> UserProgram
Given a cohomology module (CM) constructed from the K[G]-module M and an element s of the cohomology group H1(G, M) associated with (CM), the function returns a corresponding one-cocycle. The one-cocycle is returned as a function from G to the module M, where elements g of G are represented as 1-tuples < g >. The argument s may either be given as an element of H1(G, M) or as a sequence of integers defining such an element.
IdentifyOneCocycle(CM, s) : ModCoho, UserProgram -> ModTupRngElt
Given a cohomology module (CM) constructed from the K[G]-module M and a one-cycle s for (CM), specified as a function from G to the module M (where elements g of G are represented as 1-tuples < g >), this function returns the corresponding element of H1(G, M). Thus, the function is the inverse to OneCocycle.
IsOneCoboundary(CM, s) : ModCoho, UserProgram -> BoolElt, UserProgram
Given a cohomology module (CM) constructed from the K[G]-module M and a one-cycle s for (CM), specified as a function from G to the module M (where elements g of G are represented as 1-tuples < g >), this function determines whether the cocycle is a 1-coboundary; that is, whether it corresponds to the zero element of H1(G, M). If so, then it also returns a corresponding 0-cochain t(< >) that satisfies s(< g >) = t(< >) - t(< >)g for all g ∈G.
TwoCocycle(CM, s) : ModCoho, SeqEnum -> UserProgram
TwoCocycle(CM, s) : ModCoho, ModTupRngElt -> UserProgram
Given a cohomology module (CM) constructed from the K[G]-module M and an element s of the cohomology group H2(G, M) associated with (CM), the function returns a corresponding two-cocycle. The two-cocycle is returned as a function from G x G to the module M, where elements of G x G are represented as 2-tuples < g1, g2 >. The argument s may either be given as an element of H2(G, M) or as a sequence of integers defining such an element.
IdentifyTwoCocycle(CM, s) : ModCoho, UserProgram -> ModTupRngElt
Given a cohomology module (CM) constructed from the K[G]-module M and a two-cycle s for (CM), specified as a function from G x G to the module M (where elements of G x G are represented as 2-tuples < g1, g2 >), this function returns the corresponding element of H2(G, M). Thus, the function is the inverse to TwoCocycle.
IsTwoCoboundary(CM, s) : ModCoho, UserProgram -> BoolElt, UserProgram
Given a cohomology module (CM) constructed from the K[G]-module M and a two-cycle s for (CM), specified as a function from G to the module M (where elements of G x G are represented as 2-tuples < g1, g2 >), this function determines whether the cocycle is a 2-coboundary; that is, whether it corresponds to the zero element of H2(G, M). If so, then it also returns a corresponding 1-cochain t(< g >) that satisfies s(< g, h >) = t(< g >)h + t(< h >) - t(< gh >) for all g, h ∈G.

Example GrpCoh_cocycles (H74E11)

An easy example where the module is an abelian group defined by its invariant factors.
> G := PermutationGroup< 4 | (1,2,3,4) >;
> invar:=[2,4,4];
> mats := [ Matrix(Integers(),3,3,[1,2,0,0,0,1,0,1,2]) ];
> X := CohomologyModule(G,invar,mats);
> C := CohomologyGroup(X,0);
> C;
Full Quotient RSpace of degree 1 over Integer Ring
Column moduli:
[ 4 ]
> ZeroCocycle(X,[3]);
function(tp) ... end function
> $1(X);
(-1 -1 -3)
> IdentifyZeroCocycle(X,func<x|-$1>);
(1)
> C := CohomologyGroup(X,1);
> C;
Full Quotient RSpace of degree 2 over Integer Ring
Column moduli:
[ 2, 2 ]
> z1 := OneCocycle(X,[1,0]);
> z2 := OneCocycle(X,[0,1]);
> z1(<G.1>);
(1 0 0)
> z := func< x | z1(x)+z2(x) >;
> IdentifyOneCocycle(X,z);
(1 1)
> C := CohomologyGroup(X,2);
> C;
Full Quotient RSpace of degree 1 over Integer Ring
Column moduli:
[ 4 ]
> z1 := TwoCocycle(X,[1]);
> z1(<G.1,G.1^2>);
(1 1 3)
> z := func< xy | z1(xy)+z1(xy) >;
> IdentifyTwoCocycle(X,z);
(2)
V2.28, 13 July 2023