@@ -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+
7983variable (R) in
8084/--
8185Up to technical conditions, If `T/S/R` is a tower of algebras, `P` is a prime of `T` unramified
8286in `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
9296that 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
0 commit comments