Definitions/Def_NumberField_SIdeleModule.lean
The full -idèle module and its class quotient
Throughout, E and K are number fields with K an E-algebra, G = K \simeq_{\mathrm{alg}[E]} K is the group of E-algebra automorphisms of K, and S is a finite set of height-one primes of \mathcal{O}_E. The archimedean ingredients come first: for an infinite place v of E, locInf is the structure map K \to (completion of K at the chosen place w(v) = ArchIdele.above E K v above v), locInf_apply identifies it with the canonical coercion, and smul_locInf says that for \sigma in the decomposition subgroup (the stabiliser of w(v) in G) one has \sigma \cdot \mathrm{loc}(x) = \mathrm{loc}(\sigma x). On the S-unit module SUnits.sUnitsRep E K S — the \mathbb{Z}-module \mathrm{Additive} of the subgroup of x \in K^\times with w(\sigma x) = 1 for all \sigma \in G and all finite w of K lying under a prime outside S, with G acting by translation — diagFunInf is the \mathbb{Z}-linear map x \mapsto (g \mapsto \mathrm{loc}_{w(v)}(g \cdot x)) into functions G \to \mathrm{Additive}\,(K_{w(v)})^\times; diagFunInf_mem_coindV checks the equivariance condition cutting out the coinduced submodule, and diagInf packages the result as a morphism in \mathrm{Rep}\,\mathbb{Z}\,G into ArchIdele.fibre E K v, the coinduction from the decomposition subgroup of (K_{w(v)})^\times.
The index set Index is FiniteSIdele.Index E S ⊕ InfinitePlace E, i.e. \{v \in S\} \sqcup \{v \notin S\} \sqcup \{v \mid \infty\}, and fibre assigns to these, respectively, the coinduced modules of (K_{w(v)})^\times, of \mathcal{O}_{w(v)}^\times and of (K_{w(v)})^\times at the archimedean place. The S-idèle module obj is the single product representation over Index of these fibres; toFinite and toArch are the morphisms onto the finite and archimedean partial products obtained from the coordinate projections. The diagonal diag assembles the finite components of SUnits.diagComponent with the archimedean diagInf, and diag_toFinite records that \mathrm{diag} followed by toFinite is the finite diagonal SUnits.diag. Finally classObj is the quotient of obj by the image of diag, with the induced G-representation, toClass the quotient morphism, toClass_hom_apply_eq_zero_iff the criterion that a class vanishes exactly when the element lies in the image of the diagonal, and classSeq the short complex K_S \to J_{K,S} \to C_{K,S}.
Relation to Mathlib
The local factors use Mathlib's v-adic completions and InfinitePlace.Completion, but the S-idèle module is not Mathlib's adèle or idèle ring: it is built here as an explicit product, indexed by places of the base field E, of modules coinduced from decomposition subgroups, so that it is a product of G-representations place by place. Products and cokernels in \mathrm{Rep}\,\mathbb{Z}\,G are taken in the project's explicit presentations GroupCohomology.RepPi and GroupCohomology.RepCokernel.
Where it is used
These modules are the carriers for the cohomological computations of class field theory used in the argument: the explicit product form makes Shapiro's lemma and the product formulae for Tate cohomology applicable factor by factor, leading to the Herbrand quotient of J_{K,S} and, for cyclic K/E and S large enough, of the S-idèle class module C_{K,S}, which is what the first inequality needs.
References
- J. W. S. Cassels and A. Fröhlich (eds.), Algebraic Number Theory, Academic Press, 1967
- J. Neukirch, Algebraic Number Theory, Grundlehren der mathematischen Wissenschaften 322, Springer, 1999
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 115 lines
- 26 declarations
- used in the statements of 63 theorems and imported by 71 proofs
- imports 4 definition modules
Source file: Definitions/Def_NumberField_SIdeleModule.lean
Imports
Imported by
Declarations
- abbrev
NumberField.SIdele.locInf - theorem
NumberField.SIdele.locInf_apply - theorem
NumberField.SIdele.smul_locInf - def
NumberField.SIdele.diagFunInf - theorem
NumberField.SIdele.diagFunInf_apply - theorem
NumberField.SIdele.diagFunInf_mem_coindV - def
NumberField.SIdele.diagInf - theorem
NumberField.SIdele.diagInf_hom_apply_apply - abbrev
NumberField.SIdele.Index - def
NumberField.SIdele.fibre - theorem
NumberField.SIdele.fibre_inl - theorem
NumberField.SIdele.fibre_inr - abbrev
NumberField.SIdele.obj - def
NumberField.SIdele.toFinite - def
NumberField.SIdele.toArch - theorem
NumberField.SIdele.toFinite_hom_apply - theorem
NumberField.SIdele.toArch_hom_apply - def
NumberField.SIdele.diagComponent - def
NumberField.SIdele.diag - theorem
NumberField.SIdele.diag_hom_apply_inl - theorem
NumberField.SIdele.diag_hom_apply_inr - theorem
NumberField.SIdele.diag_toFinite - abbrev
NumberField.SIdele.classObj - abbrev
NumberField.SIdele.toClass - theorem
NumberField.SIdele.toClass_hom_apply_eq_zero_iff - abbrev
NumberField.SIdele.classSeq
Source
import Mathlib import Definitions.Def_GroupCohomology_RepPi import Definitions.Def_GroupCohomology_RepCokernel import Definitions.Def_NumberField_SIdeleClassModule import Definitions.Def_NumberField_ArchimedeanIdeleModule set_option autoImplicit false open IsDedekindDomain NumberField CategoryTheory open scoped NumberField.PlaceDecomp NumberField.InfPlaceDecomp namespace NumberField.SIdele variable (E K : Type) [Field E] [NumberField E] [Field K] [NumberField K] [Algebra E K] noncomputable abbrev locInf (v : InfinitePlace E) : K →+* (NumberField.ArchIdele.above E K v).Completion := algebraMap K _ theorem locInf_apply (v : InfinitePlace E) (x : K) : locInf E K v x = ((WithAbs.equiv (NumberField.ArchIdele.above E K v).1).symm x : (NumberField.ArchIdele.above E K v).Completion) := rfl theorem smul_locInf (v : InfinitePlace E) (σ : NumberField.InfPlaceDecomp.decomp E K (NumberField.ArchIdele.above E K v)) (x : K) : σ • locInf E K v x = locInf E K v ((σ : K ≃ₐ[E] K) x) := by rw [NumberField.InfPlaceDecomp.smul_def, locInf_apply, locInf_apply, NumberField.InfPlaceDecomp.actRingEquiv_coe, WithAbs.congr_apply] rfl variable (S : Finset (HeightOneSpectrum (𝓞 E))) noncomputable def diagFunInf (v : InfinitePlace E) : NumberField.SUnits.sUnitsRep E K S →ₗ[ℤ] ((K ≃ₐ[E] K) → Additive ((NumberField.ArchIdele.above E K v).Completion)ˣ) where toFun x g := Additive.ofMul (Units.map (locInf E K v).toMonoidHom (g • NumberField.SUnits.val E K S x)) map_add' x y := by funext g change Additive.ofMul (Units.map (locInf E K v).toMonoidHom (g • (NumberField.SUnits.val E K S x * NumberField.SUnits.val E K S y))) = _ rw [smul_mul', map_mul, ofMul_mul] rfl map_smul' n x := by funext g change Additive.ofMul (Units.map (locInf E K v).toMonoidHom (g • (NumberField.SUnits.val E K S x ^ n))) = _ rw [smul_zpow', map_zpow, ofMul_zpow] rfl theorem diagFunInf_apply (v : InfinitePlace E) (x : NumberField.SUnits.sUnitsRep E K S) (g : K ≃ₐ[E] K) : diagFunInf E K S v x g = Additive.ofMul (Units.map (locInf E K v).toMonoidHom (g • NumberField.SUnits.val E K S x)) := rfl theorem diagFunInf_mem_coindV (v : InfinitePlace E) (x : NumberField.SUnits.sUnitsRep E K S) : diagFunInf E K S v x ∈ Representation.coindV (NumberField.InfPlaceDecomp.decomp E K (NumberField.ArchIdele.above E K v)).subtype (NumberField.InfPlaceDecomp.localUnits E K (NumberField.ArchIdele.above E K v)).ρ := by intro d h change Additive.ofMul (Units.map (locInf E K v).toMonoidHom (((d : K ≃ₐ[E] K) * h) • NumberField.SUnits.val E K S x)) = Additive.ofMul (d • Units.map (locInf E K v).toMonoidHom (h • NumberField.SUnits.val E K S x)) rw [mul_smul] congr 1 ext : 1 exact (smul_locInf E K v d _).symm noncomputable def diagInf (v : InfinitePlace E) : NumberField.SUnits.sUnitsRep E K S ⟶ NumberField.ArchIdele.fibre E K v := Rep.ofHom ⟨(diagFunInf E K S v).codRestrict _ (diagFunInf_mem_coindV E K S v), fun g => LinearMap.ext fun x => Subtype.ext (funext fun h => by change diagFunInf E K S v ((NumberField.SUnits.sUnitsRep E K S).ρ g x) h = diagFunInf E K S v x (h * g) rw [diagFunInf_apply, diagFunInf_apply, NumberField.SUnits.val_rho, mul_smul])⟩ theorem diagInf_hom_apply_apply (v : InfinitePlace E) (x : NumberField.SUnits.sUnitsRep E K S) (g : K ≃ₐ[E] K) : ((diagInf E K S v).hom x).1 g = Additive.ofMul (Units.map (locInf E K v).toMonoidHom (g • NumberField.SUnits.val E K S x)) := rfl abbrev Index : Type := NumberField.FiniteSIdele.Index E S ⊕ InfinitePlace E noncomputable def fibre : Index E S → Rep ℤ (K ≃ₐ[E] K) := Sum.elim (NumberField.FiniteSIdele.fibre E K S) (NumberField.ArchIdele.fibre E K) @[simp] theorem fibre_inl (i : NumberField.FiniteSIdele.Index E S) : fibre E K S (Sum.inl i) = NumberField.FiniteSIdele.fibre E K S i := rfl @[simp] theorem fibre_inr (v : InfinitePlace E) : fibre E K S (Sum.inr v) = NumberField.ArchIdele.fibre E K v := rfl noncomputable abbrev obj : Rep ℤ (K ≃ₐ[E] K) := GroupCohomology.RepPi.obj (fibre E K S) noncomputable def toFinite : obj E K S ⟶ NumberField.FiniteSIdele.obj E K S := GroupCohomology.RepPi.lift _ fun i => GroupCohomology.RepPi.proj (fibre E K S) (Sum.inl i) noncomputable def toArch : obj E K S ⟶ NumberField.ArchIdele.obj E K := GroupCohomology.RepPi.lift _ fun v => GroupCohomology.RepPi.proj (fibre E K S) (Sum.inr v) @[simp] theorem toFinite_hom_apply (x : obj E K S) (i : NumberField.FiniteSIdele.Index E S) : (toFinite E K S).hom x i = x (Sum.inl i) := rfl @[simp] theorem toArch_hom_apply (x : obj E K S) (v : InfinitePlace E) : (toArch E K S).hom x v = x (Sum.inr v) := rfl noncomputable def diagComponent : (i : Index E S) → (NumberField.SUnits.sUnitsRep E K S ⟶ fibre E K S i) | Sum.inl i => NumberField.SUnits.diagComponent E K S i | Sum.inr v => diagInf E K S v noncomputable def diag : NumberField.SUnits.sUnitsRep E K S ⟶ obj E K S := GroupCohomology.RepPi.lift (fibre E K S) (diagComponent E K S) theorem diag_hom_apply_inl (x : NumberField.SUnits.sUnitsRep E K S) (i : NumberField.FiniteSIdele.Index E S) : (diag E K S).hom x (Sum.inl i) = (NumberField.SUnits.diagComponent E K S i).hom x := rfl theorem diag_hom_apply_inr (x : NumberField.SUnits.sUnitsRep E K S) (v : InfinitePlace E) : (diag E K S).hom x (Sum.inr v) = (diagInf E K S v).hom x := rfl theorem diag_toFinite : diag E K S ≫ toFinite E K S = NumberField.SUnits.diag E K S := GroupCohomology.RepPi.hom_ext _ fun i => by cases i <;> rfl noncomputable abbrev classObj : Rep ℤ (K ≃ₐ[E] K) := GroupCohomology.RepCokernel.obj (diag E K S) noncomputable abbrev toClass : obj E K S ⟶ classObj E K S := GroupCohomology.RepCokernel.π (diag E K S) theorem toClass_hom_apply_eq_zero_iff (y : obj E K S) : (toClass E K S).hom y = 0 ↔ y ∈ Set.range (diag E K S).hom := GroupCohomology.RepCokernel.π_hom_apply_eq_zero_iff (diag E K S) y noncomputable abbrev classSeq : ShortComplex (Rep ℤ (K ≃ₐ[E] K)) := GroupCohomology.RepCokernel.seq (diag E K S) end NumberField.SIdele
Statements phrased using this module (63)
- Equivariance of the concentrated-idèle embedding at a finite place
M4aHerbrand.exists_hom_adicCompletion_res_decomp_ideles_apply6 below · depth 19 - Local w-component maps are D_w-equivariant on idèle units
M4aHerbrand.exists_hom_res_decomp_ideles_adicCompletion_apply4 below · depth 19 - Invariant maps at a p-group layer with local value 1/|D_w|
M4aHerbrand.exists_invariant_forall_inv_map_localFundamentalClass_eq_one_div_natCard_decomp_of_isPGroup370 below · depth 19 - Finite index of principal times S-unit idèles
NumberField.AdeleRing.finiteIndex_principalIdeles_sup_unitIdelesOutside1 below · depth 19 - Unique equivariant map of S∪∞-idèle modules along a tower
NumberField.SArchIdele.existsUnique_hom_res_obj_comp_toSIdele_eq3 below · depth 19 - Exactness at the S∪∞-idèle module
NumberField.SArchIdele.toSIdeleClass_mk_comp_diagS_eq_one_and_exists_of_eq_one2 below · depth 19 - Coordinatewise equivariant embedding of the S-idèle module
NumberField.SIdele.exists_addMonoidHom_obj_adeleRing_units_apply17 below · depth 19 - Equivariance of the idèle class quotient map
M4aHerbrand.exists_hom_ideles_ideleClassGroup_apply0 below · depth 20 - Tate's reciprocity law for idèle classes, p-group case
M4aHerbrand.exists_invariant_forall_inv_map_eq_finsum_of_forall_localFundamentalClass_of_isPGroup368 below · depth 20 - Image of the S∪∞-idèle module in the idèles
NumberField.SArchIdele.injective_comp_toSIdele_and_mem_range_iff2 below · depth 20 - Invariant maps for a p-group layer, assembled from hypotheses
M4aHerbrand.exists_invariant_forall_inv_map_eq_finsum_of_forall_localFundamentalClass_of_isPGroup_of_children312 below · depth 21 - Invariant map on H²(G,C_F) for cyclic layers
M4aHerbrand.exists_surjective_and_invariant_map_eq_finsum_of_isCyclic291 below · depth 21 - Sum of local invariants is unchanged by corestriction
M4aHerbrand.finsum_div_natCard_decomp_cores_eq_finsum_div_natCard_inf_decomp156 below · depth 21 - Sum of local coordinates in ℚ/ℤ is unchanged by inflation
M4aHerbrand.finsum_div_natCard_decomp_map_eq_finsum_div_natCard_decomp_of_isScalarTower123 below · depth 21 - Reciprocity for p-primary idèle classes at a finite layer
M4aHerbrand.map_pi_eq_zero_iff_finsum_eq_zero_of_pow_smul_eq_zero376 below · depth 21 - Local coordinates over F^H of a restricted idèle class
M4aHerbrand.map_prG_eq_smul_fixedField_of_map_prG_eq_smul110 below · depth 21 - Degree formula for place sums in ℚ/ℤ
NumberField.PlaceDecomp.finsum_div_natCard_decomp_eq_finrank_smul_finsum2 below · depth 21 - Properties of the invariant map of a cyclic layer
M4aHerbrand.card_nsmul_eq_zero_and_map_eq_zero_and_exists_eq_one_div_of_forall_localSum_eq_finsum265 below · depth 22 - Archimedean coordinate maps of the idèle units are decomposition-equivariant
M4aHerbrand.exists_hom_res_infPlaceDecomp_ideles_localUnits_apply4 below · depth 22 - Archimedean coordinate morphisms on idèle units at infinite places
M4aHerbrand.exists_hom_res_inf_infPlaceDecomp_ideles_completion_apply4 below · depth 22 - A local-sum invariant on H²(G,I_F) for cyclic extensions
M4aHerbrand.exists_localSum_forall_eq_finsum_groupCohomology_ideles138 below · depth 22 - Surjectivity of H²(G,I_F)→ H²(G,C_F) for cyclic G
M4aHerbrand.exists_map_eq_groupCohomology_ideleClassGroup_of_isCyclic6 below · depth 22 - Restriction of an idèlic H² class comes from the intermediate layer
M4aHerbrand.exists_map_eq_map_res_ideles1 below · depth 22 - Exactness at H²(G,I_F) for a cyclic layer
M4aHerbrand.exists_map_eq_of_map_eq_zero_groupCohomology_ideles_of_isCyclic4 below · depth 22 - Sylow descent for vanishing of a sum of local invariants
M4aHerbrand.finsum_sylow_eq_zero_iff_finsum_eq_zero_of_pow_smul_eq_zero124 below · depth 22 - Local coordinates on idèle cohomology: injectivity, finiteness, surjectivity
M4aHerbrand.injective_and_finite_and_surjective_localCoordinates_groupCohomology_ideles39 below · depth 22 - Local coordinates and idèle cohomology at a subgroup H
M4aHerbrand.injective_and_finite_and_surjective_localCoordinates_groupCohomology_res_ideles42 below · depth 22 - Sylow descent for vanishing in degree-two idèle class cohomology
M4aHerbrand.map_pi_eq_zero_iff_map_pi_eq_zero_sylow_of_pow_smul_eq_zero5 below · depth 22 - Restriction to the Sylow fixed field preserves the local coordinates
M4aHerbrand.map_prG_eq_smul_sylow_of_map_prG_eq_smul111 below · depth 22 - Trivial decomposition at infinity over a Sylow fixed field
NumberField.InfPlaceDecomp.eq_one_of_mem_decomp_fixedField_sylow0 below · depth 22 - Local fundamental classes above every finite place
NumberField.PlaceDecomp.exists_forall_isLocalFundamentalClass_above92 below · depth 22 - Local coordinate maps at w as H∩ D_w-morphisms
M4aHerbrand.exists_hom_res_inf_decomp_ideles_adicCompletion_apply4 below · depth 23 - Semilocal description of S-idèle cohomology in positive degree
NumberField.SIdele.bijective_groupCohomology_localCoordinates_of_ramificationIdx_eq_one16 below · depth 23 - Archimedean local components of p-primary degree-2 classes vanish
M4aHerbrand.map_prInf_eq_zero_of_pow_smul_eq_zero3 below · depth 24 - Capitulation at a larger level of S-unit 2-cocycles
NumberField.LevelArith.exists_level_coboundary_of_isPGroup_of_map_diag_H2pi_eq_zero_sUnitsMaxRep143 below · depth 24 - Trivial decomposition at infinity in a p-group layer
NumberField.LevelArith.eq_one_of_mem_infPlaceDecomp_of_isPGroup1 below · depth 25 - Archimedean local splitting of an S-unit 2-cocycle
NumberField.LevelArith.exists_coboundary_localUnits_infinitePlace_of_forall_conj_archimedeanDecomposition0 below · depth 25 - Vanishing of H³ of the S-idèle module of a level
NumberField.LevelArith.exists_inhomogeneousCochains_d_two_three_eq_sIdele158 below · depth 25 - Degree-3 S-unit cocycles split at a deeper p-level
NumberField.LevelArith.exists_level_d_two_three_eq_of_sIdele_coboundary_of_isPGroup478 below · depth 25 - Transporting a degree-3 cochain to the S-units frame
NumberField.LevelArith.exists_three_cochain_sUnitsRep_val_eq_of_transport0 below · depth 25 - The layer F_L/L is Galois for F/ℚ finite normal
NumberField.LevelArith.isGalois_levelField0 below · depth 25 - Vanishing S-idèle class of a restricted layer 2-cocycle
NumberField.LevelArith.map_diag_H2pi_eq_zero_of_map_principalIdele_H2pi_eq_zero_of_le30 below · depth 25 - Local coordinate at v vanishes for a layer coboundary
NumberField.SIdele.localCoordinate_map_diag_H2pi_eq_zero_of_exists_layer_coboundary104 below · depth 25 - Vanishing at chosen places kills idèle cohomology classes
M4aHerbrand.eq_zero_of_forall_localCoordinates_above_eq_zero_groupCohomology_ideles43 below · depth 26 - Depth splitting of a 3-cocycle of S-units
NumberField.LevelArith.exists_level_d_two_three_eq_of_sIdele_coboundary_of_smul_eq_of_dvd_natCard_decomp415 below · depth 26 - Torsion transfer of S-idèle cochains along a level tower
NumberField.LevelArith.exists_smul_eq_smul_add_d_add_diag_of_sIdele_coboundary_of_le43 below · depth 26 - Vanishing idèle class transfers from base L to L'
NumberField.LevelArith.map_principalIdele_H2pi_eq_zero_of_le2 below · depth 26 - The S-idèle module as a Galois-equivariant embedding into the idèles
NumberField.SIdele.exists_hom_obj_ideles_injective_of_ideleGaloisDescent18 below · depth 26 - Injectivity on H² of the S-idèle inclusion
NumberField.SIdele.injective_map_H2_of_injective_of_range_eq_unitIdelesOutside11 below · depth 26 - A concentrated idèle 2-cocycle above one place
M4aHerbrand.exists_two_cocycle_ideles_mem_unitIdelesOutside_and_map_prG_eq_zsmul_and_eq_zero20 below · depth 27 - Idèle cocycles modulo unit idèles outside S are coboundaries
NumberField.AdeleRing.exists_forall_mul_inv_smul_div_mem_unitIdelesOutside_of_forall_mem9 below · depth 27 - Genuine base change preserves S-unit idèles and S-units
NumberField.AdeleRing.unitsMap_genuineBaseChange_mem_unitIdelesOutside_of_isScalarTower2 below · depth 27 - Capitulation step: idèlic 2-cochain gives deeper S-unit coboundary
NumberField.LevelArith.exists_level_sUnitsRep_val_d_eq_of_sIdele_coboundary_of_map_eq_add_d56 below · depth 27 - Un-transporting a degree-3 coboundary to the invariants frame
NumberField.LevelArith.exists_two_cochain_quotientToInvariants_sUnitsMaxRep_eq_d_of_transport0 below · depth 27 - Genuine base change preserves S-idèles and S-units in level towers
NumberField.LevelArith.unitsMap_genuineBaseChange_mem_unitIdelesOutside_of_le2 below · depth 27 - Idèle classes trivial off S descend uniquely to S-idèles
NumberField.SIdele.existsUnique_map_eq_of_forall_map_prG_eq_zero12 below · depth 27 - S-idèle class module embeds into the idèle class group
NumberField.SIdele.exists_hom_classObj_ideleClassGroup_injective_range_eq21 below · depth 27 - Equivariance of Φ upgraded to a morphism of representations
NumberField.SIdele.exists_hom_ideles_apply_eq0 below · depth 27 - Torsion for S-idèle 2-cochains modulo S-units
NumberField.SIdele.exists_smul_eq_d_add_diag_of_d_eq_diag7 below · depth 27 - Coinduced local units map into the idèles, with coordinate pins
M4aHerbrand.exists_hom_coind_ideles_finPart_eq_and_eq_one18 below · depth 28 - A Galois S-level absorbing p-power idèle classes
NumberField.LevelArith.exists_le_unitsMap_genuineBaseChange_mem_sup_of_pow_mem14 below · depth 28 - Equivariant realisation of the S-idèle module inside A_K^×
NumberField.SIdele.exists_addMonoidHom_obj_adeleRing_units18 below · depth 28 - S-idèle module realised inside the idèle group
NumberField.SIdele.exists_addMonoidHom_obj_adeleRing_units_transport12 below · depth 29