77
88public import Mathlib.RingTheory.Finiteness.Quotient
99public import Mathlib.RingTheory.Ideal.Norm.AbsNorm
10+ public import Mathlib.RingTheory.RamificationInertia.Inertia
1011
1112/-!
1213# Ramification index and inertia degree
@@ -64,14 +65,15 @@ and there is an algebra structure `R / p → S / P`.
6465
6566Note: This definition of inertia degree will eventually be replaced by `Ideal.inertiaDeg`.
6667-/
68+ @ [deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14" )]
6769noncomputable def inertiaDeg' : ℕ :=
6870 if hPp : comap f P = p then
6971 letI : Algebra (R ⧸ p) (S ⧸ P) := Quotient.algebraQuotientOfLEComap hPp.ge
7072 finrank (R ⧸ p) (S ⧸ P)
7173 else 0
7274
7375-- Useful for the `nontriviality` tactic using `comap_eq_of_scalar_tower_quotient`.
74- @[simp]
76+ @ [simp, deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14" ) ]
7577theorem inertiaDeg'_of_subsingleton [hp : p.IsMaximal] [hQ : Subsingleton (S ⧸ P)] :
7678 inertiaDeg' p P = 0 := by
7779 have := Ideal.Quotient.subsingleton_iff.mp hQ
@@ -81,30 +83,41 @@ theorem inertiaDeg'_of_subsingleton [hp : p.IsMaximal] [hQ : Subsingleton (S ⧸
8183@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_of_subsingleton :=
8284 inertiaDeg'_of_subsingleton
8385
84- @[simp]
86+ @ [simp, deprecated "Use `Ideal.inertiaDeg_eq_of_isMaximal` instead." (since := "2026-08-14" ) ]
8587theorem inertiaDeg'_algebraMap [P.LiesOver p] :
8688 inertiaDeg' p P = finrank (R ⧸ p) (S ⧸ P) := by
8789 rw [inertiaDeg', dite_eq_left (over_def P p).symm]
8890
8991@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_algebraMap := inertiaDeg'_algebraMap
9092
93+ @ [deprecated "Use `inertiaDeg_eq_of_isMaximal` instead." (since := "2026-08-14" )]
94+ theorem inertiaDeg'_eq_inertiaDeg [P.LiesOver p] [p.IsMaximal] [P.IsMaximal] :
95+ p.inertiaDeg' P = P.inertiaDeg R := by
96+ rw [inertiaDeg'_algebraMap, inertiaDeg_eq_of_isMaximal p P]
97+
98+ @ [deprecated (since := "2026-07-03" )] alias inertiaDeg_eq_inertiaDeg' := inertiaDeg'_eq_inertiaDeg
99+
100+ @ [deprecated "Use `Ideal.inertiaDeg_pos` instead." (since := "2026-08-14" )]
91101theorem inertiaDeg'_pos [p.IsMaximal] [Module.Finite R S] [P.LiesOver p] : 0 < inertiaDeg' p P :=
92102 have : Nontrivial (S ⧸ P) := Quotient.nontrivial_of_liesOver_of_isPrime P p
93103 finrank_pos.trans_eq (inertiaDeg'_algebraMap p P).symm
94104
95105/-- Variant with a weaker constraint, but on the prime upstairs instead. -/
106+ @ [deprecated "Use `Ideal.inertiaDeg_pos` instead." (since := "2026-08-14" )]
96107theorem inertiaDeg'_pos' [P.IsPrime] [Module.Finite R S] [P.LiesOver p] : 0 < inertiaDeg' p P :=
97108 have : p.IsPrime := Ideal.over_def P p ▸ inferInstance
98109 Module.finrank_pos.trans_eq (inertiaDeg'_algebraMap p P).symm
99110
100111@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_pos' := inertiaDeg'_pos'
101112
113+ @ [deprecated "Use `Ideal.inertiaDeg_pos` instead." (since := "2026-08-14" )]
102114theorem inertiaDeg'_ne_zero [p.IsMaximal] [Module.Finite R S] [P.LiesOver p] :
103115 inertiaDeg' p P ≠ 0 :=
104116 (Nat.ne_of_lt (inertiaDeg'_pos p P)).symm
105117
106118@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_ne_zero := inertiaDeg'_ne_zero
107119
120+ @ [deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14" )]
108121lemma inertiaDeg'_comap_eq (e : S ≃ₐ[R] S₁) (P : Ideal S₁) :
109122 inertiaDeg' p (P.comap e) = inertiaDeg' p P := by
110123 have he : (P.comap e).comap (algebraMap R S) = p ↔ P.comap (algebraMap R S₁) = p := by
@@ -117,6 +130,7 @@ lemma inertiaDeg'_comap_eq (e : S ≃ₐ[R] S₁) (P : Ideal S₁) :
117130
118131@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_comap_eq := inertiaDeg'_comap_eq
119132
133+ @ [deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14" )]
120134lemma inertiaDeg'_map_eq (P : Ideal S)
121135 {E : Type *} [EquivLike E S S₁] [AlgEquivClass E R S S₁] (e : E) :
122136 inertiaDeg' p (P.map e) = inertiaDeg' p P := by
@@ -125,6 +139,7 @@ lemma inertiaDeg'_map_eq (P : Ideal S)
125139
126140@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_map_eq := inertiaDeg'_map_eq
127141
142+ @ [deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14" )]
128143theorem inertiaDeg'_bot [Nontrivial R] [IsDomain S] [Algebra.IsIntegral R S]
129144 [hP : P.LiesOver (⊥ : Ideal R)] :
130145 (⊥ : Ideal R).inertiaDeg' P = finrank R S := by
@@ -136,6 +151,7 @@ theorem inertiaDeg'_bot [Nontrivial R] [IsDomain S] [Algebra.IsIntegral R S]
136151
137152@ [deprecated (since := "2026-07-03" )] alias inertiaDeg_bot := inertiaDeg'_bot
138153
154+ @ [deprecated "Use `Ideal.inertiaDeg_above_le` instead." (since := "2026-08-14" )]
139155theorem inertiaDeg'_le_inertiaDeg' {T : Type *} [CommRing T] [Algebra R T] [Algebra S T]
140156 [IsScalarTower R S T] [Module.Finite R T] (Q : Ideal T) [P.LiesOver p] [Q.LiesOver P]
141157 [p.IsPrime] : inertiaDeg' P Q ≤ inertiaDeg' p Q := by
@@ -152,6 +168,7 @@ end DecEq
152168
153169section absNorm
154170
171+ @ [deprecated "Use `Ideal.absNorm_pow_inertiaDeg` instead." (since := "2026-08-14" )]
155172lemma absNorm_eq_pow_inertiaDeg'_of_liesOver {S : Type *} [CommRing S] [IsDedekindDomain S]
156173 [Module.Free ℤ S] [IsDedekindDomain R] [Module.Free ℤ R] [Algebra S R] [Module.Finite S R]
157174 (P : Ideal R) (p : Ideal S) [P.LiesOver p] (hp : p.IsPrime) (hp_ne_bot : p ≠ ⊥) :
@@ -165,6 +182,7 @@ lemma absNorm_eq_pow_inertiaDeg'_of_liesOver {S : Type*} [CommRing S] [IsDedekin
165182/-- The absolute norm of an ideal `P` above a rational prime `p` is
166183`|p| ^ ((span {p}).inertiaDeg' P)`.
167184See `absNorm_eq_pow_inertiaDeg'` for a version with `p` of type `ℕ`. -/
185+ @ [deprecated "Use `Ideal.natAbs_pow_inertiaDeg` instead." (since := "2026-08-14" )]
168186lemma absNorm_eq_pow_inertiaDeg [IsDedekindDomain R] [Module.Free ℤ R] [Module.Finite ℤ R] {p : ℤ}
169187 (P : Ideal R) [P.LiesOver (span {p})] (hp : Prime p) :
170188 absNorm P = p.natAbs ^ ((span {p}).inertiaDeg' P) := by
@@ -174,6 +192,7 @@ lemma absNorm_eq_pow_inertiaDeg [IsDedekindDomain R] [Module.Free ℤ R] [Module
174192/-- The absolute norm of an ideal `P` above a rational (positive) prime `p` is
175193`p ^ ((span {p}).inertiaDeg' P)`.
176194See `absNorm_eq_pow_inertiaDeg` for a version with `p` of type `ℤ`. -/
195+ @ [deprecated "Use `Ideal.natAbs_pow_inertiaDeg` instead." (since := "2026-08-14" )]
177196lemma absNorm_eq_pow_inertiaDeg' [IsDedekindDomain R] [Module.Free ℤ R] [Module.Finite ℤ R] {p : ℕ}
178197 (P : Ideal R) [P.LiesOver (span {(p : ℤ)})] (hp : p.Prime) :
179198 absNorm P = p ^ ((span {(p : ℤ)}).inertiaDeg' P) :=
@@ -189,6 +208,7 @@ variable [Algebra R S] [Algebra S T] [Algebra R T] [IsScalarTower R S T]
189208/-- Let `T / S / R` be a tower of algebras, `p, P, I` be ideals in `R, S, T`, respectively,
190209 and `p` and `P` are maximal. If `p = P ∩ S` and `P = I ∩ S`,
191210 then `f (I | p) = f (P | p) * f (I | P)`. -/
211+ @ [deprecated "Use `Ideal.inertiaDeg_tower` instead." (since := "2026-08-14" )]
192212theorem inertiaDeg'_algebra_tower (p : Ideal R) (P : Ideal S) (I : Ideal T) [p.IsMaximal]
193213 [P.IsMaximal] [P.LiesOver p] [I.LiesOver P] : inertiaDeg' p I =
194214 inertiaDeg' p P * inertiaDeg' P I := by
0 commit comments