The facilities developed for group cohomology are described at length in Chapter COHOMOLOGY AND EXTENSIONS. In this section descriptions of some basic intrinsics are repeated for convenience.
Given a finite group G and a K[G]-module M, where K is a finite field, this intrinsic returns a cohomology module for the action of G. The group G may be a finite permutation group, a finite matrix group, a conditioned PC-group, or any finitely presented group. Much of the Magma cohomology machinery requires a cohomology module to be defined in order to compute cohomology groups etc.
Given a cohomology module CM for the group G acting on the module M and a non-negative integer n taking one of the values 0, 1 or 2, this function returns the cohomology group Hn(G, M).
Given a cohomology module CM for the group G acting on the module M defined over a finite field K and a non-negative integer n taking one of the values 0, 1 or 2, this function returns the dimension of Hn(G, M) over K. Note that this function may only be applied to the module returned by a call to CohomologyModule(G, M), where M is a module over a finite field K. When n = 2, this function is faster and may be applied to much larger examples than CohomologyGroup(CM, n) but, unlike that function, it does not enable the user to compute with explicit extensions and two-cocycles.
For K[G]-module M (with K a finite field and G a finite group), compute and return the K-dimension of the cohomology group Hn(G, M) for n ≥0. For n=0 and 1, this is carried out by using the functions described in Chapter COHOMOLOGY AND EXTENSIONS. For n ≥2, it is done recursively using projective covers and dimension shifting to reduce to the case n=1. (In particular, for n=2, the method is different from that employed by the corresponding function for a cohomology module described in Chapter COHOMOLOGY AND EXTENSIONS.)
For K[G]-module M (with K a finite field and G a finite group), compute and return the sequence of K-dimensions of the cohomology groups Hk(G, M) for 1 ≤k ≤n. On account of the recursive method used, this is quicker than computing them individually.
> G := PSL(3, 3); > Irrs := AbsolutelyIrreducibleModules(G, GF(3)); > M := Irrs[6]; > M; GModule of dimension 7 over GF(3) > CM := CohomologyModule(G, M); > CohomologyGroup(CM, 1); Full Vector space of degree 1 over GF(3) > CohomologyGroup(CM, 2); Full Vector space of degree 2 over GF(3)All other absolutely irreducible modules for PSL(3, 3) over GF(3) have trivial first and second cohomology groups.
> G := Alt(8); > K := GF(2); > irr := IrreducibleModules(G, K); > time [ CohomologicalDimension(I, 1) : I in irr ]; [ 0, 0, 0, 1, 1, 1, 1, 0 ] Time: 0.000 > time [ CohomologicalDimension(I, 2) : I in irr ]; [ 1, 1, 1, 0, 2, 0, 0, 0 ] Time: 0.100 > time [ CohomologicalDimension(I, 3) : I in irr ]; [ 2, 1, 1, 1, 1, 1, 1, 0 ] Time: 2.400 > time [ CohomologicalDimension(I, 4) : I in irr ]; [ 2, 1, 1, 2, 3, 2, 2, 0 ] Time: 11.730 > time CohomologicalDimensions(irr[1], 6); [ 0, 1, 2, 2, 3, 6 ] Time: 14.240
For K[G]-modules M and N where K is a finite field, the K-vector Ext(M, N) of equivalence classes of K[G]-module extensions 0 -> N -> L -> M -> 0 of N by M can be computed, and the corresponding extensions L constructed.
Given K[G]-modules M and N where K is a finite field, construct the K-vector space Ext(M, N) of equivalence classes of K[G]-module extensions of N by M.
Given K[G]-modules M and N, where K is a finite field, construct a K[G]-module extension L of N by M corresponding to the element e of E, where E and φ must be the vector space and map returned by a previous call of Ext(M,N). The insertion N -> L and projection L -> M are also returned.
Let M and N be K[G]-modules, where K is a finite field, and further let E be the vector space and r the map returned by a previous call of Ext(M, N). Construct the largest possible K[G]-module extension L of a direct sum of copies of N by M, such that none of the submodules of L that are isomorphic to N has a complement in L.
This is the same as MaximalExtension(M, N, E, r), but Ext(M,N) is called from within the function.
A version of MaximalExtension(M, N) that replaces M by the result.
> G := Alt(5); > I := IrreducibleModules(G, GF(2)); > I; [ GModule of dimension 1 over GF(2), GModule of dimension 4 over GF(2), GModule of dimension 4 over GF(2) ] > M1 := rep{M: M in I | Dimension(M) eq 1}; > M4 := rep{M: M in I | Dimension(M) eq 4 and not IsAbsolutelyIrreducible(M)}; > M4; assert not IsAbsolutelyIrreducible(M4); GModule M of dimension 4 over GF(2) > E, phi := Ext(M4, M1); > E; Full Vector space of degree 2 over GF(2) > Extension(M4, M1, E.1, phi); GModule of dimension 5 over GF(2) [0 0 0 0 1] [1 0 0 0] [0 1 0 0] [0 0 1 0] [0 0 0 1] [0 0 0 0] > E := MaximalExtension(M4, M1); > E; GModule E of dimension 6 over GF(2) > CompositionFactors(E); [ GModule of dimension 1 over GF(2), GModule of dimension 1 over GF(2), GModule of dimension 4 over GF(2) ]
Let G be a permutation group, a matrix group or a group defined by a power-commutator presentation and let K be a finite field. This intrinsic constructs a representative of each isomorphism class of K[G]-modules of dimension at most n. It computes them by systematically constructing extensions of modules, starting with the irreducibles