The canonical comparison between the two finite-place completion models identifies the field principal-unit filtration with the ray-class higher-unit filtration.
Source context 8 commands
Surrounding namespaces, section variables, and local commands at this declaration.
open scoped NumberField NNReal ValuativeRel
noncomputable section
namespace GlobalClassFieldTheory
namespace GlobalClassFields
open NumberField IsDedekindDomain
open LocalFieldTheory
open LocalFieldTheory.IsNonarchimedeanLocalField
variable {K : Type} [Field K] [NumberField K]theorem finitePlaceFieldPrincipalUnits_map_eq_localHigherUnitGroup
(v : HeightOneSpectrum (𝓞 K)) (n : ℕ) :
let vK := HeightOneSpectrum.adicAbv K v
let hvKna : IsNonarchimedean (vK : K → ℝ) :=
HeightOneSpectrum.isNonarchimedean_adicAbv K v
letI : Valued vK.Completion ℝ≥0 :=
_root_.GlobalClassFieldTheory.Reciprocity.finitePlaceArtinCompletionValued
vK hvKna
letI : ValuativeRel vK.Completion :=
_root_.GlobalClassFieldTheory.Reciprocity.finitePlaceLocalArtinCompletionValuativeRel v
(LocalFieldTheory.fieldPrincipalUnits vK.Completion n).map
(_root_.finitePlaceCompletionUnitsContinuousMulEquiv v).toMonoidHom =
RayClass.localHigherUnitGroup v n := by
let vK := HeightOneSpectrum.adicAbv K v
let hvKna : IsNonarchimedean (vK : K → ℝ) :=
HeightOneSpectrum.isNonarchimedean_adicAbv K v
let : Valued vK.Completion ℝ≥0 :=
_root_.GlobalClassFieldTheory.Reciprocity.finitePlaceArtinCompletionValued
vK hvKna
let : ValuativeRel vK.Completion :=
_root_.GlobalClassFieldTheory.Reciprocity.finitePlaceLocalArtinCompletionValuativeRel v
let eField : vK.Completion ≃+* v.adicCompletion K :=
_root_.finitePlaceCompletionRingEquiv v
let eIntegers :
𝒪[vK.Completion] ≃+* v.adicCompletionIntegers K :=
_root_.finitePlaceCompletionIntegerRingEquiv v
let eIntegralUnits :
𝒪[vK.Completion]ˣ ≃*
(v.adicCompletionIntegers K).units :=
(Units.mapEquiv eIntegers.toMulEquiv).trans
(v.adicCompletionIntegers K).toSubmonoid.unitsEquivUnitsType.symm
let e :
vK.Completionˣ ≃ₜ* (v.adicCompletion K)ˣ :=
_root_.finitePlaceCompletionUnitsContinuousMulEquiv v
have heField (u : 𝒪[vK.Completion]ˣ) :
(eIntegralUnits u : (v.adicCompletion K)ˣ) =
e (LocalFieldTheory.IsNonarchimedeanLocalField.integerUnitsToFieldUnits
vK.Completion u) := by
apply Units.ext
change
eField ((u : 𝒪[vK.Completion]) : vK.Completion) =
eField ((u : 𝒪[vK.Completion]) : vK.Completion)
rfl
have hePrincipal (u : 𝒪[vK.Completion]ˣ) :
RayClass.localHigherUnitMap v n (eIntegralUnits u) = 1 ↔
u ∈ LocalFieldTheory.principalUnits vK.Completion n := by
rw [RayClass.localHigherUnitMap_eq_one_iff,
LocalFieldTheory.mem_principalUnits_iff]
have hvalue :
RayClass.localIntegralValue v (eIntegralUnits u) =
eIntegers (u : 𝒪[vK.Completion]) := by
change
((v.adicCompletionIntegers K).toSubmonoid.unitsEquivUnitsType
(eIntegralUnits u) :
(v.adicCompletionIntegers K)ˣ).1 =
eIntegers (u : 𝒪[vK.Completion])
simp [eIntegralUnits]
rw [hvalue, ← eIntegers.map_one, ← eIntegers.map_sub]
exact
ValuationTheory.ringEquiv_mem_maximalIdeal_pow_iff
eIntegers n ((u : 𝒪[vK.Completion]) - 1)
ext x
constructor
· rintro ⟨z, ⟨u, hu, rfl⟩, rfl⟩
apply (RayClass.mem_localHigherUnitGroup_iff v n _).2
exact ⟨eIntegralUnits u, heField u, (hePrincipal u).2 hu⟩
· intro hx
obtain ⟨y, hyx, hy⟩ :=
(RayClass.mem_localHigherUnitGroup_iff v n x).1 hx
let u : 𝒪[vK.Completion]ˣ := eIntegralUnits.symm y
have huy : eIntegralUnits u = y :=
eIntegralUnits.apply_symm_apply y
refine
⟨LocalFieldTheory.IsNonarchimedeanLocalField.integerUnitsToFieldUnits
vK.Completion u,
⟨u, ?_, rfl⟩, ?_⟩
· apply (hePrincipal u).1
simpa only [huy] using hy
· calc
e (LocalFieldTheory.IsNonarchimedeanLocalField.integerUnitsToFieldUnits
vK.Completion u) =
(eIntegralUnits u : (v.adicCompletion K)ˣ) :=
(heField u).symm
_ = y := congrArg Subtype.val huy
_ = x := hyx