Skip to content

Commit 653c36f

Browse files
committed
chore(NumberTheory/RamificationInertia/Inertia): deprecate Ideal.inertiaDeg' (#42772)
This PR deprecates `Ideal.inertiaDeg'` in favor of `Ideal.inertiaDeg`. Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent a8ea5e4 commit 653c36f

2 files changed

Lines changed: 25 additions & 10 deletions

File tree

Mathlib/NumberTheory/RamificationInertia/Inertia.lean

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ module
77

88
public import Mathlib.RingTheory.Finiteness.Quotient
99
public 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
6566
Note: This definition of inertia degree will eventually be replaced by `Ideal.inertiaDeg`.
6667
-/
68+
@[deprecated "Use `Ideal.inertiaDeg` instead." (since := "2026-08-14")]
6769
noncomputable 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")]
7577
theorem 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")]
8587
theorem 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")]
91101
theorem 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")]
96107
theorem 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")]
102114
theorem 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")]
108121
lemma 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")]
120134
lemma 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")]
128143
theorem 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")]
139155
theorem 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

153169
section absNorm
154170

171+
@[deprecated "Use `Ideal.absNorm_pow_inertiaDeg` instead." (since := "2026-08-14")]
155172
lemma 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)`.
167184
See `absNorm_eq_pow_inertiaDeg'` for a version with `p` of type `ℕ`. -/
185+
@[deprecated "Use `Ideal.natAbs_pow_inertiaDeg` instead." (since := "2026-08-14")]
168186
lemma 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)`.
176194
See `absNorm_eq_pow_inertiaDeg` for a version with `p` of type `ℤ`. -/
195+
@[deprecated "Use `Ideal.natAbs_pow_inertiaDeg` instead." (since := "2026-08-14")]
177196
lemma 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")]
192212
theorem 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

Mathlib/RingTheory/RamificationInertia/Inertia.lean

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,8 @@ Authors: Thomas Browning
55
-/
66
module
77

8-
public import Mathlib.NumberTheory.RamificationInertia.Inertia
8+
public import Mathlib.RingTheory.Finiteness.Quotient
9+
public import Mathlib.RingTheory.Ideal.Norm.AbsNorm
910
public import Mathlib.RingTheory.QuasiFinite.Basic
1011

1112
/-!
@@ -116,12 +117,6 @@ theorem inertiaDeg_eq_of_isMaximal [q.LiesOver p] [p.IsMaximal] [q.IsMaximal] :
116117
@[deprecated (since := "2026-07-03")] alias inertiaDeg'_eq_of_isMaximal :=
117118
inertiaDeg_eq_of_isMaximal
118119

119-
theorem inertiaDeg'_eq_inertiaDeg [q.LiesOver p] [p.IsMaximal] [q.IsMaximal] :
120-
p.inertiaDeg' q = q.inertiaDeg R := by
121-
rw [inertiaDeg'_algebraMap, inertiaDeg_eq_of_isMaximal p q]
122-
123-
@[deprecated (since := "2026-07-03")] alias inertiaDeg_eq_inertiaDeg' := inertiaDeg'_eq_inertiaDeg
124-
125120
theorem inertiaDeg_tower [r.LiesOver q] :
126121
r.inertiaDeg R = q.inertiaDeg R * r.inertiaDeg S := by
127122
by_cases hr : r.IsPrime
@@ -182,7 +177,7 @@ theorem inertiaDeg_smul {G : Type*} [Group G] [MulSemiringAction G S] [SMulCommC
182177
theorem cardQuot_pow_inertiaDeg [Module.Finite R S] [p.IsMaximal] [q.IsMaximal] [q.LiesOver p] :
183178
p.cardQuot ^ q.inertiaDeg R = q.cardQuot := by
184179
let _ : Field (R ⧸ p) := Quotient.field p
185-
rw [← inertiaDeg'_eq_inertiaDeg p q, inertiaDeg'_algebraMap p q]
180+
rw [inertiaDeg_eq_of_isMaximal p q]
186181
exact Module.natCard_eq_pow_finrank.symm
187182

188183
@[deprecated (since := "2026-07-03")] alias cardQuot_pow_inertiaDeg' := cardQuot_pow_inertiaDeg

0 commit comments

Comments
 (0)