Skip to content

Commit 12bd4ca

Browse files
committed
address comment
1 parent 2b976da commit 12bd4ca

1 file changed

Lines changed: 21 additions & 31 deletions

File tree

Mathlib/RingTheory/Localization/AtPrime/Basic.lean

Lines changed: 21 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -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`. -/
531531
noncomputable
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]
565555
theorem equivQuotMaximalIdealPow_apply_mk (n : ℕ) (x : R) :

0 commit comments

Comments
 (0)