@@ -529,37 +529,27 @@ theorem equivQuotMaximalIdeal_symm_apply_mk (x : R) (s : p.primeCompl) :
529529/-- The isomorphism `R ⧸ p ^ n ≃ₐ[R] Rₚ ⧸ maximalIdeal Rₚ ^ n`, where `Rₚ` satisfies
530530`IsLocalization.AtPrime Rₚ p`. -/
531531noncomputable
532- def equivQuotMaximalIdealPow (n : ℕ) : (R ⧸ p ^ n) ≃ₐ[R] Rₚ ⧸ IsLocalRing.maximalIdeal Rₚ ^ n where
533- __ : (R ⧸ p ^ n) ≃+* Rₚ ⧸ IsLocalRing.maximalIdeal Rₚ ^ n := by
534- refine Subring.topEquiv.symm.trans <| -- R ⧸ p ^ n ≃ (⊤ : Subring (R ⧸ p ^ n))
535- (RingEquiv.subringCongr ?_).trans <| -- ⊤ = (R ⧸ p ^ n ← Rₚ / ker).range
536- (IsLocalization.lift fun (u : p.primeCompl) ↦ -- (R ⧸ p ^ n ← Rₚ) => R ⧸ p ^ n ← Rₚ / ker
537- Ideal.Quotient.isUnit_mk_pow_of_notMem _
538- (mem_primeCompl_iff.mp u.prop)).quotientKerEquivRange.symm.trans <|
539- quotEquivOfEq ?_ -- ker = maximalIdeal ^ n
540- · symm
541- rw [RingHom.range_eq_top, IsLocalization.lift_surjective_iff]
542- intro u
543- obtain ⟨x, hx⟩ := Ideal.Quotient.mk_surjective u
544- exact ⟨⟨x, 1 ⟩, by simp [hx]⟩
545- · ext x
546- obtain ⟨a, b, rfl⟩ := IsLocalization.exists_mk'_eq p.primeCompl x
547- suffices a ∈ p ^ n ↔ algebraMap R Rₚ a ∈ IsLocalRing.maximalIdeal Rₚ ^ n by
548- simpa [Ideal.Quotient.eq_zero_iff_mem, IsLocalization.mk'_mem_iff]
549- rw [← map_eq_maximalIdeal p Rₚ, ← Ideal.map_pow,
550- algebraMap_mem_map_algebraMap_iff p.primeCompl Rₚ]
551- refine ⟨fun h ↦ ⟨1 , by simp, by simp [h]⟩, fun ⟨m, hm, h⟩ ↦ ?_⟩
552- exact (IsMaximal.mul_mem_pow _ h).resolve_left (mem_primeCompl_iff.mp hm)
553- commutes' x := by
554- rw [IsScalarTower.algebraMap_apply R Rₚ (Rₚ ⧸ maximalIdeal Rₚ ^ n)]
555- simp only [Ideal.Quotient.algebraMap_eq, RingEquiv.toEquiv_eq_coe, Equiv.toFun_as_coe,
556- EquivLike.coe_coe, RingEquiv.coe_trans, Function.comp_apply]
557- rw [← RingEquiv.eq_symm_apply, RingEquiv.symm_apply_eq]
558- simp only [RingHom.quotientKerEquivRange, Ideal.quotEquivOfEq_symm, Ideal.quotEquivOfEq_mk,
559- RingEquiv.coe_trans, Function.comp_apply, RingHom.quotientKerEquivOfSurjective_apply_mk]
560- rw [← RingEquiv.eq_symm_apply]
561- ext
562- simp
532+ def equivQuotMaximalIdealPow (n : ℕ) : (R ⧸ p ^ n) ≃ₐ[R] Rₚ ⧸ IsLocalRing.maximalIdeal Rₚ ^ n := by
533+ refine Subalgebra.topEquiv.symm.trans <| -- R ⧸ p ^ n ≃ (⊤ : Subring (R ⧸ p ^ n))
534+ (Subalgebra.equivOfEq ⊤ _ ?_).trans <| -- ⊤ = (R ⧸ p ^ n ← Rₚ / ker).range
535+ (Ideal.quotientKerEquivRange ( -- Rₚ / ker ≃ R ⧸ p ^ n
536+ -- Rₚ → R ⧸ p ^ n
537+ IsLocalization.liftAlgHom (f := Ideal.Quotient.mkₐ R (p ^ n)) fun (u : p.primeCompl) ↦
538+ Ideal.Quotient.isUnit_mk_pow_of_notMem _ <| mem_primeCompl_iff.mp u.prop)).symm.trans <|
539+ quotientEquivAlgOfEq R ?_ -- ker = maximalIdeal ^ n
540+ · symm
541+ rw [AlgHom.range_eq_top, IsLocalization.coe_liftAlgHom, IsLocalization.lift_surjective_iff]
542+ intro u
543+ obtain ⟨x, hx⟩ := Ideal.Quotient.mk_surjective u
544+ exact ⟨⟨x, 1 ⟩, by simp [hx]⟩
545+ · ext x
546+ obtain ⟨a, b, rfl⟩ := IsLocalization.exists_mk'_eq p.primeCompl x
547+ suffices a ∈ p ^ n ↔ algebraMap R Rₚ a ∈ IsLocalRing.maximalIdeal Rₚ ^ n by
548+ simpa [Ideal.Quotient.eq_zero_iff_mem, IsLocalization.mk'_mem_iff]
549+ rw [← map_eq_maximalIdeal p Rₚ, ← Ideal.map_pow,
550+ algebraMap_mem_map_algebraMap_iff p.primeCompl Rₚ]
551+ refine ⟨fun h ↦ ⟨1 , by simp, by simp [h]⟩, fun ⟨m, hm, h⟩ ↦ ?_⟩
552+ exact (IsMaximal.mul_mem_pow _ h).resolve_left (mem_primeCompl_iff.mp hm)
563553
564554@[simp]
565555theorem equivQuotMaximalIdealPow_apply_mk (n : ℕ) (x : R) :
0 commit comments