@@ -96,6 +96,53 @@ noncomputable def Fiber.algEquivQuotient :
9696 simp [Localization.tensorLeftAlgEquiv_apply_one_tmul p.primeCompl])
9797 commutes' := by simp }
9898
99+ /-- `p.Fiber S` is isomorphic to the quotient `Sₚ ⧸ pSₚ`. -/
100+ noncomputable def Fiber.algEquivAux₁ :
101+ letI Sp := Localization (algebraMapSubmonoid S p.primeCompl)
102+ letI pS := p.map (algebraMap R S)
103+ letI : Algebra S (p.Fiber S) := rightAlgebra
104+ p.Fiber S ≃ₐ[S] Sp ⧸ pS.map (algebraMap S Sp) :=
105+ letI : Algebra S (p.Fiber S) := rightAlgebra
106+ (Fiber.algEquivQuotient p).trans <| quotientEquivAlgOfEq S <| by
107+ rw [← Localization.AtPrime.map_eq_maximalIdeal, map_map, ← IsScalarTower.algebraMap_eq,
108+ IsScalarTower.algebraMap_eq R S, ← map_map]
109+
110+ /-- The localization of the fiber `p.Fiber S` is isomorphic to a quotient of a localization. -/
111+ noncomputable def Fiber.algEquivAux₂ (q : Ideal (p.Fiber S)) [q.IsPrime] :
112+ letI r := q.comap includeRight
113+ letI Sr := Localization.AtPrime r
114+ letI pS := p.map (algebraMap R S)
115+ Localization.AtPrime q ≃ₐ[R] Sr ⧸ pS.map (algebraMap S Sr) :=
116+ letI : Algebra S (p.Fiber S) := rightAlgebra
117+ letI Sp := Localization (algebraMapSubmonoid S p.primeCompl)
118+ letI pS := p.map (algebraMap R S)
119+ letI SpS := S ⧸ pS
120+ letI r := q.comap includeRight
121+ letI Sr := Localization.AtPrime r
122+ letI e₁ : p.Fiber S ≃ₐ[S] Sp ⧸ pS.map (algebraMap S Sp) := algEquivAux₁ p
123+ letI q' : Ideal (Sp ⧸ pS.map (algebraMap S Sp)) := q.comap e₁.symm
124+ haveI : (q'.under SpS).LiesOver r := under_liesOver_of_liesOver SpS q' (q.under S)
125+ haveI : algebraMapSubmonoid SpS r.primeCompl = (q'.under SpS).primeCompl :=
126+ algebraMapSubmonoid_primeCompl_of_liesOver_surjective (q'.under SpS) r Quotient.mk_surjective
127+ haveI : IsLocalization (algebraMapSubmonoid SpS r.primeCompl) (Localization.AtPrime q') := by
128+ convert IsLocalization.isLocalization_isLocalization_atPrime_isLocalization
129+ (algebraMapSubmonoid SpS (algebraMapSubmonoid S p.primeCompl)) (Localization.AtPrime q') q'
130+ haveI := IsScalarTower.to₁₃₄ R S SpS (Localization.AtPrime q')
131+ haveI := IsScalarTower.to₁₃₄ R S SpS (Sr ⧸ pS.map (algebraMap S Sr))
132+ ((Localization.localAlgEquiv q' q e₁.symm rfl).symm.restrictScalars R).trans
133+ ((IsLocalization.algEquiv (algebraMapSubmonoid SpS r.primeCompl) (Localization.AtPrime q')
134+ (Sr ⧸ pS.map (algebraMap S Sr))).restrictScalars R)
135+
136+ /-- The localization of the fiber `p.Fiber S` is isomorphic to a quotient of a localization. -/
137+ noncomputable def Fiber.localizationAlgEquivQuotient (q : Ideal (p.Fiber S)) [q.IsPrime]
138+ [Algebra (Localization.AtPrime p) (Localization.AtPrime (q.comap includeRight))]
139+ [Localization.AtPrime.IsLiesOverAlgebra p (q.comap includeRight)] :
140+ letI r := q.comap includeRight
141+ letI Sr := Localization.AtPrime r
142+ Localization.AtPrime q ≃ₐ[Localization.AtPrime p] Sr ⧸ p.map (algebraMap R Sr) :=
143+ ((algEquivAux₂ p q).extendScalarsOfIsLocalization (Localization.AtPrime p) p.primeCompl).trans
144+ (quotientEquivAlgOfEq (Localization.AtPrime p) (map_map _ _))
145+
99146end Ideal
100147
101148@ [deprecated (since := "2026-05-11" )] alias Fiber.algEquivQuotient := Ideal.Fiber.algEquivQuotient
0 commit comments