Skip to content

Commit 5135da2

Browse files
committed
feat(RingTheory/RamificationInertia/Ramification): positivity of ramification index (leanprover-community#39977)
This PR proves positivity of the new definition of ramification index. Co-authored-by: tb65536 <thomas.l.browning@gmail.com>
1 parent fb4d9bf commit 5135da2

2 files changed

Lines changed: 24 additions & 1 deletion

File tree

Mathlib/RingTheory/LocalRing/ResidueField/Fiber.lean

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -232,3 +232,8 @@ noncomputable def PrimeSpectrum.preimageHomeomorphFiber (R S : Type*) [CommRing
232232
simp only [Equiv.toFun_as_coe, RelIso.coe_fn_toEquiv, Homeomorph.symm_apply_apply]
233233
simp
234234
continuous_invFun := H.continuous }
235+
236+
@[simp]
237+
theorem PrimeSpectrum.coe_primesOverOrderIsoFiber_symm_apply (q : PrimeSpectrum (p.Fiber S)) :
238+
(primesOverOrderIsoFiber R S p).symm q = q.1.comap Algebra.TensorProduct.includeRight :=
239+
rfl

Mathlib/RingTheory/RamificationInertia/Ramification.lean

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,9 @@ Authors: Thomas Browning
66
module
77

88
public import Mathlib.NumberTheory.RamificationInertia.Ramification
9-
public import Mathlib.RingTheory.Flat.Localization
109
public import Mathlib.RingTheory.LocalRing.Length
1110
public import Mathlib.RingTheory.LocalRing.ResidueField.Instances
11+
public import Mathlib.RingTheory.QuasiFinite.Basic
1212
public import Mathlib.RingTheory.Unramified.LocalRing
1313

1414
/-!
@@ -62,6 +62,24 @@ theorem ramificationIdx'_def [q.IsPrime] :
6262
theorem ramificationIdx'_of_not_isPrime (hq : ¬ q.IsPrime) : q.ramificationIdx' R = 0 :=
6363
dif_neg hq
6464

65+
theorem ramificationIdx'_pos [q.IsPrime] [Module.Finite R S] : 0 < q.ramificationIdx' R := by
66+
let p := q.under R
67+
let Sq := Localization.AtPrime q
68+
rw [ramificationIdx'_def]
69+
apply ENat.toNat_pos
70+
· rw [← pos_iff_ne_zero, Module.length_pos_iff, Submodule.Quotient.nontrivial_iff,
71+
IsScalarTower.algebraMap_eq R S, ← map_map, ← lt_top_iff_ne_top]
72+
grw [map_mono map_comap_le, Localization.AtPrime.map_eq_maximalIdeal]
73+
exact (IsLocalRing.maximalIdeal.isMaximal _).lt_top
74+
· let r := PrimeSpectrum.primesOverOrderIsoFiber R S p (primesOver.mk p q)
75+
have : q = r.1.comap Algebra.TensorProduct.includeRight := by
76+
rw [← PrimeSpectrum.coe_primesOverOrderIsoFiber_symm_apply, OrderIso.symm_apply_apply]
77+
let := Localization.AtPrime.algebraOfLiesOver p (r.1.comap Algebra.TensorProduct.includeRight)
78+
have : IsArtinianRing (Sq ⧸ map (algebraMap R Sq) p) := by
79+
convert (Fiber.localizationAlgEquivQuotient p r.1).toRingEquiv.isArtinianRing
80+
rwa [Module.length_eq_of_surjective (R := Sq ⧸ p.map (algebraMap R Sq)) Quotient.mk_surjective,
81+
Module.length_ne_top_iff, ← isArtinianRing_iff_isFiniteLength]
82+
6583
theorem ramificationIdx'_eq_one [q.IsPrime] [Algebra.EssFiniteType R S]
6684
[Algebra.IsUnramifiedAt R q] : q.ramificationIdx' R = 1 := by
6785
let p := q.under R

0 commit comments

Comments
 (0)