Skip to content

Commit cba4173

Browse files
feat: add Algebra.IsUnramifiedIn (leanprover-community#40886)
1 parent 901340b commit cba4173

2 files changed

Lines changed: 97 additions & 2 deletions

File tree

Mathlib/NumberTheory/RamificationInertia/Unramified.lean

Lines changed: 82 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -76,12 +76,16 @@ lemma IsUnramifiedAt.of_liesOver_of_ne_bot
7676
refine this (H.trans (Ideal.pow_right_mono ?_ _))
7777
exact Ideal.map_le_iff_le_comap.mpr Ideal.LiesOver.over.le
7878

79+
section IsUnramifiedIn
80+
81+
namespace Algebra
82+
7983
variable (R) in
8084
/--
8185
Up to technical conditions, If `T/S/R` is a tower of algebras, `P` is a prime of `T` unramified
8286
in `R`, then `P ∩ S` (as a prime of `S`) is also unramified in `R`.
8387
-/
84-
lemma Algebra.IsUnramifiedAt.of_liesOver
88+
lemma IsUnramifiedAt.of_liesOver
8589
(p : Ideal S) (P : Ideal T) [P.LiesOver p] [p.IsPrime] [P.IsPrime]
8690
[IsUnramifiedAt R P] [EssFiniteType R S] [EssFiniteType R T]
8791
[IsDedekindDomain S] [IsDomain T] [Module.IsTorsionFree S T] : IsUnramifiedAt R p :=
@@ -90,7 +94,7 @@ lemma Algebra.IsUnramifiedAt.of_liesOver
9094

9195
/-- Let `R` be a domain of characteristic 0, finite rank over `ℤ`, `S` be a Dedekind domain
9296
that is a finite `R`-algebra. Let `p` be a prime of `S`, then `p` is unramified iff `e(p) = 1`. -/
93-
lemma Algebra.isUnramifiedAt_iff_of_isDedekindDomain
97+
lemma isUnramifiedAt_iff_of_isDedekindDomain
9498
{p : Ideal S} [p.IsPrime] [IsDedekindDomain S] [EssFiniteType R S] [IsDomain R]
9599
[Module.Finite ℤ R] [CharZero R] [Algebra.IsIntegral R S]
96100
(hp : p ≠ ⊥) :
@@ -103,3 +107,79 @@ lemma Algebra.isUnramifiedAt_iff_of_isDedekindDomain
103107
have : Finite ((p.under R).ResidueField) := IsLocalization.finite _
104108
(nonZeroDivisors (R ⧸ p.under R))
105109
infer_instance
110+
111+
/-- In characteristic zero the generic point is unramified: if `S` is a domain that is integral
112+
over a characteristic-zero domain `R` and `R → S` is injective, then `S` is unramified at the zero
113+
ideal. -/
114+
theorem isUnramifiedAt_bot [IsDomain R] [IsDomain S] [Module.IsTorsionFree R S] [CharZero R]
115+
[Algebra.IsIntegral R S] : IsUnramifiedAt R (⊥ : Ideal S) := by
116+
have : IsFractionRing S (Localization.AtPrime (⊥ : Ideal S)) := by
117+
simpa [Ideal.primeCompl_bot] using Localization.isLocalization (M := (⊥ : Ideal S).primeCompl)
118+
let : Field (Localization.AtPrime (⊥ : Ideal S)) := IsFractionRing.toField S
119+
have : FaithfulSMul R (Localization.AtPrime (⊥ : Ideal S)) := by
120+
rw [faithfulSMul_iff_algebraMap_injective,
121+
IsScalarTower.algebraMap_eq R S (Localization.AtPrime ⊥)]
122+
exact (IsFractionRing.injective S _).comp (FaithfulSMul.algebraMap_injective R S)
123+
let := FractionRing.liftAlgebra R (Localization.AtPrime (⊥ : Ideal S))
124+
have : Algebra.IsAlgebraic (FractionRing R) (Localization.AtPrime ⊥) :=
125+
isAlgebraic_of_isFractionRing R S (FractionRing R) (Localization.AtPrime (⊥ : Ideal S))
126+
have : FormallyUnramified (FractionRing R) (Localization.AtPrime (⊥ : Ideal S)) :=
127+
FormallyUnramified.of_isSeparable _ _
128+
exact FormallyUnramified.comp R (FractionRing R) (Localization.AtPrime ⊥)
129+
130+
/-- In characteristic zero, the zero ideal is unramified in an integral domain extension. -/
131+
theorem isUnramifiedIn_bot [IsDomain R] [IsDomain S] [FaithfulSMul R S] [CharZero R]
132+
[Algebra.IsIntegral R S] : IsUnramifiedIn S (⊥ : Ideal R) := by
133+
intro P _ hP
134+
simpa [Ideal.eq_bot_of_liesOver_bot R P] using isUnramifiedAt_bot
135+
136+
/-- Let `S` be a Dedekind domain that is torsion-free over a domain `R`, and let `p ≠ ⊥` be an
137+
ideal of `R`. Then `p` is unramified in `S` if and only if `S` is unramified at every maximal
138+
ideal `P` of `S` lying over `p`.
139+
140+
See `Algebra.isUnramifiedIn_iff_forall_of_isDedekindDomain` if `R` is of characteristic zero. -/
141+
theorem isUnramifiedIn_iff_forall_of_isDedekindDomain' [IsDomain R] [IsDedekindDomain S]
142+
[Module.IsTorsionFree R S] {p : Ideal R} (hp : p ≠ ⊥) :
143+
IsUnramifiedIn S p ↔
144+
∀ (P : Ideal S) (_ : P.IsMaximal), P.LiesOver p → IsUnramifiedAt R P :=
145+
fun h P hP hlo ↦ h P hP.isPrime hlo,
146+
fun h P hP hlo ↦ h P (hP.isMaximal (Ideal.ne_bot_of_liesOver_of_ne_bot hp P)) hlo⟩
147+
148+
/-- Let `S` be a Dedekind domain that is integral and torsion-free over a characteristic-zero
149+
domain `R`. Then an ideal `p` of `R` is unramified in `S` if and only if `S` is unramified at every
150+
maximal ideal `P` of `S` lying over `p`. -/
151+
theorem isUnramifiedIn_iff_forall_of_isDedekindDomain [IsDomain R] [IsDedekindDomain S]
152+
[Module.IsTorsionFree R S] [CharZero R] [Algebra.IsIntegral R S] {p : Ideal R} :
153+
IsUnramifiedIn S p ↔
154+
∀ (P : Ideal S) (_ : P.IsMaximal), P.LiesOver p → IsUnramifiedAt R P := by
155+
refine ⟨fun h P hP hlo ↦ h P hP.isPrime hlo, fun h P hP hlo ↦ ?_⟩
156+
rcases eq_or_ne P ⊥ with rfl | hPbot
157+
· exact isUnramifiedAt_bot
158+
· exact h P (hP.isMaximal hPbot) hlo
159+
160+
/-- For a prime `𝔓` of `S` lying over an unramified prime `𝔭` of `R`, the ramification index
161+
`e(𝔓 ∣ 𝔭)` equals `1`. -/
162+
theorem IsUnramifiedIn.ramificationIdx_eq_one [IsDomain R] [IsDedekindDomain S]
163+
[Module.IsTorsionFree R S] [Module.Finite ℤ R] [CharZero R] [EssFiniteType R S]
164+
[Algebra.IsIntegral R S] {𝔭 : Ideal R} (hunr : IsUnramifiedIn S 𝔭) (h𝔭 : 𝔭 ≠ ⊥) {𝔓 : Ideal S}
165+
[𝔓.IsPrime] (hP : 𝔓.LiesOver 𝔭) : Ideal.ramificationIdx 𝔭 𝔓 = 1 := by
166+
rw [(Ideal.liesOver_iff 𝔓 𝔭).mp hP]
167+
exact (isUnramifiedAt_iff_of_isDedekindDomain (Ideal.ne_bot_of_liesOver_of_ne_bot h𝔭 𝔓)).mp
168+
(hunr 𝔓 inferInstance hP)
169+
170+
/-- A nonzero ideal of `R` is unramified in `S` if and only if every prime ideal of `S` lying
171+
over it has ramification index `1`. -/
172+
theorem isUnramifiedIn_iff_forall_ramificationIdx_eq_one [IsDomain R] [IsDedekindDomain S]
173+
[Module.IsTorsionFree R S] [Module.Finite ℤ R] [CharZero R] [EssFiniteType R S]
174+
[Algebra.IsIntegral R S] {𝔭 : Ideal R} (h𝔭 : 𝔭 ≠ ⊥) :
175+
IsUnramifiedIn S 𝔭 ↔
176+
∀ (𝔓 : Ideal S) [𝔓.IsPrime], 𝔓.LiesOver 𝔭 → Ideal.ramificationIdx 𝔭 𝔓 = 1 := by
177+
refine ⟨fun hunr 𝔓 _ hP ↦ hunr.ramificationIdx_eq_one h𝔭 hP, fun h 𝔓 _ hP ↦ ?_⟩
178+
apply (isUnramifiedAt_iff_of_isDedekindDomain
179+
(Ideal.ne_bot_of_liesOver_of_ne_bot h𝔭 𝔓)).mpr
180+
rw [← (Ideal.liesOver_iff 𝔓 𝔭).mp hP]
181+
exact h 𝔓 hP
182+
183+
end Algebra
184+
185+
end IsUnramifiedIn

Mathlib/RingTheory/Unramified/Locus.lean

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -89,6 +89,21 @@ theorem IsUnramifiedAt.residueField
8989

9090
end
9191

92+
section IsUnramifiedIn
93+
94+
variable {R : Type*} [CommRing R]
95+
96+
/-- A prime `𝔭` of `R` is unramified in `A` if every prime ideal `𝔓` of `A` lying over `𝔭` is
97+
unramified . -/
98+
def IsUnramifiedIn (A : Type*) [CommRing A] [Algebra R A] (𝔭 : Ideal R) : Prop :=
99+
∀ (𝔓 : Ideal A) (_ : 𝔓.IsPrime), 𝔓.LiesOver 𝔭 → Algebra.IsUnramifiedAt R 𝔓
100+
101+
variable (A : Type*) [CommRing A] [Algebra R A]
102+
103+
theorem isUnramifiedIn_top : IsUnramifiedIn A (⊤ : Ideal R) :=
104+
fun P hP _ ↦ (hP.ne_top ((Ideal.eq_top_iff_of_liesOver P (⊤ : Ideal R)).mpr rfl)).elim
105+
106+
end IsUnramifiedIn
92107
section
93108

94109
variable {R A : Type*} [CommRing R] [CommRing A] [Algebra R A]

0 commit comments

Comments
 (0)