Definitions/Def_GroupCohomology_TateSeam.lean
Connecting maps joining group homology and cohomology, Tate degrees
Throughout, k is a commutative ring, G a finite group and X a short complex X_1 \xrightarrow{f} X_2 \xrightarrow{g} X_3 of k-linear G-representations, assumed short exact (X.ShortExact: f mono, g epi, middle exact). Recall from the Tate cohomology definitions that N = \sum_{h\in G}\rho(h), that \bar N is the induced map normBar from coinvariants to invariants, and that \hat H^0(A) = A^G/\operatorname{range}\bar N (tateH0), \hat H^{-1}(A) = \ker\bar N (tateHneg1).
seamT X is the submodule of X_2 of those b with N(g(b)) = 0. For such b one has N b \in \operatorname{range} f, so seamψ sends b to the unique a \in X_1 with f(a) = N b; seamψ_mem_invariants records a \in X_1^G, and seamψbar is the resulting map to \hat H^0(X_1). seamθ sends b to the class of g(b) in the coinvariants of X_3, which lies in \ker\bar N; it is surjective and its kernel is contained in that of seamψbar, so tateδneg1 is the induced linear map \hat H^{-1}(X_3) \to \hat H^0(X_1), pinned down by tateδneg1_mk: if N(g(b)) = 0 and f(a) = N b with a invariant, then the class of g(b) maps to the class of a.
In the graded section (all of k, G, X in one universe) tateδ₀ is the descent of Mathlib's connecting map X_3^G \cong H^0(X_3) \to H^1(X_1) along the quotient by \operatorname{range}\bar N, giving \hat H^0(X_3) \to H^1(G,X_1), and tateδneg2 is Mathlib's homological connecting map H_1(X_3) \to H_0(X_1) followed by the identification of H_0(X_1) with the coinvariants, corestricted to \ker\bar N = \hat H^{-1}(X_1). Auxiliary lemmas supply injectivity of f, surjectivity of g, the identification of \operatorname{range} f with \ker g, vanishing of N on the coinvariants kernel, and surjectivity of g on those kernels.
Relation to Mathlib
Mathlib provides group cohomology and homology with their long exact sequences (groupCohomology.δ, groupHomology.δ, the degree-zero identifications H0Iso) but no Tate cohomology; the Tate groups in degrees 0 and -1 and the three connecting maps defined here are the project's own.
Where it is used
These maps join Mathlib's long exact sequences in group cohomology and in group homology into a single long exact sequence of Tate cohomology groups of a finite group, the exactness statements at each vertex being proved in modules built over this one.
References
- J. W. S. Cassels and A. Fröhlich (eds.), Algebraic Number Theory, Academic Press, 1967, Chapter IV, §6
- J.-P. Serre, Local Fields, Graduate Texts in Mathematics 67, Springer, 1979, Chapter VIII, §1
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 178 lines
- 27 declarations
- used in the statements of 44 theorems and imported by 53 proofs
- imports 1 definition modules
Source file: Definitions/Def_GroupCohomology_TateSeam.lean
Declarations
- lemma
Rep.seam_range_eq_ker - lemma
Rep.seam_f_injective - lemma
Rep.seam_g_surjective - lemma
Rep.seam_g_f_apply - lemma
Rep.norm_eq_zero_of_mem_coinvariantsKer - lemma
Rep.coinvariantsKer_le_map - def
Rep.seamT - lemma
Rep.mem_seamT_iff - lemma
Rep.norm_mem_range_of_mem_seamT - def
Rep.seamψ - lemma
Rep.f_seamψ - lemma
Rep.seamψ_mem_invariants - def
Rep.seamψbar - def
Rep.seamθ - lemma
Rep.coe_seamθ_apply - lemma
Rep.seamθ_surjective - lemma
Rep.ker_seamθ_le - def
Rep.tateδneg1 - lemma
Rep.tateδneg1_mk - lemma
Rep.δ₀_normToInvariants - lemma
Rep.range_normBar_le_ker_δ₀ - def
Rep.tateδ₀ - lemma
Rep.tateδ₀_mk - lemma
Rep.coinvariantsMap_H0Iso_δ - lemma
Rep.normBar_H0Iso_δ - def
Rep.tateδneg2 - lemma
Rep.coe_tateδneg2_apply
Source
import Mathlib import Definitions.Def_GroupCohomology_TateCohomology set_option autoImplicit false universe u v w open CategoryTheory noncomputable section namespace Rep section SeamLow variable {k : Type u} {G : Type v} [CommRing k] [Group G] {X : ShortComplex (Rep.{w} k G)} lemma seam_range_eq_ker (hX : X.ShortExact) : LinearMap.range X.f.hom.toLinearMap = LinearMap.ker X.g.hom.toLinearMap := (hX.exact.map (forget₂ (Rep k G) (ModuleCat k))).moduleCat_range_eq_ker lemma seam_f_injective (hX : X.ShortExact) : Function.Injective X.f.hom := (Rep.mono_iff_injective X.f).1 hX.mono_f lemma seam_g_surjective (hX : X.ShortExact) : Function.Surjective X.g.hom := (Rep.epi_iff_surjective X.g).1 hX.epi_g lemma seam_g_f_apply (X : ShortComplex (Rep.{w} k G)) (a : X.X₁) : X.g.hom (X.f.hom a) = 0 := by rw [← Rep.comp_apply, X.zero]; rfl lemma norm_eq_zero_of_mem_coinvariantsKer (A : Rep.{w} k G) [Fintype G] {x : A} (hx : x ∈ Representation.Coinvariants.ker A.ρ) : A.ρ.norm x = 0 := by have h : A.ρ.normBar (Representation.Coinvariants.mk A.ρ x) = 0 := by rw [show Representation.Coinvariants.mk A.ρ x = 0 from (Submodule.Quotient.mk_eq_zero _).2 hx, map_zero] exact congrArg Subtype.val h lemma coinvariantsKer_le_map (hX : X.ShortExact) : Representation.Coinvariants.ker X.X₃.ρ ≤ (Representation.Coinvariants.ker X.X₂.ρ).map X.g.hom.toLinearMap := by refine Submodule.span_le.2 ?_ rintro _ ⟨⟨h, c⟩, rfl⟩ obtain ⟨b, rfl⟩ := seam_g_surjective hX c exact ⟨X.X₂.ρ h b - b, Representation.Coinvariants.sub_mem_ker h b, by simp [Rep.hom_comm_apply]⟩ variable [Fintype G] def seamT (X : ShortComplex (Rep.{w} k G)) : Submodule k X.X₂ := (LinearMap.ker X.X₃.ρ.norm).comap X.g.hom.toLinearMap lemma mem_seamT_iff (X : ShortComplex (Rep.{w} k G)) (b : X.X₂) : b ∈ seamT X ↔ X.X₃.ρ.norm (X.g.hom b) = 0 := Iff.rfl lemma norm_mem_range_of_mem_seamT (hX : X.ShortExact) {b : X.X₂} (hb : b ∈ seamT X) : X.X₂.ρ.norm b ∈ LinearMap.range X.f.hom.toLinearMap := by rw [seam_range_eq_ker hX, LinearMap.mem_ker, Representation.IntertwiningMap.toLinearMap_apply, Rep.hom_norm_apply] exact hb def seamψ (hX : X.ShortExact) : seamT X →ₗ[k] X.X₁ := (LinearEquiv.ofInjective X.f.hom.toLinearMap (seam_f_injective hX)).symm.toLinearMap ∘ₗ LinearMap.codRestrict _ (X.X₂.ρ.norm ∘ₗ (seamT X).subtype) (fun b => norm_mem_range_of_mem_seamT hX b.2) lemma f_seamψ (hX : X.ShortExact) (b : seamT X) : X.f.hom (seamψ hX b) = X.X₂.ρ.norm b := congrArg Subtype.val ((LinearEquiv.ofInjective X.f.hom.toLinearMap (seam_f_injective hX)).apply_symm_apply ⟨X.X₂.ρ.norm b, norm_mem_range_of_mem_seamT hX b.2⟩) lemma seamψ_mem_invariants (hX : X.ShortExact) (b : seamT X) : seamψ hX b ∈ X.X₁.ρ.invariants := by rw [Representation.mem_invariants] intro h apply seam_f_injective hX rw [Rep.hom_comm_apply, f_seamψ] exact (Representation.mem_invariants _ _).1 (Representation.norm_apply_mem_invariants _ _) h def seamψbar (hX : X.ShortExact) : seamT X →ₗ[k] X.X₁.tateH0 := (LinearMap.range X.X₁.ρ.normBar).mkQ ∘ₗ LinearMap.codRestrict _ (seamψ hX) (seamψ_mem_invariants hX) def seamθ (X : ShortComplex (Rep.{w} k G)) : seamT X →ₗ[k] X.X₃.tateHneg1 := LinearMap.codRestrict _ (Representation.Coinvariants.mk X.X₃.ρ ∘ₗ X.g.hom.toLinearMap ∘ₗ (seamT X).subtype) (fun b => LinearMap.mem_ker.2 (Subtype.ext b.2)) lemma coe_seamθ_apply (X : ShortComplex (Rep.{w} k G)) (b : seamT X) : (seamθ X b : X.X₃.ρ.Coinvariants) = Representation.Coinvariants.mk X.X₃.ρ (X.g.hom b) := rfl lemma seamθ_surjective (hX : X.ShortExact) : Function.Surjective (seamθ X) := by rintro ⟨x, hx⟩ obtain ⟨c, rfl⟩ := Submodule.Quotient.mk_surjective _ x obtain ⟨b, rfl⟩ := seam_g_surjective hX c exact ⟨⟨b, congrArg Subtype.val (LinearMap.mem_ker.1 hx)⟩, rfl⟩ lemma ker_seamθ_le (hX : X.ShortExact) : LinearMap.ker (seamθ X) ≤ LinearMap.ker (seamψbar hX) := by intro b hb rw [LinearMap.mem_ker, Subtype.ext_iff, coe_seamθ_apply] at hb obtain ⟨i, hi, hgi⟩ := coinvariantsKer_le_map hX ((Submodule.Quotient.mk_eq_zero _).1 hb) have hbi : (b : X.X₂) - i ∈ LinearMap.range X.f.hom.toLinearMap := by rw [seam_range_eq_ker hX, LinearMap.mem_ker, map_sub, sub_eq_zero] exact hgi.symm obtain ⟨a₀, ha₀⟩ := hbi rw [LinearMap.mem_ker, seamψbar, LinearMap.comp_apply, Submodule.mkQ_apply, Submodule.Quotient.mk_eq_zero] refine ⟨Representation.Coinvariants.mk _ a₀, Subtype.ext (seam_f_injective hX ?_)⟩ rw [Representation.normBar_mk, Representation.coe_normToInvariants_apply, LinearMap.codRestrict_apply, f_seamψ, Rep.hom_norm_apply] change X.X₂.ρ.norm (X.f.hom.toLinearMap a₀) = _ rw [ha₀, map_sub, norm_eq_zero_of_mem_coinvariantsKer _ hi, sub_zero] def tateδneg1 (hX : X.ShortExact) : X.X₃.tateHneg1 →ₗ[k] X.X₁.tateH0 := (LinearMap.ker (seamθ X)).liftQ (seamψbar hX) (ker_seamθ_le hX) ∘ₗ ((seamθ X).quotKerEquivOfSurjective (seamθ_surjective hX)).symm.toLinearMap lemma tateδneg1_mk (hX : X.ShortExact) (b : X.X₂) (hb : X.X₃.ρ.norm (X.g.hom b) = 0) (a : X.X₁.ρ.invariants) (hab : X.f.hom a = X.X₂.ρ.norm b) : tateδneg1 hX (seamθ X ⟨b, hb⟩) = Submodule.Quotient.mk a := by rw [tateδneg1, LinearMap.comp_apply, LinearEquiv.coe_toLinearMap, (LinearEquiv.symm_apply_eq _).2 ((LinearMap.quotKerEquivOfSurjective_apply_mk (seamθ X) (seamθ_surjective hX) ⟨b, hb⟩).symm)] rw [Submodule.liftQ_apply, seamψbar, LinearMap.comp_apply, Submodule.mkQ_apply] congr 1 exact Subtype.ext (seam_f_injective hX ((f_seamψ hX ⟨b, hb⟩).trans hab.symm)) end SeamLow section SeamGraded variable {k G : Type u} [CommRing k] [Group G] [Fintype G] {X : ShortComplex (Rep.{u} k G)} lemma δ₀_normToInvariants (hX : X.ShortExact) (b : X.X₂) : groupCohomology.δ hX 0 1 rfl ((groupCohomology.H0Iso X.X₃).inv (X.X₃.ρ.normToInvariants (X.g.hom b))) = 0 := by rw [groupCohomology.δ₀_apply hX _ (X.X₂.ρ.norm b) (by rw [Representation.coe_normToInvariants_apply, Rep.hom_norm_apply]) 0 (by funext h change X.f.hom (0 : X.X₁) = X.X₂.ρ h (X.X₂.ρ.norm b) - X.X₂.ρ.norm b rw [map_zero, (Representation.mem_invariants _ _).1 (Representation.norm_apply_mem_invariants _ _) h, sub_self])] exact (groupCohomology.H1π_eq_zero_iff _).2 (Submodule.zero_mem _) lemma range_normBar_le_ker_δ₀ (hX : X.ShortExact) : LinearMap.range X.X₃.ρ.normBar ≤ LinearMap.ker ((groupCohomology.H0Iso X.X₃).inv ≫ groupCohomology.δ hX 0 1 rfl).hom := by rintro _ ⟨w, rfl⟩ obtain ⟨c, rfl⟩ := Submodule.Quotient.mk_surjective _ w obtain ⟨b, rfl⟩ := seam_g_surjective hX c exact δ₀_normToInvariants hX b def tateδ₀ (hX : X.ShortExact) : X.X₃.tateH0 →ₗ[k] groupCohomology X.X₁ 1 := (LinearMap.range X.X₃.ρ.normBar).liftQ (((groupCohomology.H0Iso X.X₃).inv ≫ groupCohomology.δ hX 0 1 rfl).hom) (range_normBar_le_ker_δ₀ hX) lemma tateδ₀_mk (hX : X.ShortExact) (z : X.X₃.ρ.invariants) : tateδ₀ hX (Submodule.Quotient.mk z) = groupCohomology.δ hX 0 1 rfl ((groupCohomology.H0Iso X.X₃).inv z) := rfl omit [Fintype G] in lemma coinvariantsMap_H0Iso_δ (hX : X.ShortExact) (z : groupHomology X.X₃ 1) : Rep.coinvariantsMap X.f ((groupHomology.H0Iso X.X₁).hom (groupHomology.δ hX 1 0 rfl z)) = 0 := by have hzero : groupHomology.map (MonoidHom.id G) X.f 0 (groupHomology.δ hX 1 0 rfl z) = 0 := congrArg (fun φ => φ.hom z) (groupHomology.mapShortComplex₁ hX (show 0 + 1 = 1 from rfl)).zero have := groupHomology.map_id_comp_H0Iso_hom_apply X.f (groupHomology.δ hX 1 0 rfl z) rw [hzero] at this exact this.symm.trans (LinearMap.map_zero _) lemma normBar_H0Iso_δ (hX : X.ShortExact) (z : groupHomology X.X₃ 1) : X.X₁.ρ.normBar ((groupHomology.H0Iso X.X₁).hom (groupHomology.δ hX 1 0 rfl z)) = 0 := by have hf : Function.Injective (Rep.invariantsMap X.f) := fun a a' h => Subtype.ext (seam_f_injective hX (congrArg Subtype.val h)) apply hf rw [map_zero, ← LinearMap.comp_apply, ← Rep.normBar_comp_coinvariantsMap, LinearMap.comp_apply, coinvariantsMap_H0Iso_δ hX z, map_zero] def tateδneg2 (hX : X.ShortExact) : groupHomology X.X₃ 1 →ₗ[k] X.X₁.tateHneg1 := LinearMap.codRestrict _ ((groupHomology.δ hX 1 0 rfl ≫ (groupHomology.H0Iso X.X₁).hom).hom) (fun z => by rw [LinearMap.mem_ker] exact normBar_H0Iso_δ hX z) @[simp] lemma coe_tateδneg2_apply (hX : X.ShortExact) (z : groupHomology X.X₃ 1) : (tateδneg2 hX z : X.X₁.ρ.Coinvariants) = (groupHomology.H0Iso X.X₁).hom (groupHomology.δ hX 1 0 rfl z) := rfl end SeamGraded end Rep end
Statements phrased using this module (44)
- ℤ-freeness of the relation module carrier
Rep.moduleFree_relationCarrier0 below · depth 19 - Exactness of the canonical free presentation over ℤ
Rep.relationSeqInt_shortExact0 below · depth 19 - Cup product with a degree-zero class on the right
Rep.IsTateCupProduct.cup_mk_right_eq_tateMap31 below · depth 20 - Tate–Nakayama surjectivity via a Tate-acyclic presentation
Rep.IsTateCupProduct.exists_tateNakayamaPairing_right_eq_of_shortExact102 below · depth 20 - Existence of a cup product on Tate cohomology
Rep.exists_isTateCupProduct43 below · depth 20 - Restriction of a free representation is Tate-acyclic
Rep.isZero_tateCohomology_res_free10 below · depth 20 - Finite generation of the relation module over ℤ
Rep.moduleFinite_relationCarrier0 below · depth 20 - Tate–Nakayama pairing: surjectivity in the right variable
Rep.IsTateCupProduct.exists_tateNakayamaPairing_right_eq101 below · depth 21 - Dimension shifting: δⁿ is bijective for the sequence 0→ A''→ Ind A→ A→ 0
Rep.bijective_tateDelta_dimShiftDown12 below · depth 21 - Dimension shifting: δ is bijective for 0→ A→ Ind Res A→ A'→ 0
Rep.bijective_tateDelta_dimShiftUp12 below · depth 21 - Bijectivity of the Tate connecting map when the middle term vanishes
Rep.bijective_tateDelta_of_isZero8 below · depth 21 - Tate dimension shifting along a Tate-acyclic extension
Rep.nonempty_tateCohomology_iso_of_shortExact_of_isZero6 below · depth 21 - Anticommutativity of Tate connecting maps in a 3× 3 diagram
Rep.tateDelta_comp_tateDelta_eq_neg0 below · depth 21 - Anticommutation of Tate connecting maps in a 3× 3 diagram
Rep.tateDelta_comp_tateDelta_eq_neg_of_hom0 below · depth 21 - Naturality of the Tate connecting maps in all degrees
Rep.tateDelta_naturality0 below · depth 21 - Tate's theorem in cup-product form with free coefficients
Rep.IsTateCupProduct.bijective_cup_of_h1_h279 below · depth 22 - Associativity of the Tate cup product in all degrees
Rep.IsTateCupProduct.cup_assoc33 below · depth 22 - Graded commutativity of the Tate cup product
Rep.IsTateCupProduct.cup_comm33 below · depth 22 - Right surjectivity of the integral Tate duality pairing
Rep.IsTateCupProduct.exists_cupEv_dual_right_eq55 below · depth 22 - Right non-degeneracy of Tate–Nakayama pairing after δ
Rep.IsTateCupProduct.tateNakayamaPairing_right_eq_zero_of_shortExact95 below · depth 22 - Exactness of H₁(B)→ H₁(C)→ ̂ H⁻¹(A) at H₁(C)
Rep.exact_map_tateDeltaNeg20 below · depth 22 - Exactness of ̂ H⁰(C) → H¹(A) → H¹(B)
Rep.exact_tateDelta0_map0 below · depth 22 - Exactness at ̂ H⁰(A) of the Tate sequence
Rep.exact_tateDeltaNeg1_tateH0Map0 below · depth 22 - Exactness at ̂ H⁻¹ of the Tate sequence
Rep.exact_tateDeltaNeg2_tateHneg1Map0 below · depth 22 - Exactness of the Tate long exact sequence at ̂ Hⁿ⁺¹(X₁)
Rep.exact_tateDelta_tateMap3 below · depth 22 - Exactness of Tate ̂ H⁰ at the third term
Rep.exact_tateH0Map_tateDelta00 below · depth 22 - Exactness of the Tate sequence at ̂ H⁻¹ of the quotient
Rep.exact_tateHneg1Map_tateDeltaNeg10 below · depth 22 - Exactness of the Tate sequence at ̂ Hⁿ(X₃)
Rep.exact_tateMap_tateDelta3 below · depth 22 - Functoriality of Tate cohomology: compatibility with composition
Rep.tateMap_comp0 below · depth 22 - Tate cohomology: the identity map induces the identity
Rep.tateMap_id0 below · depth 22 - Integral Tate duality via cup product, p+q=0
Rep.IsTateCupProduct.bijective_cupEv_dual_left54 below · depth 23 - Right non-degeneracy of the integral Tate pairing
Rep.IsTateCupProduct.cupEv_dual_right_eq_zero47 below · depth 23 - Cup product with a degree-0 Tate class is an induced map
Rep.IsTateCupProduct.cup_mk_left_eq_tateMap31 below · depth 23 - Cup product of invariant classes in degree (0,0)
Rep.IsTateCupProduct.cup_mk_mk32 below · depth 23 - Injectivity of Tate duality pairing in all degrees
Rep.IsTateCupProduct.injective_cupEv_characterDual40 below · depth 23 - Right non-degeneracy of the Tate–Nakayama pairing
Rep.IsTateCupProduct.tateNakayamaPairing_right_eq_zero94 below · depth 23 - Fundamental class via two Tate connecting maps
Rep.tateDelta_splitting_tateDelta_aug_eq_map_H2pi0 below · depth 23 - Right non-degeneracy of the Tate pairing against ℚ/ℤ
Rep.IsTateCupProduct.cupEv_characterDual_eq_zero40 below · depth 24 - Left non-degeneracy of the Tate pairing in degrees (-1,0)
Rep.IsTateCupProduct.injective_cupEv_negOne_characterDual33 below · depth 24 - Additivity of the Tate cohomology maps in the morphism
Rep.tateMap_add0 below · depth 24 - Compatible pairings annihilate the sum of Tate connecting maps
Rep.tateMap_tateDelta_add_tateMap_tateDelta_eq_zero8 below · depth 24 - Right non-degeneracy of the Tate pairing in degrees (-1,0)
Rep.IsTateCupProduct.cupEv_characterDual_zero_eq_zero33 below · depth 25 - Cup product ̂ H⁻¹×̂ H⁰→̂ H⁻¹ on explicit classes
Rep.IsTateCupProduct.cup_neg_one_mk32 below · depth 25 - Exactness of Tate cohomology functors on a short exact sequence
Rep.exact_tateMap_tateMap2 below · depth 27