The local-ring equivalence induced by an algebra equivalence, upgraded from the original base to the local ring at a prime lying below the source prime.
Source context 3 commands
Surrounding namespaces, section variables, and local commands at this declaration.
noncomputable section
namespace EtaleFundamentalGroups
universe uA uB uK uL uR uSdef localizationAtMappedPrimeAlgEquiv_overAtPrime
{A : Type uA} {R : Type uR} {S : Type uS}
[CommRing A] [CommRing R] [CommRing S]
[Algebra A R] [Algebra A S]
(e : R ≃ₐ[A] S)
(P : Ideal A) [P.IsPrime]
(Q : Ideal R) [Q.IsPrime] [Q.LiesOver P] :
let Q' := Q.map e.toRingEquiv
letI : Q'.IsPrime := inferInstance
letI : Q'.LiesOver P := by
refine ⟨(Q.over_def P).trans ?_⟩
ext a
change algebraMap A R a ∈ Q ↔ algebraMap A S a ∈ Q'
rw [← e.commutes a]
exact Ideal.apply_mem_of_equiv_iff.symm
letI : Algebra (Localization.AtPrime P) (Localization.AtPrime Q) :=
Localization.AtPrime.algebraOfLiesOver P Q
letI : Algebra (Localization.AtPrime P) (Localization.AtPrime Q') :=
Localization.AtPrime.algebraOfLiesOver P Q'
Localization.AtPrime Q ≃ₐ[Localization.AtPrime P]
Localization.AtPrime Q' := by
dsimp only
let Q' := Q.map e.toRingEquiv
letI : Q'.IsPrime := inferInstance
letI : Q'.LiesOver P := by
refine ⟨(Q.over_def P).trans ?_⟩
ext a
change algebraMap A R a ∈ Q ↔ algebraMap A S a ∈ Q'
rw [← e.commutes a]
exact Ideal.apply_mem_of_equiv_iff.symm
let V := Localization.AtPrime P
letI : Algebra V (Localization.AtPrime Q) :=
Localization.AtPrime.algebraOfLiesOver P Q
letI : Algebra V (Localization.AtPrime Q') :=
Localization.AtPrime.algebraOfLiesOver P Q'
let eLocal : Localization.AtPrime Q ≃ₐ[A]
Localization.AtPrime Q' :=
localizationAtMappedPrimeAlgEquiv e Q
refine
{ toRingEquiv := eLocal.toRingEquiv
commutes' := fun z ↦ ?_ }
apply DFunLike.congr_fun (f :=
eLocal.toRingHom.comp (algebraMap V (Localization.AtPrime Q)))
(g := algebraMap V (Localization.AtPrime Q')) ?_ z
apply IsLocalization.ringHom_ext P.primeCompl
ext a
simp only [RingHom.comp_apply]
rw [← IsScalarTower.algebraMap_apply A V (Localization.AtPrime Q),
← IsScalarTower.algebraMap_apply A V (Localization.AtPrime Q')]
exact eLocal.commutes a