Skip to content

Commit 8a9a228

Browse files
committed
refactor(NumberTheory/NumberField/Ideal/KummerDedekind): switch to new definitions of ramification index and inertia degree (leanprover-community#41185)
This PR switches `KummerDedekind.lean` over to the new definitions of ramification index and inertia degree. Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent c82fea1 commit 8a9a228

3 files changed

Lines changed: 38 additions & 15 deletions

File tree

Mathlib/NumberTheory/NumberField/Cyclotomic/Ideal.lean

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -305,7 +305,6 @@ theorem inertiaDeg_eq_of_not_dvd (hm : ¬ p ∣ m) :
305305
rw [Multiset.mem_toFinset, Polynomial.mem_normalizedFactors_iff
306306
(map_monic_ne_zero (minpoly.monic ζ.isIntegral))] at h₂
307307
have : P.IsMaximal := .of_liesOver_isMaximal P 𝒑
308-
rw [← inertiaDeg_eq_inertiaDeg' 𝒑]
309308
rw [h₃, natDegree_of_dvd_cyclotomic_of_irreducible (by simp) hm (f := 1) _ h₂.1]
310309
· simpa using (orderOf_injective _ Units.coeHom_injective (ZMod.unitOfCoprime p hm)).symm
311310
· refine dvd_trans h₂.2.2 ?_
@@ -327,7 +326,7 @@ theorem ramificationIdx_eq_of_not_dvd (hm : ¬ p ∣ m) :
327326
simp only [Subtype.coe_eta, Equiv.symm_apply_apply] at h₃
328327
rw [Multiset.mem_toFinset, Polynomial.mem_normalizedFactors_iff
329328
(map_monic_ne_zero (minpoly.monic ζ.isIntegral))] at h₂
330-
rw [← ramificationIdx_eq_ramificationIdx' 𝒑 P (by simpa using hp.out.ne_zero), h₃]
329+
rw [h₃]
331330
refine multiplicity_eq_of_emultiplicity_eq_some (le_antisymm ?_ ?_)
332331
· apply emultiplicity_le_one_of_separable
333332
· exact isUnit_iff_degree_eq_zero.not.mpr (Irreducible.degree_pos h₂.1).ne'

Mathlib/NumberTheory/NumberField/Ideal/KummerDedekind.lean

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ module
77

88
public import Mathlib.NumberTheory.KummerDedekind
99
public import Mathlib.NumberTheory.NumberField.Basic
10-
public import Mathlib.NumberTheory.RamificationInertia.Basic
10+
public import Mathlib.RingTheory.RamificationInertia.Basic
1111
public import Mathlib.RingTheory.Ideal.Int
1212

1313
/-!
@@ -209,20 +209,24 @@ The residual degree of the ideal corresponding to the class of `Q ∈ ℤ[X]` mo
209209
-/
210210
theorem inertiaDeg_primesOverSpanEquivMonicFactorsMod_symm_apply (hp : ¬ p ∣ exponent θ)
211211
{Q : ℤ[X]} (hQ : Q.map (Int.castRingHom (ZMod p)) ∈ monicFactorsMod θ p) :
212-
inertiaDeg (span {(p : ℤ)}) ((primesOverSpanEquivMonicFactorsMod hp).symm
213-
⟨Q.map (Int.castRingHom (ZMod p)), hQ⟩ : Ideal (𝓞 K)) =
212+
inertiaDeg' ((primesOverSpanEquivMonicFactorsMod hp).symm
213+
⟨Q.map (Int.castRingHom (ZMod p)), hQ⟩ : Ideal (𝓞 K)) =
214214
natDegree (Q.map (Int.castRingHom (ZMod p))) := by
215215
-- This is needed for `inertiaDeg_algebraMap` below to work
216+
have : (span {↑p, (aeval θ) Q}).IsMaximal := by
217+
rw [← Ideal.primesOverSpanEquivMonicFactorsMod_symm_apply_eq_span hp hQ]
218+
apply Ideal.primesOver.isMaximal
216219
have := liesOver_primesOverSpanEquivMonicFactorsMod_symm hp hQ
217-
rw [primesOverSpanEquivMonicFactorsMod_symm_apply_eq_span, inertiaDeg_algebraMap,
220+
rw [primesOverSpanEquivMonicFactorsMod_symm_apply_eq_span,
221+
← inertiaDeg_eq_inertiaDeg' (span {(p : ℤ)}), inertiaDeg_algebraMap,
218222
← finrank_quotient_span_eq_natDegree]
219223
refine Algebra.finrank_eq_of_equiv_equiv (Int.quotientSpanNatEquivZMod p) ?_ (by ext; simp)
220224
exact (ZModXQuotSpanEquivQuotSpanPair hp hQ).symm
221225

222226
theorem inertiaDeg_primesOverSpanEquivMonicFactorsMod_symm_apply' (hp : ¬ p ∣ exponent θ)
223227
{Q : (ZMod p)[X]} (hQ : Q ∈ monicFactorsMod θ p) :
224-
inertiaDeg (span {(p : ℤ)})
225-
((primesOverSpanEquivMonicFactorsMod hp).symm ⟨Q, hQ⟩ : Ideal (𝓞 K)) = natDegree Q := by
228+
inertiaDeg'
229+
((primesOverSpanEquivMonicFactorsMod hp).symm ⟨Q, hQ⟩ : Ideal (𝓞 K)) = natDegree Q := by
226230
obtain ⟨S, rfl⟩ := (map_surjective _ (ZMod.ringHom_surjective (Int.castRingHom (ZMod p)))) Q
227231
rw [inertiaDeg_primesOverSpanEquivMonicFactorsMod_symm_apply]
228232

@@ -233,12 +237,12 @@ The ramification index of the ideal corresponding to the class of `Q ∈ ℤ[X]`
233237
-/
234238
theorem ramificationIdx_primesOverSpanEquivMonicFactorsMod_symm_apply (hp : ¬ p ∣ exponent θ)
235239
{Q : ℤ[X]} (hQ : Q.map (Int.castRingHom (ZMod p)) ∈ monicFactorsMod θ p) :
236-
ramificationIdx (span {(p : ℤ)})
240+
ramificationIdx'
237241
((primesOverSpanEquivMonicFactorsMod hp).symm
238-
⟨Q.map (Int.castRingHom (ZMod p)), hQ⟩ : Ideal (𝓞 K)) =
242+
⟨Q.map (Int.castRingHom (ZMod p)), hQ⟩ : Ideal (𝓞 K)) =
239243
multiplicity (Q.map (Int.castRingHom (ZMod p)))
240244
((minpoly ℤ θ).map (Int.castRingHom (ZMod p))) := by
241-
rw [ramificationIdx_eq_multiplicity (map_ne_bot_of_ne_bot (by simp [NeZero.ne p])) inferInstance]
245+
rw [ramificationIdx'_eq_multiplicity (span {↑p}) _ (map_ne_bot_of_ne_bot (by simp [NeZero.ne p]))]
242246
· apply multiplicity_eq_of_emultiplicity_eq
243247
rw [← emultiplicity_map_eq (mapEquiv (Int.quotientSpanNatEquivZMod p).symm),
244248
emultiplicity_factors_map_eq_emultiplicity inferInstance (by simp [NeZero.ne p])
@@ -251,8 +255,8 @@ theorem ramificationIdx_primesOverSpanEquivMonicFactorsMod_symm_apply (hp : ¬ p
251255

252256
theorem ramificationIdx_primesOverSpanEquivMonicFactorsMod_symm_apply' (hp : ¬ p ∣ exponent θ)
253257
{Q : (ZMod p)[X]} (hQ : Q ∈ monicFactorsMod θ p) :
254-
ramificationIdx (span {(p : ℤ)})
255-
((primesOverSpanEquivMonicFactorsMod hp).symm ⟨Q, hQ⟩ : Ideal (𝓞 K)) =
258+
ramificationIdx'
259+
((primesOverSpanEquivMonicFactorsMod hp).symm ⟨Q, hQ⟩ : Ideal (𝓞 K)) =
256260
multiplicity Q ((minpoly ℤ θ).map (Int.castRingHom (ZMod p))) := by
257261
obtain ⟨S, rfl⟩ := (map_surjective _ (ZMod.ringHom_surjective (Int.castRingHom (ZMod p)))) Q
258262
rw [ramificationIdx_primesOverSpanEquivMonicFactorsMod_symm_apply]

Mathlib/RingTheory/RamificationInertia/Ramification.lean

Lines changed: 22 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -145,8 +145,11 @@ theorem ramificationIdx_eq_ramificationIdx' [IsDomain R] [IsDedekindDomain S]
145145
have hpS : p.map (algebraMap R S) ≠ ⊥ := map_ne_bot_of_ne_bot hp
146146
exact ramificationIdx_eq_ramificationIdx'' p q hpS
147147

148-
open UniqueFactorizationMonoid in
149-
theorem IsDedekindDomain.ramificationIdx'_eq_factors_count [IsDedekindDomain S]
148+
namespace IsDedekindDomain
149+
150+
open UniqueFactorizationMonoid
151+
152+
theorem ramificationIdx'_eq_factors_count [IsDedekindDomain S]
150153
[q.LiesOver p] (hp0 : p.map (algebraMap R S) ≠ ⊥) :
151154
q.ramificationIdx' R = (factors (p.map (algebraMap R S))).count q := by
152155
by_cases hq : q.IsPrime; swap
@@ -156,6 +159,23 @@ theorem IsDedekindDomain.ramificationIdx'_eq_factors_count [IsDedekindDomain S]
156159
have hq0 : q ≠ ⊥ := ne_bot_of_le_ne_bot hp0 (map_le_of_le_comap (q.over_def p).le)
157160
rw [← ramificationIdx_eq_ramificationIdx'' p q hp0, ramificationIdx_eq_factors_count hp0 ‹_› hq0]
158161

162+
open UniqueFactorizationMonoid in
163+
theorem ramificationIdx'_eq_normalizedFactors_count [IsDedekindDomain S]
164+
[q.LiesOver p] (hp0 : p.map (algebraMap R S) ≠ ⊥) :
165+
q.ramificationIdx' R = (normalizedFactors (p.map (algebraMap R S))).count q := by
166+
rw [← factors_eq_normalizedFactors, ← ramificationIdx'_eq_factors_count p q hp0]
167+
168+
open UniqueFactorizationMonoid in
169+
theorem ramificationIdx'_eq_multiplicity [IsDedekindDomain S]
170+
[q.IsPrime] [q.LiesOver p] (hp : p.map (algebraMap R S) ≠ ⊥) :
171+
q.ramificationIdx' R = multiplicity q (p.map (algebraMap R S)) := by
172+
have hq : q ≠ ⊥ := ne_bot_of_le_ne_bot hp (map_le_of_le_comap (q.over_def p).le)
173+
rw [ramificationIdx'_eq_normalizedFactors_count p q hp,
174+
multiplicity_eq_of_emultiplicity_eq_some (emultiplicity_eq_count_normalizedFactors
175+
(prime_of_isPrime hq inferInstance).irreducible hp), normalize_eq]
176+
177+
end IsDedekindDomain
178+
159179
/-- See `ramificationIdx'_tower` for a version that does not assume primality. -/
160180
theorem ramificationIdx'_tower' [q.IsPrime] [r.IsPrime] [r.LiesOver q]
161181
[Algebra (Localization.AtPrime q) (Localization.AtPrime r)]

0 commit comments

Comments
 (0)