|
| 1 | +/- |
| 2 | +Copyright (c) 2025 Xavier Roblot. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: Xavier Roblot |
| 5 | +-/ |
| 6 | +import Mathlib.RingTheory.DedekindDomain.Dvr |
| 7 | + |
| 8 | +/-! |
| 9 | +# Primes in an extension of localization at prime |
| 10 | +
|
| 11 | +Let `R ⊆ S` be an extension of Dedekind domains and `p` be a prime ideal of `R`. Let `Rₚ` be the |
| 12 | +localization of `R` at the complement of `p` and `Sₚ` the localization of `S` at the (image) |
| 13 | +of the complement of `p`. |
| 14 | +
|
| 15 | +In this file, we study the relation between the (nonzero) prime ideals of `Sₚ` and the prime |
| 16 | +ideals of `S` above `p`. In particular, we prove that (under suitable conditions) they are in |
| 17 | +bijection. |
| 18 | +
|
| 19 | +# Main definitions and results |
| 20 | +
|
| 21 | +- `IsLocalization.AtPrime.mem_primesOver_of_isPrime`: The nonzero prime ideals of `Sₚ` are |
| 22 | + primes over the maximal ideal of `Rₚ`. |
| 23 | +
|
| 24 | +- `IsDedekindDomain.primesOverEquivPrimesOver`: the order-preserving bijection between the primes |
| 25 | + over `p` in `S` and the primes over the maximal ideal of `Rₚ` in `Sₚ`. |
| 26 | +
|
| 27 | +-/ |
| 28 | + |
| 29 | +open Algebra IsLocalRing Ideal Localization.AtPrime |
| 30 | + |
| 31 | +variable {R S : Type*} [CommRing R] [CommRing S] [Algebra R S] (p : Ideal R) [p.IsPrime] |
| 32 | + (Rₚ : Type*) [CommRing Rₚ] [Algebra R Rₚ] [IsLocalization.AtPrime Rₚ p] [IsLocalRing Rₚ] |
| 33 | + (Sₚ : Type*) [CommRing Sₚ] [Algebra S Sₚ] [IsLocalization (algebraMapSubmonoid S p.primeCompl) Sₚ] |
| 34 | + [Algebra Rₚ Sₚ] (P : Ideal S) [hPp : P.LiesOver p] |
| 35 | + |
| 36 | +namespace IsLocalization.AtPrime |
| 37 | + |
| 38 | +/-- |
| 39 | +The nonzero prime ideals of `Sₚ` are prime ideals over the maximal ideal of `Rₚ`. |
| 40 | +See `Localization.AtPrime.primesOverEquivPrimesOver` for the bijection between the prime ideals |
| 41 | +of `Sₚ` over the maximal ideal of `Rₚ` and the primes ideals of `S` above `p`. |
| 42 | +-/ |
| 43 | +theorem mem_primesOver_of_isPrime {Q : Ideal Sₚ} [Q.IsMaximal] [Algebra.IsIntegral Rₚ Sₚ] : |
| 44 | + Q ∈ (maximalIdeal Rₚ).primesOver Sₚ := by |
| 45 | + refine ⟨inferInstance, ?_⟩ |
| 46 | + rw [liesOver_iff, ← eq_maximalIdeal] |
| 47 | + exact IsMaximal.under Rₚ Q |
| 48 | + |
| 49 | +theorem liesOver_comap_of_liesOver {T : Type*} [CommRing T] [Algebra R T] [Algebra Rₚ T] |
| 50 | + [Algebra S T] [IsScalarTower R S T] [IsScalarTower R Rₚ T] (Q : Ideal T) |
| 51 | + [Q.LiesOver (maximalIdeal Rₚ)] : (comap (algebraMap S T) Q).LiesOver p := by |
| 52 | + have : Q.LiesOver p := by |
| 53 | + have : (maximalIdeal Rₚ).LiesOver p := liesOver_maximalIdeal Rₚ p _ |
| 54 | + exact LiesOver.trans Q (IsLocalRing.maximalIdeal Rₚ) p |
| 55 | + exact comap_liesOver Q p <| IsScalarTower.toAlgHom R S T |
| 56 | + |
| 57 | +variable [Algebra R Sₚ] [IsScalarTower R S Sₚ] [IsScalarTower R Rₚ Sₚ] |
| 58 | + |
| 59 | +include p in |
| 60 | +theorem liesOver_map_of_liesOver [P.IsPrime] : |
| 61 | + (P.map (algebraMap S Sₚ)).LiesOver (IsLocalRing.maximalIdeal Rₚ) := by |
| 62 | + rw [liesOver_iff, eq_comm, ← map_eq_maximalIdeal p, over_def P p] |
| 63 | + exact under_map_eq_map_under _ |
| 64 | + (over_def P p ▸ map_eq_maximalIdeal p Rₚ ▸ maximalIdeal.isMaximal Rₚ) |
| 65 | + (isPrime_map_of_liesOver S p Sₚ P).ne_top |
| 66 | + |
| 67 | +end IsLocalization.AtPrime |
| 68 | +namespace IsDedekindDomain |
| 69 | + |
| 70 | +open IsLocalization AtPrime |
| 71 | + |
| 72 | +variable [Algebra R Sₚ] [IsScalarTower R S Sₚ] [IsScalarTower R Rₚ Sₚ] [IsDedekindDomain S] |
| 73 | + [NoZeroSMulDivisors R S] |
| 74 | + |
| 75 | +/-- |
| 76 | +For `R ⊆ S` an extension of Dedekind domains and `p` a prime ideal of `R`, the bijection |
| 77 | +between the primes of `S` over `p` and the primes over the maximal ideal of `Rₚ` in `Sₚ` where |
| 78 | +`Rₚ` and `Sₚ` are resp. the localizations of `R` and `S` at the complement of `p`. |
| 79 | +-/ |
| 80 | +noncomputable def primesOverEquivPrimesOver (hp : p ≠ ⊥) : |
| 81 | + p.primesOver S ≃o (maximalIdeal Rₚ).primesOver Sₚ where |
| 82 | + toFun P := ⟨map (algebraMap S Sₚ) P.1, isPrime_map_of_liesOver S p Sₚ P.1, |
| 83 | + liesOver_map_of_liesOver p Rₚ Sₚ P.1⟩ |
| 84 | + map_rel_iff' {Q Q'} := by |
| 85 | + refine ⟨fun h ↦ ?_, fun h ↦ map_mono h⟩ |
| 86 | + have : Q'.1.IsMaximal := |
| 87 | + (primesOver.isPrime p Q').isMaximal (ne_bot_of_mem_primesOver hp Q'.prop) |
| 88 | + simpa [comap_map_of_isMaximal S p] using le_comap_of_map_le h |
| 89 | + invFun Q := ⟨comap (algebraMap S Sₚ) Q.1, IsPrime.under S Q.1, |
| 90 | + liesOver_comap_of_liesOver p Rₚ Q.1⟩ |
| 91 | + left_inv P := by |
| 92 | + have : P.val.IsMaximal := Ring.DimensionLEOne.maximalOfPrime |
| 93 | + (ne_bot_of_mem_primesOver hp P.prop) (primesOver.isPrime p P) |
| 94 | + exact SetCoe.ext <| IsLocalization.AtPrime.comap_map_of_isMaximal S p Sₚ P.1 |
| 95 | + right_inv Q := SetCoe.ext <| map_comap (algebraMapSubmonoid S p.primeCompl) Sₚ Q |
| 96 | + |
| 97 | +@[simp] |
| 98 | +theorem primesOverEquivPrimesOver_apply (hp : p ≠ ⊥) (P : p.primesOver S) : |
| 99 | + primesOverEquivPrimesOver p Rₚ Sₚ hp P = Ideal.map (algebraMap S Sₚ) P := rfl |
| 100 | + |
| 101 | +@[simp] |
| 102 | +theorem primesOverEquivPrimesOver_symm_apply (hp : p ≠ ⊥) (Q : (maximalIdeal Rₚ).primesOver Sₚ) : |
| 103 | + ((primesOverEquivPrimesOver p Rₚ Sₚ hp).symm Q).1 = Ideal.comap (algebraMap S Sₚ) Q := rfl |
| 104 | + |
| 105 | +end IsDedekindDomain |
0 commit comments