The canonical residue lift of the localization selected inside a fixed generic component. Henselian localization and the unique closed prime are constructed here once, instead of being repeated in every theorem type and proof that names this lift.
Source context 4 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open scoped TensorProduct
namespace EtaleFundamentalGroups.Kummer
universe udef completedChosenFactorComponentResidueLift_of_mem_or_eq_one
{A : Type u} [CommRing A] [IsLocalRing A] [IsNoetherianRing A]
{r : ℕ} (n : Fin r → ℕ) (a : Fin r → A)
(hn : ∀ i, 0 < n i)
(hstage : ∀ i,
a i ∈ IsLocalRing.maximalIdeal A ∨ n i = 1) :
let Ahat := AdicCompletion (IsLocalRing.maximalIdeal A) A
let aHat : Fin r → Ahat := fun i ↦ algebraMap A Ahat (a i)
let Bhat := iteratedRadical Ahat r n aHat
let hstageHat : ∀ i,
aHat i ∈ IsLocalRing.maximalIdeal Ahat ∨ n i = 1 := fun i ↦ by
rcases hstage i with ha | hOne
· left
rw [AdicCompletion.maximalIdeal_eq_map]
exact Ideal.mem_map_of_mem (algebraMap A Ahat) ha
· exact Or.inr hOne
letI : IsLocalRing Bhat :=
isLocalRing_iteratedRadical_of_mem_or_eq_one n aHat hn hstageHat
∀ {M : Type u} [Field M] [Algebra Bhat M],
∀ (q : Ideal (integralClosure Bhat M)) [q.IsPrime]
[q.LiesOver (IsLocalRing.maximalIdeal Bhat)],
Algebra.Etale Bhat (integralClosure Bhat M) → CommAlgCat Ahat := by
dsimp only
intro M _ _ q _ _ hEtale
let Ahat := AdicCompletion (IsLocalRing.maximalIdeal A) A
let aHat : Fin r → Ahat := fun i ↦ algebraMap A Ahat (a i)
let Bhat := iteratedRadical Ahat r n aHat
have hstageHat : ∀ i,
aHat i ∈ IsLocalRing.maximalIdeal Ahat ∨ n i = 1 := fun i ↦ by
rcases hstage i with ha | hOne
· left
rw [AdicCompletion.maximalIdeal_eq_map]
exact Ideal.mem_map_of_mem (algebraMap A Ahat) ha
· exact Or.inr hOne
letI : IsLocalRing Bhat :=
isLocalRing_iteratedRadical_of_mem_or_eq_one n aHat hn hstageHat
have hmaxFG : (IsLocalRing.maximalIdeal Ahat).FG := by
rw [AdicCompletion.maximalIdeal_eq_map]
exact Ideal.FG.map
(IsLocalRing.maximalIdeal A).fg_of_isNoetherianRing
(algebraMap A Ahat)
letI : HenselianLocalRing Bhat :=
henselianLocalRing_iteratedRadical_of_isAdicComplete_of_fg_of_mem_or_eq_one
hmaxFG n aHat hn hstageHat
letI : Module.FaithfullyFlat Ahat Bhat :=
faithfullyFlat_iteratedRadical n aHat hn
letI : IsLocalHom (algebraMap Ahat Bhat) := by
let : Module.Finite Ahat Bhat := finite_iteratedRadical n aHat hn
let : Algebra.IsIntegral Ahat Bhat :=
Algebra.IsIntegral.of_finite Ahat Bhat
exact Algebra.IsIntegral.isLocalHom Ahat Bhat
let C := integralClosure Bhat M
letI : Algebra.Etale Bhat C := hEtale
let D := Localization.AtPrime q
letI : Module.Finite Bhat D :=
moduleFinite_localizationAtPrime_of_henselian_of_etale q
letI : Algebra.Etale Bhat D :=
etale_localizationAtPrime_of_henselian_of_etale q
letI : IsLocalHom (algebraMap Bhat D) :=
isLocalHom_algebraMap_localizationAtPrime_of_liesOver_maximalIdeal q
let aDAlgebra : Algebra Ahat D :=
((algebraMap Bhat D).comp (algebraMap Ahat Bhat)).toAlgebra
letI : Algebra Ahat D := aDAlgebra
letI : IsScalarTower Ahat Bhat D :=
IsScalarTower.of_algebraMap_eq' rfl
letI : IsLocalHom (algebraMap Ahat D) := by
rw [IsScalarTower.algebraMap_eq Ahat Bhat D]
exact
RingHom.isLocalHom_comp
(algebraMap Bhat D) (algebraMap Ahat Bhat)
let k := IsLocalRing.ResidueField Ahat
let kB := IsLocalRing.ResidueField Bhat
let l := IsLocalRing.ResidueField D
let eResidue : k ≃ₐ[k] kB :=
AlgEquiv.ofBijective (Algebra.ofId k kB)
(residueFieldMap_bijective_iteratedRadical_of_mem_or_eq_one
n aHat hn hstageHat)
letI : Module.Finite k kB :=
Module.Finite.of_surjective eResidue.toLinearMap eResidue.surjective
letI : Module.Finite k l := Module.Finite.trans kB l
letI : Algebra.IsSeparable k kB :=
AlgEquiv.Algebra.isSeparable eResidue
letI : Algebra.IsSeparable k l := Algebra.IsSeparable.trans k kB l
exact CommAlgCat.of Ahat (FiniteEtaleResidueLift Ahat l)