Degree-two Kummer theory for μₚ⊂ℚ̄^×
ProvedgroupCohomology.mem_levelCoboundaries2_of_pow_mem_and_exists_pow_sub_mem_of_zsmul_memFix a prime and a subgroup of the group of -algebra automorphisms of , together with a unit of that is a primitive -th root of unity and is fixed by every . Two coefficient systems for are used: the trivial representation Rep.trivial (ZMod p) ↥D (ZMod p), and the restriction along the inclusion D.subtype of the representation Rep.ofAlgebraAutOnUnits ℚ (AlgebraicClosure ℚ) of the automorphism group on the units of , written additively via Additive. For a function put , the power taken along the natural-number representative of the residue and transported into the additive copy of the unit group. For both coefficient systems, cocycles and coboundaries in degree two are taken in the sense of levelCocycles₂ and levelCoboundaries₂ relative to the map D.subtype. The assertion is the conjunction of: (1) if lies in levelCocycles₂ for the trivial -coefficients and lies in levelCoboundaries₂ for the unit-group coefficients, then lies in levelCoboundaries₂ for the trivial coefficients; and (2) if lies in levelCocycles₂ and lies in levelCoboundaries₂, then there is in levelCocycles₂ for the trivial -coefficients with in levelCoboundaries₂.
This is the degree-two part of the Kummer sequence in cocycle form: part (1) expresses injectivity and part (2) surjectivity onto the -torsion of the map from to , for the degree-two cohomology computed by cocycles and coboundaries of the indicated level with respect to the inclusion of . It feeds into groupCohomology.exists_forall_eq_res_continuousH2Sr_trivial_add_smul_of_exists_sq_eq_neg_one, where local classes are compared with classes coming from -coefficients.
import Mathlib import Definitions.Def_GroupCohomology_ContinuousH2 set_option maxHeartbeats 4000000 set_option synthInstance.maxHeartbeats 400000 set_option backward.isDefEq.respectTransparency.types false set_option autoImplicit false open CategoryTheory groupCohomology
theorem groupCohomology.mem_levelCoboundaries2_of_pow_mem_and_exists_pow_sub_mem_of_zsmul_mem
{p : ℕ} [Fact p.Prime] (D : Subgroup (AlgebraicClosure ℚ ≃ₐ[ℚ] AlgebraicClosure ℚ))
(ζ : (AlgebraicClosure ℚ)ˣ) (hζ : IsPrimitiveRoot ζ p) (hD : ∀ σ ∈ D, σ • ζ = ζ) :
(∀ z : ↥D × ↥D → ZMod p, z ∈ levelCocycles₂ D.subtype (Rep.trivial (ZMod p) ↥D (ZMod p)) →
(fun g => Additive.ofMul (ζ ^ (z g).val) : ↥D × ↥D → Additive (AlgebraicClosure ℚ)ˣ) ∈
levelCoboundaries₂ D.subtype (Rep.res D.subtype (Rep.ofAlgebraAutOnUnits ℚ (AlgebraicClosure ℚ))) →
z ∈ levelCoboundaries₂ D.subtype (Rep.trivial (ZMod p) ↥D (ZMod p))) ∧
(∀ X : ↥D × ↥D → Additive (AlgebraicClosure ℚ)ˣ,
X ∈ levelCocycles₂ D.subtype (Rep.res D.subtype (Rep.ofAlgebraAutOnUnits ℚ (AlgebraicClosure ℚ))) →
(p : ℤ) • X ∈ levelCoboundaries₂ D.subtype (Rep.res D.subtype (Rep.ofAlgebraAutOnUnits ℚ (AlgebraicClosure ℚ))) →
∃ z : ↥D × ↥D → ZMod p, z ∈ levelCocycles₂ D.subtype (Rep.trivial (ZMod p) ↥D (ZMod p)) ∧
X - (fun g => Additive.ofMul (ζ ^ (z g).val)) ∈
levelCoboundaries₂ D.subtype (Rep.res D.subtype (Rep.ofAlgebraAutOnUnits ℚ (AlgebraicClosure ℚ)))) := by sorry