Galois Cohomology

Magma has some rudimentary functions to aid computations in Galois cohomology of number fields.

Hilbert90(a, M) : FldNumElt, Map[FldNum, FldNum] -> FldNumElt
    S: [RngOrdIdl]                      Default: false
Let K be a number field and M:K to K be an automorphism of K furthermore, denote by k the fixed field of M, thus M generates the automorphism group of the relative cyclic extension K/k. For some element a in K, such that NK/k(a) = 1, this function will find some element b such that a=b/M(b). If S is given it should contain a sequence of prime ideals such that there exists some b in the S-unit group over S.
SUnitCohomologyProcess(S, U) : {RngOrdIdl}, GrpPerm -> {1}
    ClassGroup: BoolElt                 Default: false
    Ramification: BoolElt               Default: false
Let k be a normal number field with (abstract) automorphism group G. For a set of prime ideals S of k, which is closed under the action of the subgroup U of G, a process is created that allows working with the cohomology of the multiplicative group of k - partially represented by a group of S-units. If ClassGroup is given, the set S is enlarged to support the current generators of the class group. If Ramification is present, then all ramified primes are also included in S.

During the computations with this object the set S can be increased to allow the representation of a larger number of elements.

IsGloballySplit(C, l) : , UserProgram -> BoolElt, UserProgram
    Sub: GrpPerm                        Default: false
    SetVerbose("Cohomology", n):        Maximum: 2
For a cohomology process C as created by SUnitCohomologyProcess and a 2-cocycle l:U x U to k given as a Magma-function, decide if l is split, ie. if there exists a 1-cochain m:U to k such that δ m = l for the cohomological coboundary map δ. If Sub is given it has to be a subgroup of the automorphism group of the number field underlying the cohomology process, otherwise the full automorphism group is used. This allows to restrict a cocycle easily.

As a fixed cocycle l assumes only finitely many values, we can consider it as a cocycle with values in some suitable S-unit group. Similarly, it is exists, m also has values in some S'-unit group for a potentially larger set S'. This function first tries to "remove" ideals from the support of l, to make the set S as small as possible. Then the set is enlarged to make sure that m, if exists, can be found with values in the S'=S-unit group. Since the final problem now involves only finitely generated abelian groups, it can be solved by Magma's general cohomology machinery.

IsSplitAsIdealAt(I, l) : RngOrdFracIdl, UserProgram -> BoolElt, UserProgram, [RngOrdIdl]
    Sub: GrpPerm                        Default: false
Let U be a subgroup of the automorphism group G of some number field k, l:U x U to k * a 2-cocycle and I some ideal in k. If Sub is given, U is taken to be Sub, otherwise U := G. Assuming that each element l(u, v) has a valuation at all ideals in the U-orbit of I, ie. we have a unique decomposition of ideals l(u, v) = Jx(u, v) A(u, v) for integers x(u, v) and ideals A(u, v) coprime to J for all J in IU. Then we can use l to define a cocycle with values in IU which is a finitely generated group. This function determines if this cocycle splits, and if so, computes a 1-cochain with values in IU for some fixed ordering of IU. The cochain and IU are returned on success.
V2.28, 13 July 2023