If every base-prime localization avoiding y has etale localized normalization, then the literal normalization map away from y is etale.
The input is deliberately the localized-normalization target produced by the height-one branch theorems. For a prime of the global normalization, the two canonical normalization-localization equivalences transport this input to formal etaleness of its local ring; the etale-locus criterion then globalizes it.
Source context 4 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open scoped TensorProduct
namespace EtaleFundamentalGroups
universe uD uF uMtheorem localization_away_integralClosure_etale_of_basePrime_localizations
{D : Type uD} {F : Type uF} {M : Type uM}
[CommRing D] [IsDomain D] [IsNoetherianRing D]
[Field F] [Algebra D F] [IsFractionRing D F]
[Field M] [Algebra F M] [Algebra D M] [IsScalarTower D F M]
[Module.Finite D (integralClosure D M)]
(y : D)
(hlocal : ∀ (q : Ideal D), [q.IsPrime] → y ∉ q →
letI := localizationAtPrimeToExtensionAlgebra
(K := F) (L := M) q
letI := localizationAtPrimeToExtension_isScalarTower
(K := F) (L := M) q
letI := integralClosureLocalizationAlgebra (L := M) q
Algebra.Etale (Localization.AtPrime q)
(Localization (Algebra.algebraMapSubmonoid
(integralClosure D M) q.primeCompl))) :
(Localization.awayMap (algebraMap D (integralClosure D M)) y).Etale := by
let C := integralClosure D M
let : Module.FinitePresentation D C :=
Module.finitePresentation_of_finite D C
let : Algebra.FinitePresentation D C :=
Algebra.FinitePresentation.of_finitePresentation D C
let S := Localization.Away y
let yC : C := algebraMap D C y
let T := Localization.Away yC
let mapST : S →+* T := Localization.awayMap (algebraMap D C) y
have hDT : Algebra.Etale D T := by
apply Algebra.basicOpen_subset_etaleLocus_iff_etale.mp
intro Q hQ
let q := Q.asIdeal.under D
let : q.IsPrime := inferInstance
let : Q.asIdeal.LiesOver q := inferInstance
have hyq : y ∉ q := by
exact (PrimeSpectrum.mem_basicOpen _ _).mp hQ
let V := Localization.AtPrime q
let : Algebra V M :=
localizationAtPrimeToExtensionAlgebra (K := F) (L := M) q
let : IsScalarTower D V M :=
localizationAtPrimeToExtension_isScalarTower
(K := F) (L := M) q
let Cp := integralClosure V M
let : Algebra C Cp := integralClosureLocalizationAlgebra (L := M) q
let Cq := Localization
(Algebra.algebraMapSubmonoid C q.primeCompl)
let : Algebra.Etale V Cq := hlocal q hyq
let eBase : Cq ≃ₐ[V] Cp :=
localizationIntegralClosureAtPrimeAlgEquiv
(K := F) (L := M) q
let : Algebra.Etale V Cp := Algebra.Etale.of_equiv eBase
let qlocal := localizedNormalizationPrime
(K := F) (L := M) q Q.asIdeal
let : qlocal.IsMaximal :=
localizedNormalizationPrime_isMaximal
(K := F) (L := M) q Q.asIdeal
let : Algebra.FormallyEtale Cp (Localization.AtPrime qlocal) :=
Algebra.FormallyEtale.of_isLocalization qlocal.primeCompl
let : Algebra.FormallyEtale V (Localization.AtPrime qlocal) :=
Algebra.FormallyEtale.comp V Cp (Localization.AtPrime qlocal)
let : Algebra V (Localization.AtPrime Q.asIdeal) :=
Localization.AtPrime.algebraOfLiesOver q Q.asIdeal
let ePrime : Localization.AtPrime Q.asIdeal ≃ₐ[V]
Localization.AtPrime qlocal :=
integralClosurePrimeLocalizationAlgEquiv
(K := F) (L := M) q Q.asIdeal
let : Algebra.FormallyEtale V (Localization.AtPrime Q.asIdeal) :=
Algebra.FormallyEtale.of_equiv
(R := V) (A := Localization.AtPrime qlocal)
(B := Localization.AtPrime Q.asIdeal) ePrime.symm
let : Algebra.FormallyEtale D V :=
Algebra.FormallyEtale.of_isLocalization q.primeCompl
change Algebra.FormallyEtale D (Localization.AtPrime Q.asIdeal)
exact Algebra.FormallyEtale.comp D V (Localization.AtPrime Q.asIdeal)
let : Algebra S T := mapST.toAlgebra
let : IsScalarTower D C T := inferInstance
let : IsScalarTower D S T := by
apply IsScalarTower.of_algebraMap_eq
intro z
change algebraMap D T z = mapST (algebraMap D S z)
rw [IsScalarTower.algebraMap_apply D C T]
simp [mapST, S, T, yC, IsLocalization.Away.map]
let : Algebra.Etale D S := Algebra.Etale.of_isLocalizationAway y
exact Algebra.Etale.of_restrictScalars D S T