@@ -6,9 +6,9 @@ Authors: Thomas Browning
66module
77
88public import Mathlib.NumberTheory.RamificationInertia.Ramification
9- public import Mathlib.RingTheory.Flat.Localization
109public import Mathlib.RingTheory.LocalRing.Length
1110public import Mathlib.RingTheory.LocalRing.ResidueField.Instances
11+ public import Mathlib.RingTheory.QuasiFinite.Basic
1212public import Mathlib.RingTheory.Unramified.LocalRing
1313
1414/-!
@@ -62,6 +62,24 @@ theorem ramificationIdx'_def [q.IsPrime] :
6262theorem 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+
6583theorem 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