The actual ordinary residue point equals the original closed point through κ(A).
Source context 5 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
open CategoryTheory AlgebraicGeometry AlgebraicGeometry.FiniteEtale
namespace EtaleFundamentalGroups.StrictHenselian
universe u v
variable (A : Type u) (K : Type v) (L : Type u)
[CommRing A] [IsDomain A] [IsLocalRing A] [Field K] [Field L]
[Algebra A K] [IsFractionRing A K] [Algebra K L] [Algebra A L]
[IsScalarTower A K L] [IsGalois K L] [IsSepClosed L]
(Q : Ideal (integralClosure A L)) [Q.IsPrime]
(hQ : Q.under A = IsLocalRing.maximalIdeal A)theorem normalizationOrdinaryResiduePoint_eq :
let : IsLocalHom (integralClosurePrimeBaseMap A L Q) :=
integralClosurePrimeBaseMap_isLocalHom A L Q hQ
let : Algebra (IsLocalRing.ResidueField A)
(IsLocalRing.ResidueField (Localization.AtPrime Q)) :=
(IsLocalRing.ResidueField.map (integralClosurePrimeBaseMap A L Q)).toAlgebra
let : Algebra (ordinaryHenselization A) (Localization.AtPrime Q) :=
(ordinaryHenselizationToNormalizationPrime A K L Q hQ).toAlgebra
ξ (IsLocalRing.ResidueField A) (IsLocalRing.ResidueField (Localization.AtPrime Q)) ≫
henselianClosedPoint (ordinaryHenselization A) (IsLocalRing.ResidueField A)
(ordinaryHenselizationResidueEquiv A) =
Spec.algebraMap (ordinaryHenselization A)
(IsLocalRing.ResidueField (Localization.AtPrime Q)) := by
intro actualLocal actualResidueAlgebra actualLocalAlgebra
let H := ordinaryHenselization A
let R := Localization.AtPrime Q
let k := IsLocalRing.ResidueField A
let Ω := IsLocalRing.ResidueField R
let f : A →+* R := integralClosurePrimeBaseMap A L Q
let g : H →+* R := ordinaryHenselizationToNormalizationPrime A K L Q hQ
let β : k →+* Ω := IsLocalRing.ResidueField.map f
let e : IsLocalRing.ResidueField H ≃+* k := ordinaryHenselizationResidueEquiv A
have : HenselianLocalRing R := (integralClosure_localizationAtPrime_strictHenselian A K L Q).1
have : Algebra.IsAlgebraic A L :=
(IsFractionRing.comap_isAlgebraic_iff (A := A) (K := K) (C := L)).mpr inferInstance
have : FaithfulSMul A L :=
(Module.isTorsionFree_iff_faithfulSMul (R := A) (A := L)).mp
(Module.IsTorsionFree.trans_faithfulSMul A K L)
have : IsLocalHom g := ordinaryHenselizationLift_isLocalHom f
let ε : H →+* k := (geometricStalkEvaluation
(Spec.map (CommRingCat.ofHom (IsLocalRing.residue A)))).hom
have : IsLocalHom ε := geometricStalkEvaluation_isLocalHom
(Spec.map (CommRingCat.ofHom (IsLocalRing.residue A)))
have hε : e.toRingHom.comp (IsLocalRing.residue H) = ε :=
IsLocalRing.ResidueField.lift_comp_residue ε
have hres : (IsLocalRing.residue R).comp g = β.comp ε :=
ordinaryHenselization_localMap_residue f g
(ordinaryHenselizationToNormalizationPrime_comp_map A K L Q hQ)
have hscalar : algebraMap H Ω = β.comp (e.toRingHom.comp (IsLocalRing.residue H)) := by
calc
algebraMap H Ω = (IsLocalRing.residue R).comp g := by
apply RingHom.ext
intro a
exact (IsScalarTower.algebraMap_apply H R Ω a).trans
(RingHom.congr_fun (IsLocalRing.ResidueField.algebraMap_eq (R := R)) (g a))
_ = β.comp ε := hres
_ = β.comp (e.toRingHom.comp (IsLocalRing.residue H)) :=
congrArg (fun z : H →+* k => β.comp z) hε.symm
change Spec.map (CommRingCat.ofHom β) ≫
(Spec.map (CommRingCat.ofHom e.toRingHom) ≫
Spec.map (CommRingCat.ofHom (IsLocalRing.residue H))) =
Spec.map (CommRingCat.ofHom (algebraMap H Ω))
calc
_ = Spec.map (CommRingCat.ofHom
(β.comp (e.toRingHom.comp (IsLocalRing.residue H)))) :=
(congrArg (fun t : Spec (.of k) ⟶ Spec (.of H) =>
Spec.map (CommRingCat.ofHom β) ≫ t)
(Spec.map_comp (CommRingCat.ofHom (IsLocalRing.residue H))
(CommRingCat.ofHom e.toRingHom)).symm).trans
(Spec.map_comp
(CommRingCat.ofHom (e.toRingHom.comp (IsLocalRing.residue H)))
(CommRingCat.ofHom β)).symm
_ = _ := congrArg (fun r : H →+* Ω => Spec.map (CommRingCat.ofHom r)) hscalar.symm