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 \(G^n\) to the module \(M\), where elements of \(G^n\) are represented as an \(n\)-tuple \(\langle g_1, \ldots, g_n \rangle\) 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 \in G\).

\[z(\langle \rangle)^g = z(\langle \rangle);\]
\[o(\langle gh \rangle) = o(\langle g \rangle)^h + o(\langle h \rangle);\]
\[t(\langle gh,k \rangle) + t(\langle g,h \rangle)^k = t(\langle g,hk \rangle) + t(\langle h,k \rangle) .\]
ZeroCocycle(CM, s): ModCoho, SeqEnum -> UserProgram#
ZeroCocycle(CM, s): ModCoho, ModTupRngElt -> UserProgram#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and an element \(s\) of the cohomology group \(H^0(G,M)\) associated with \({\rm CM}\), this function returns the corresponding zero-cocycle. The zero-cocycle is returned as a function of the \(0\)-tuple \(\langle \rangle\), 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 \(H^0(G,M)\) or as a sequence of integers defining such an element.

IdentifyZeroCocycle(CM, s): ModCoho, UserProgram -> ModTupRngElt#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and a zero-cocycle given as a function of the \(0\)-tuple \(\langle \rangle\), of which the image is an element of the fixed point submodule of \(M\), this function returns the corresponding element of \(H^0(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 \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and an element \(s\) of the cohomology group \(H^1(G,M)\) associated with \({\rm 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 \(\langle g \rangle\). The argument \(s\) may either be given as an element of \(H^1(G,M)\) or as a sequence of integers defining such an element.

IdentifyOneCocycle(CM, s): ModCoho, UserProgram -> ModTupRngElt#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and a one-cycle \(s\) for \({\rm CM}\), specified as a function from \(G\) to the module \(M\) (where elements \(g\) of \(G\) are represented as \(1\)-tuples \(\langle g \rangle\)), this function returns the corresponding element of \(H^1(G,M)\). Thus, the function is the inverse to OneCocycle.

IsOneCoboundary(CM, s): ModCoho, UserProgram -> BoolElt, UserProgram#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and a one-cycle \(s\) for \({\rm CM}\), specified as a function from \(G\) to the module \(M\) (where elements \(g\) of \(G\) are represented as \(1\)-tuples \(\langle g \rangle\)), this function determines whether the cocycle is a 1-coboundary; that is, whether it corresponds to the zero element of \(H^1(G,M)\). If so, then it also returns a corresponding 0-cochain \(t(\langle \rangle)\) that satisfies \(s(\langle g \rangle) = t(\langle \rangle) - t(\langle \rangle)^g\) for all \(g \in G\).

TwoCocycle(CM, s): ModCoho, SeqEnum -> UserProgram#
TwoCocycle(CM, s): ModCoho, ModTupRngElt -> UserProgram#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and an element \(s\) of the cohomology group \(H^2(G,M)\) associated with \({\rm CM}\), the function returns a corresponding two-cocycle. The two-cocycle is returned as a function from \(G\times G\) to the module \(M\), where elements of \(G \times G\) are represented as \(2\)-tuples \(\langle g_1,g_2 \rangle\). The argument \(s\) may either be given as an element of \(H^2(G,M)\) or as a sequence of integers defining such an element.

IdentifyTwoCocycle(CM, s): ModCoho, UserProgram -> ModTupRngElt#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and a two-cycle \(s\) for \({\rm CM}\), specified as a function from \(G\times G\) to the module \(M\) (where elements of \(G \times G\) are represented as \(2\)-tuples \(\langle g_1,g_2 \rangle\)), this function returns the corresponding element of \(H^2(G,M)\). Thus, the function is the inverse to TwoCocycle.

IsTwoCoboundary(CM, s): ModCoho, UserProgram -> BoolElt, UserProgram#

Given a cohomology module \({\rm CM}\) constructed from the \(K[G]\)-module \(M\) and a two-cycle \(s\) for \({\rm CM}\), specified as a function from \(G\) to the module \(M\) (where elements of \(G \times G\) are represented as \(2\)-tuples \(\langle g_1,g_2 \rangle\)), this function determines whether the cocycle is a 2-coboundary; that is, whether it corresponds to the zero element of \(H^2(G,M)\). If so, then it also returns a corresponding 1-cochain \(t(\langle g \rangle)\) that satisfies \(s(\langle g,h \rangle) = t(\langle g \rangle)^h + t(\langle h \rangle) - t(\langle gh \rangle)\) for all \(g, h \in G\).

Example: cocycles (ex-d41d4c)#

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)

Run in calculator