Definitions/Def_Mathlib_RingTheory_Valuation_UpperRamificationGroup.lean
Herbrand functions and upper-numbering ramification groups
Throughout, R is a commutative local ring with maximal ideal \mathfrak m and G is a group acting on R by ring automorphisms; the lower-numbering groups G_i = lowerRamificationGroup R G i are the inertia groups of \mathfrak m^{i+1}, i.e. the \sigma \in G with \sigma x - x \in \mathfrak m^{i+1} for all x \in R. The module sets g_i := lowerRamificationCard R G i, the cardinality (via Nat.card) of G_i, and records that g_i \ge 1 when G is finite and g_i = 1 when G is trivial. The Herbrand function herbrandPhi is defined on \mathbb Q by \varphi(u) = u for u \le 0 and, for u > 0, by \varphi(u) = \Big(\sum_{i=1}^{\lfloor u\rfloor} g_i + (u - \lfloor u\rfloor)\, g_{\lfloor u\rfloor + 1}\Big) \big/ g_0, the floor being the natural-number floor. For finite G it is shown to be strictly monotone, hence injective, positive on positive arguments, to satisfy \varphi(n) = (\sum_{i=1}^{n} g_i)/g_0 at natural arguments, and to take arbitrarily large values at natural arguments. The inverse function herbrandPsi is defined as Function.invFun of \varphi, so that it is a genuine left inverse, \psi(\varphi(u)) = u, for finite G.
The upper numbering is then given integrally: upperRamificationIndex R G v is the least natural number n with v \le \varphi(n), and G^v := upperRamificationGroup R G v is G_n for that n — thus a ceiling variant of the classical G_{\psi(v)}, agreeing with the classical definition at the values v = \varphi(n), where G^{\varphi(n)} = G_n. Membership unfolds to the congruence condition \sigma x - x \in \mathfrak m^{n+1} for all x\in R. Recorded properties: the index vanishes for v \le 0 and is monotone; G^v = G_0 for v \le 0, G^0 is the kernel of the action of G on the residue field, G^v \le G_0 always, and v \mapsto G^v is antitone for finite G. The predicate UpperRamificationQuotientCompat R G S H asserts, for a second local ring S with an action of G/H by a normal subgroup H, that for every v \ge 0 the image of G^v under G \to G/H equals the corresponding upper-numbering group of S. Finally, for a valuation subring A of an extension L/K, the same \varphi, \psi and G^v are defined for the action of the decomposition subgroup on A, with G^0 identified with the inertia subgroup, G^v contained in it, and antitonicity when the decomposition subgroup is finite.
Relation to Mathlib
Mathlib supplies the underlying ingredients — Ideal.inertia, the maximal ideal and residue field of a local ring, and ValuationSubring.decompositionSubgroup/inertiaSubgroup — but no Herbrand function or upper-numbering ramification filtration; those, together with the lower-numbering groups defined as inertia groups of powers of the maximal ideal, are the project's own.
Where it is used
These definitions form the project's infrastructure for wild ramification of local rings and valuation subrings, used where ramification filtrations in upper numbering are needed in the analysis of local conditions on Galois representations.
References
- J.-P. Serre, Local Fields, Graduate Texts in Mathematics 67, Springer, 1979, Chapter IV
- H. Darmon, F. Diamond and R. Taylor, Fermat's Last Theorem, in: Current Developments in Mathematics 1995, International Press, 1995, 1–154
References are suggested automatically and have not been individually verified.
English text generated automatically from the Lean source; the Lean statement is authoritative.
- 375 lines
- 41 declarations
- used in the statements of 39 theorems and imported by 41 proofs
- imports 1 definition modules
Source file: Definitions/Def_Mathlib_RingTheory_Valuation_UpperRamificationGroup.lean
Declarations
- def
IsLocalRing.lowerRamificationCard - theorem
IsLocalRing.lowerRamificationCard_pos - theorem
IsLocalRing.one_le_lowerRamificationCard_cast - theorem
IsLocalRing.lowerRamificationCard_of_subsingleton - def
IsLocalRing.herbrandPhi - theorem
IsLocalRing.herbrandPhi_of_nonpos - theorem
IsLocalRing.herbrandPhi_zero - theorem
IsLocalRing.herbrandPhi_of_pos - theorem
IsLocalRing.herbrandPhi_natCast - theorem
IsLocalRing.herbrandPhi_nonneg - theorem
IsLocalRing.herbrandPhi_pos - theorem
IsLocalRing.herbrandPhi_strictMono - theorem
IsLocalRing.herbrandPhi_monotone - theorem
IsLocalRing.herbrandPhi_injective - theorem
IsLocalRing.exists_natCast_le_herbrandPhi - def
IsLocalRing.herbrandPsi - theorem
IsLocalRing.herbrandPsi_herbrandPhi - theorem
IsLocalRing.herbrandPsi_zero - def
IsLocalRing.upperRamificationIndex - def
IsLocalRing.upperRamificationGroup - theorem
IsLocalRing.upperRamificationIndex_of_nonpos - theorem
IsLocalRing.upperRamificationIndex_zero - theorem
IsLocalRing.mem_upperRamificationGroup - theorem
IsLocalRing.upperRamificationGroup_of_nonpos - theorem
IsLocalRing.upperRamificationGroup_zero - theorem
IsLocalRing.upperRamificationGroup_zero_eq_ker - theorem
IsLocalRing.upperRamificationGroup_le_zero - theorem
IsLocalRing.le_herbrandPhi_upperRamificationIndex - theorem
IsLocalRing.upperRamificationIndex_le - theorem
IsLocalRing.upperRamificationIndex_monotone - theorem
IsLocalRing.upperRamificationGroup_antitone - theorem
IsLocalRing.upperRamificationIndex_herbrandPhi_natCast - theorem
IsLocalRing.upperRamificationGroup_herbrandPhi_natCast - def
IsLocalRing.UpperRamificationQuotientCompat - def
ValuationSubring.herbrandPhi - def
ValuationSubring.herbrandPsi - def
ValuationSubring.upperRamificationGroup - theorem
ValuationSubring.herbrandPhi_zero - theorem
ValuationSubring.upperRamificationGroup_zero - theorem
ValuationSubring.upperRamificationGroup_le_inertiaSubgroup - theorem
ValuationSubring.upperRamificationGroup_antitone
Source
import Mathlib import Definitions.Def_Mathlib_RingTheory_Valuation_LowerRamificationGroup set_option autoImplicit false namespace IsLocalRing variable {R : Type*} [CommRing R] [IsLocalRing R] variable {G : Type*} [Group G] [MulSemiringAction G R] variable (R G) in noncomputable def lowerRamificationCard (i : ℕ) : ℕ := Nat.card (lowerRamificationGroup R G i) theorem lowerRamificationCard_pos [Finite G] (i : ℕ) : 0 < lowerRamificationCard R G i := by haveI : Nonempty (lowerRamificationGroup R G i) := ⟨⟨1, Subgroup.one_mem _⟩⟩ exact Nat.card_pos theorem one_le_lowerRamificationCard_cast [Finite G] (i : ℕ) : (1 : ℚ) ≤ (lowerRamificationCard R G i : ℚ) := Nat.one_le_cast.mpr (Nat.one_le_iff_ne_zero.mpr (lowerRamificationCard_pos i).ne') theorem lowerRamificationCard_of_subsingleton [Subsingleton G] (i : ℕ) : lowerRamificationCard R G i = 1 := by haveI : Nonempty (lowerRamificationGroup R G i) := ⟨⟨1, Subgroup.one_mem _⟩⟩ haveI : Subsingleton (lowerRamificationGroup R G i) := ⟨fun a b => Subtype.ext (Subsingleton.elim _ _)⟩ exact Nat.card_unique variable (R G) in noncomputable def herbrandPhi (u : ℚ) : ℚ := if u ≤ 0 then u else ((∑ i ∈ Finset.Icc 1 ⌊u⌋₊, (lowerRamificationCard R G i : ℚ)) + (u - ⌊u⌋₊) * lowerRamificationCard R G (⌊u⌋₊ + 1)) / lowerRamificationCard R G 0 theorem herbrandPhi_of_nonpos {u : ℚ} (h : u ≤ 0) : herbrandPhi R G u = u := if_pos h @[simp] theorem herbrandPhi_zero : herbrandPhi R G 0 = 0 := herbrandPhi_of_nonpos le_rfl theorem herbrandPhi_of_pos {u : ℚ} (h : 0 < u) : herbrandPhi R G u = ((∑ i ∈ Finset.Icc 1 ⌊u⌋₊, (lowerRamificationCard R G i : ℚ)) + (u - ⌊u⌋₊) * lowerRamificationCard R G (⌊u⌋₊ + 1)) / lowerRamificationCard R G 0 := if_neg (not_le.mpr h) theorem herbrandPhi_natCast (n : ℕ) : herbrandPhi R G n = (∑ i ∈ Finset.Icc 1 n, (lowerRamificationCard R G i : ℚ)) / lowerRamificationCard R G 0 := by rcases Nat.eq_zero_or_pos n with rfl | hn · rw [show Finset.Icc 1 0 = (∅ : Finset ℕ) from Finset.Icc_eq_empty (by omega), Finset.sum_empty, zero_div, Nat.cast_zero, herbrandPhi_zero] · have hpos : (0 : ℚ) < n := Nat.cast_pos.mpr hn rw [herbrandPhi_of_pos hpos, Nat.floor_natCast, sub_self, zero_mul, add_zero] theorem herbrandPhi_nonneg {u : ℚ} (h : 0 ≤ u) : 0 ≤ herbrandPhi R G u := by rcases eq_or_lt_of_le h with rfl | hu · simp · rw [herbrandPhi_of_pos hu] have h1 : (0 : ℚ) ≤ u - ⌊u⌋₊ := sub_nonneg.mpr (Nat.floor_le hu.le) have h2 : (0 : ℚ) ≤ ∑ i ∈ Finset.Icc 1 ⌊u⌋₊, (lowerRamificationCard R G i : ℚ) := Finset.sum_nonneg fun i _ => Nat.cast_nonneg _ exact div_nonneg (add_nonneg h2 (mul_nonneg h1 (Nat.cast_nonneg _))) (Nat.cast_nonneg _) theorem herbrandPhi_pos [Finite G] {v : ℚ} (hv : 0 < v) : 0 < herbrandPhi R G v := by rw [herbrandPhi_of_pos hv] refine div_pos ?_ (Nat.cast_pos.mpr (lowerRamificationCard_pos (R := R) (G := G) 0)) rcases Nat.eq_zero_or_pos ⌊v⌋₊ with h0 | h0 · rw [h0, show Finset.Icc 1 0 = (∅ : Finset ℕ) from Finset.Icc_eq_empty (by omega), Finset.sum_empty, Nat.cast_zero, sub_zero] simpa using mul_pos hv (Nat.cast_pos.mpr (lowerRamificationCard_pos (R := R) (G := G) 1) : (0 : ℚ) < _) · refine add_pos_of_pos_of_nonneg (Finset.sum_pos (fun i _ => ?_) ⟨1, Finset.mem_Icc.mpr ⟨le_rfl, h0⟩⟩) ?_ · exact Nat.cast_pos.mpr (lowerRamificationCard_pos i) · exact mul_nonneg (sub_nonneg.mpr (Nat.floor_le hv.le)) (Nat.cast_nonneg _) set_option maxHeartbeats 1000000 in theorem herbrandPhi_strictMono [Finite G] : StrictMono (herbrandPhi R G) := by intro u v huv by_cases hv : v ≤ 0 · rw [herbrandPhi_of_nonpos (huv.le.trans hv), herbrandPhi_of_nonpos hv] exact huv rw [not_le] at hv by_cases hu : u ≤ 0 · rw [herbrandPhi_of_nonpos hu] exact hu.trans_lt (herbrandPhi_pos hv) · rw [not_le] at hu rw [herbrandPhi_of_pos hu, herbrandPhi_of_pos hv, div_eq_mul_inv, div_eq_mul_inv] have hg0 : (0 : ℚ) < (lowerRamificationCard R G 0 : ℚ) := Nat.cast_pos.mpr (lowerRamificationCard_pos (R := R) (G := G) 0) refine mul_lt_mul_of_pos_right ?_ (inv_pos.mpr hg0) have hum : ((⌊u⌋₊ : ℚ)) ≤ u := Nat.floor_le hu.le have hvM : ((⌊v⌋₊ : ℚ)) ≤ v := Nat.floor_le (hu.trans huv).le have hu1 : u < (⌊u⌋₊ : ℚ) + 1 := Nat.lt_floor_add_one u have hmM : ⌊u⌋₊ ≤ ⌊v⌋₊ := Nat.floor_mono huv.le have hgu : (0 : ℚ) < (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) := Nat.cast_pos.mpr (lowerRamificationCard_pos (R := R) (G := G) (⌊u⌋₊ + 1)) rcases eq_or_lt_of_le hmM with heq | hlt · rw [← heq] have hseg : (u - (⌊u⌋₊ : ℚ)) * (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) < (v - (⌊u⌋₊ : ℚ)) * (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) := mul_lt_mul_of_pos_right (by linarith) hgu linarith · have step0 : (u - (⌊u⌋₊ : ℚ)) * (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) < 1 * (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) := mul_lt_mul_of_pos_right (by linarith) hgu rw [one_mul] at step0 have step1 : (∑ i ∈ Finset.Icc 1 (⌊u⌋₊ + 1), (lowerRamificationCard R G i : ℚ)) = (∑ i ∈ Finset.Icc 1 ⌊u⌋₊, (lowerRamificationCard R G i : ℚ)) + (lowerRamificationCard R G (⌊u⌋₊ + 1) : ℚ) := Finset.sum_Icc_succ_top (by omega : 1 ≤ ⌊u⌋₊ + 1) _ have step2 : (∑ i ∈ Finset.Icc 1 (⌊u⌋₊ + 1), (lowerRamificationCard R G i : ℚ)) ≤ ∑ i ∈ Finset.Icc 1 ⌊v⌋₊, (lowerRamificationCard R G i : ℚ) := Finset.sum_le_sum_of_subset_of_nonneg (Finset.Icc_subset_Icc_right (by omega)) (fun i _ _ => Nat.cast_nonneg _) have step3 : (0 : ℚ) ≤ (v - ⌊v⌋₊) * lowerRamificationCard R G (⌊v⌋₊ + 1) := mul_nonneg (by linarith) (Nat.cast_nonneg _) linarith theorem herbrandPhi_monotone [Finite G] : Monotone (herbrandPhi R G) := (herbrandPhi_strictMono (R := R) (G := G)).monotone theorem herbrandPhi_injective [Finite G] : Function.Injective (herbrandPhi R G) := (herbrandPhi_strictMono (R := R) (G := G)).injective theorem exists_natCast_le_herbrandPhi [Finite G] (v : ℚ) : ∃ n : ℕ, v ≤ herbrandPhi R G n := by obtain ⟨n, hn⟩ : ∃ n : ℕ, v * (lowerRamificationCard R G 0 : ℚ) ≤ n := ⟨⌈v * (lowerRamificationCard R G 0 : ℚ)⌉₊, Nat.le_ceil _⟩ refine ⟨n, ?_⟩ have hg0 : (0 : ℚ) < (lowerRamificationCard R G 0 : ℚ) := Nat.cast_pos.mpr (lowerRamificationCard_pos (R := R) (G := G) 0) have h2 : (n : ℚ) ≤ ∑ i ∈ Finset.Icc 1 n, (lowerRamificationCard R G i : ℚ) := by have hcard : (Finset.Icc 1 n).card = n := by rw [Nat.card_Icc]; omega calc (n : ℚ) = (Finset.Icc 1 n).card • (1 : ℚ) := by rw [hcard, nsmul_eq_mul, mul_one] _ ≤ ∑ i ∈ Finset.Icc 1 n, (lowerRamificationCard R G i : ℚ) := Finset.card_nsmul_le_sum _ _ _ (fun i _ => one_le_lowerRamificationCard_cast i) have h3 : v * (lowerRamificationCard R G 0 : ℚ) ≤ ∑ i ∈ Finset.Icc 1 n, (lowerRamificationCard R G i : ℚ) := hn.trans h2 rw [herbrandPhi_natCast] calc v = v * (lowerRamificationCard R G 0 : ℚ) / (lowerRamificationCard R G 0 : ℚ) := by rw [mul_div_assoc, div_self hg0.ne', mul_one] _ ≤ (∑ i ∈ Finset.Icc 1 n, (lowerRamificationCard R G i : ℚ)) / (lowerRamificationCard R G 0 : ℚ) := by rw [div_eq_mul_inv, div_eq_mul_inv] exact mul_le_mul_of_nonneg_right h3 (inv_nonneg.mpr hg0.le) variable (R G) in noncomputable def herbrandPsi : ℚ → ℚ := Function.invFun (herbrandPhi R G) theorem herbrandPsi_herbrandPhi [Finite G] (u : ℚ) : herbrandPsi R G (herbrandPhi R G u) = u := Function.leftInverse_invFun (herbrandPhi_injective (R := R) (G := G)) u theorem herbrandPsi_zero [Finite G] : herbrandPsi R G 0 = 0 := by have h := herbrandPsi_herbrandPhi (R := R) (G := G) 0 rwa [herbrandPhi_zero] at h variable (R G) in noncomputable def upperRamificationIndex (v : ℚ) : ℕ := sInf {n : ℕ | v ≤ herbrandPhi R G n} variable (R G) in noncomputable def upperRamificationGroup (v : ℚ) : Subgroup G := lowerRamificationGroup R G (upperRamificationIndex R G v) theorem upperRamificationIndex_of_nonpos {v : ℚ} (h : v ≤ 0) : upperRamificationIndex R G v = 0 := Nat.sInf_eq_zero.mpr (Or.inl (by simpa using h)) @[simp] theorem upperRamificationIndex_zero : upperRamificationIndex R G 0 = 0 := upperRamificationIndex_of_nonpos le_rfl @[simp] theorem mem_upperRamificationGroup {σ : G} {v : ℚ} : σ ∈ upperRamificationGroup R G v ↔ ∀ x : R, σ • x - x ∈ (maximalIdeal R) ^ (upperRamificationIndex R G v + 1) := Iff.rfl theorem upperRamificationGroup_of_nonpos {v : ℚ} (h : v ≤ 0) : upperRamificationGroup R G v = lowerRamificationGroup R G 0 := congrArg (lowerRamificationGroup R G) (upperRamificationIndex_of_nonpos h) @[simp] theorem upperRamificationGroup_zero : upperRamificationGroup R G 0 = lowerRamificationGroup R G 0 := upperRamificationGroup_of_nonpos le_rfl theorem upperRamificationGroup_zero_eq_ker : upperRamificationGroup R G 0 = MonoidHom.ker (MulSemiringAction.toRingAut G (ResidueField R)) := upperRamificationGroup_zero.trans lowerRamificationGroup_zero_eq_ker theorem upperRamificationGroup_le_zero (v : ℚ) : upperRamificationGroup R G v ≤ lowerRamificationGroup R G 0 := lowerRamificationGroup_le_zero _ theorem le_herbrandPhi_upperRamificationIndex [Finite G] (v : ℚ) : v ≤ herbrandPhi R G (upperRamificationIndex R G v : ℕ) := by have hne : {n : ℕ | v ≤ herbrandPhi R G n}.Nonempty := exists_natCast_le_herbrandPhi v have hmem : sInf {n : ℕ | v ≤ herbrandPhi R G n} ∈ {n : ℕ | v ≤ herbrandPhi R G n} := Nat.sInf_mem hne exact hmem theorem upperRamificationIndex_le {v : ℚ} {n : ℕ} (h : v ≤ herbrandPhi R G n) : upperRamificationIndex R G v ≤ n := by have hmem : n ∈ {m : ℕ | v ≤ herbrandPhi R G m} := h exact Nat.sInf_le hmem theorem upperRamificationIndex_monotone [Finite G] : Monotone (upperRamificationIndex R G) := by intro v w hvw exact upperRamificationIndex_le (hvw.trans (le_herbrandPhi_upperRamificationIndex w)) theorem upperRamificationGroup_antitone [Finite G] : Antitone (upperRamificationGroup R G) := by intro v w hvw exact lowerRamificationGroup_antitone (upperRamificationIndex_monotone (R := R) (G := G) hvw) theorem upperRamificationIndex_herbrandPhi_natCast [Finite G] (n : ℕ) : upperRamificationIndex R G (herbrandPhi R G n) = n := by apply le_antisymm · exact upperRamificationIndex_le le_rfl · have h1 : herbrandPhi R G n ≤ herbrandPhi R G (upperRamificationIndex R G (herbrandPhi R G n) : ℕ) := le_herbrandPhi_upperRamificationIndex _ exact Nat.cast_le.mp ((herbrandPhi_strictMono (R := R) (G := G)).le_iff_le.mp h1) theorem upperRamificationGroup_herbrandPhi_natCast [Finite G] (n : ℕ) : upperRamificationGroup R G (herbrandPhi R G n) = lowerRamificationGroup R G n := congrArg (lowerRamificationGroup R G) (upperRamificationIndex_herbrandPhi_natCast n) variable (R G) in def UpperRamificationQuotientCompat (S : Type*) [CommRing S] [IsLocalRing S] (H : Subgroup G) [H.Normal] [MulSemiringAction (G ⧸ H) S] : Prop := ∀ v : ℚ, 0 ≤ v → (upperRamificationGroup R G v).map (QuotientGroup.mk' H) = upperRamificationGroup S (G ⧸ H) v end IsLocalRing namespace ValuationSubring variable (K : Type*) {L : Type*} [Field K] [Field L] [Algebra K L] noncomputable def herbrandPhi (A : ValuationSubring L) (u : ℚ) : ℚ := IsLocalRing.herbrandPhi A (A.decompositionSubgroup K) u noncomputable def herbrandPsi (A : ValuationSubring L) (v : ℚ) : ℚ := IsLocalRing.herbrandPsi A (A.decompositionSubgroup K) v noncomputable def upperRamificationGroup (A : ValuationSubring L) (v : ℚ) : Subgroup (A.decompositionSubgroup K) := IsLocalRing.upperRamificationGroup A (A.decompositionSubgroup K) v variable {K} {A : ValuationSubring L} @[simp] theorem herbrandPhi_zero : A.herbrandPhi K 0 = 0 := IsLocalRing.herbrandPhi_zero theorem upperRamificationGroup_zero : A.upperRamificationGroup K 0 = A.inertiaSubgroup K := by have h1 : A.upperRamificationGroup K 0 = A.lowerRamificationGroup K 0 := IsLocalRing.upperRamificationGroup_zero rw [h1, lowerRamificationGroup_zero] theorem upperRamificationGroup_le_inertiaSubgroup (v : ℚ) : A.upperRamificationGroup K v ≤ A.inertiaSubgroup K := by have h1 : A.upperRamificationGroup K v ≤ A.lowerRamificationGroup K 0 := IsLocalRing.upperRamificationGroup_le_zero v rwa [lowerRamificationGroup_zero] at h1 theorem upperRamificationGroup_antitone [Finite (A.decompositionSubgroup K)] : Antitone (A.upperRamificationGroup K) := by intro v w hvw exact IsLocalRing.upperRamificationGroup_antitone (R := A) (G := A.decompositionSubgroup K) hvw end ValuationSubring section Gates example {R : Type*} [CommRing R] [IsLocalRing R] {G : Type*} [Group G] [MulSemiringAction G R] [Subsingleton G] {u : ℚ} (hu : 0 ≤ u) : IsLocalRing.herbrandPhi R G u = u := by rcases eq_or_lt_of_le hu with rfl | hu · simp · rw [IsLocalRing.herbrandPhi_of_pos hu] simp only [IsLocalRing.lowerRamificationCard_of_subsingleton, Nat.cast_one, mul_one, div_one] rw [Finset.sum_const, Nat.card_Icc, Nat.add_sub_cancel, nsmul_eq_mul, mul_one] ring example {R : Type*} [CommRing R] [IsLocalRing R] {G : Type*} [Group G] [MulSemiringAction G R] [Subsingleton G] (v : ℚ) : IsLocalRing.upperRamificationGroup R G v = ⊤ := by ext σ simp [Subsingleton.elim σ 1] example {R : Type*} [CommRing R] [IsLocalRing R] {G : Type*} [Group G] [MulSemiringAction G R] [Finite G] : IsLocalRing.upperRamificationGroup R G 1 ≤ IsLocalRing.upperRamificationGroup R G 0 := IsLocalRing.upperRamificationGroup_antitone (by norm_num) example {R : Type*} [CommRing R] [IsLocalRing R] {G : Type*} [Group G] [MulSemiringAction G R] [MulSemiringAction (G ⧸ (⊤ : Subgroup G)) R] : IsLocalRing.UpperRamificationQuotientCompat R G R ⊤ := by intro v _ haveI : Subsingleton (G ⧸ (⊤ : Subgroup G)) := QuotientGroup.subsingleton_quotient_top ext x obtain rfl : x = 1 := Subsingleton.elim x 1 exact iff_of_true (Subgroup.one_mem _) (Subgroup.one_mem _) example {R : Type*} [CommRing R] [IsLocalRing R] {G : Type*} [Group G] [MulSemiringAction G R] : MulSemiringAction (G ⧸ (⊤ : Subgroup G)) R := MulSemiringAction.compHom R (1 : (G ⧸ (⊤ : Subgroup G)) →* RingAut R) end Gates /-- info: 'IsLocalRing.herbrandPhi' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.herbrandPhi /-- info: 'IsLocalRing.herbrandPhi_strictMono' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.herbrandPhi_strictMono /-- info: 'IsLocalRing.herbrandPsi_herbrandPhi' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.herbrandPsi_herbrandPhi /-- info: 'IsLocalRing.upperRamificationGroup' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.upperRamificationGroup /-- info: 'IsLocalRing.upperRamificationGroup_zero_eq_ker' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.upperRamificationGroup_zero_eq_ker /-- info: 'IsLocalRing.upperRamificationGroup_antitone' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.upperRamificationGroup_antitone /-- info: 'IsLocalRing.upperRamificationGroup_herbrandPhi_natCast' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.upperRamificationGroup_herbrandPhi_natCast /-- info: 'IsLocalRing.UpperRamificationQuotientCompat' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms IsLocalRing.UpperRamificationQuotientCompat /-- info: 'ValuationSubring.upperRamificationGroup_zero' depends on axioms: [propext, Classical.choice, Quot.sound] -/ #guard_msgs in #print axioms ValuationSubring.upperRamificationGroup_zero
Statements phrased using this module (39)
- Herbrand's theorem in functional form along a tower
NumberField.PlaceDecomp.finsum_card_lowerRamificationGroup_mul_apply_map_eq_of_restrict21 below · depth 14 - Hasse–Arf: integrality of the Swan conductor of ψ
ArtinL.Abelian.natCeil_swanConductor_eq23 below · depth 15 - Hilbert's different formula for a faithful finite action on a DVR
IsDiscreteValuationRing.differentEqPowFiltrationSum_fixedPoints_subring2 below · depth 15 - Herbrand's theorem in weighted-sum form
IsDiscreteValuationRing.finsum_card_lowerRamificationGroup_mul_apply_map_mk_eq_of_apply_bot_eq_zero11 below · depth 15 - Completion preserves the lower ramification filtration
NumberField.PlaceDecomp.lowerRamificationGroup_valuationSubring_eq_adicCompletionIntegers0 below · depth 15 - Lower ramification groups of a quotient decomposition group
NumberField.PlaceDecomp.map_lowerRamificationGroup_fixedPoints_adicCompletionIntegers_eq_of_restrict6 below · depth 15 - Upper ramification jumps versus Swan conductor of ψ
ArtinL.Abelian.forall_mem_upperRamificationGroup_apply_eq_one_iff_swanConductor_lt2 below · depth 16 - Hasse–Arf integrality for degree-one characters
IsDiscreteValuationRing.exists_finsum_lowerRamificationGroup_indicator_eq_natCast20 below · depth 16 - Swan sum of a character is invariant under inflation
IsDiscreteValuationRing.finsum_lowerRamificationGroup_indicator_comp_mk_eq11 below · depth 16 - Herbrand's theorem in the lower numbering
IsDiscreteValuationRing.map_lowerRamificationGroup_mk_eq_of_isSeparable_residueField7 below · depth 16 - Herbrand's theorem in the upper numbering for a DVR
IsDiscreteValuationRing.upperRamificationQuotientCompat_of_isSeparable_residueField10 below · depth 16 - Character kills Γ^u iff its Swan sum is <u
IsLocalRing.forall_mem_upperRamificationGroup_iff_finsum_indicator_lt0 below · depth 16 - Upper ramification groups lie in the local image of the idelic Artin map
M4aHerbrand.exists_isAdjuster_pow_idelicArtinMap_eq_of_mem_upperRamificationGroup302 below · depth 16 - Characters kill upper ramification groups above the conductor exponent
ArtinL.Abelian.forall_mem_upperRamificationGroup_apply_eq_one_of_conductorExponent_le2 below · depth 17 - Quotient group inherits the frame on the fixed subring
FixedPoints.faithfulSMul_and_liesOver_and_isSeparable_and_perfectField_subring0 below · depth 17 - Valuation on a DVR restricted to its fixed subring
IsDiscreteValuationRing.addVal_coe_eq_lowerRamificationCard_zero_mul_addVal_fixedPoints1 below · depth 17 - Graded norm cokernel bound via upper ramification groups
IsDiscreteValuationRing.exists_finset_card_mul_card_upperRamificationGroup_le_forall_exists_sub_mul_finprod_smul_mem_pow28 below · depth 17 - Hasse–Arf condition for cyclic lower ramification chains
IsDiscreteValuationRing.hasseArfChain_lowerRamificationGroup_of_isCyclic6 below · depth 17 - Herbrand's theorem in the lower numbering for monogenic DVRs
IsDiscreteValuationRing.map_lowerRamificationGroup_mk_eq_of_adjoin_singleton_eq_top2 below · depth 17 - Herbrand's theorem in the upper numbering for quotients
IsLocalRing.upperRamificationQuotientCompat_of_map_lowerRamificationGroup_mk_eq1 below · depth 17 - Artin image of level-n units lies in Gⁿ(w∣ v)
M4aHerbrand.idelicArtinMap_mem_upperRamificationGroup_of_isAdjuster_pow283 below · depth 17 - Graded norm cokernels in a ramified layer of prime degree
IsDiscreteValuationRing.exists_finset_card_le_forall_exists_sub_mul_finprod_smul_mem_pow_of_prime_card8 below · depth 18 - Tame inertia quotient embeds in residue field units
IsDiscreteValuationRing.exists_monoidHom_lowerRamificationGroup_zero_residueField_units0 below · depth 18 - Norms are surjective on graded unit pieces when G₀=1
IsDiscreteValuationRing.exists_sub_finprod_smul_mem_pow_succ_of_lowerRamificationGroup_zero_eq_bot3 below · depth 18 - Norms of higher units via the Herbrand function, prime degree
IsDiscreteValuationRing.finprod_smul_sub_one_mem_maximalIdeal_pow_of_sub_one_mem_pow_herbrand_of_prime_card6 below · depth 18 - Hasse–Arf condition for abelian lower ramification chains
IsDiscreteValuationRing.hasseArfChain_lowerRamificationGroup_of_isMulCommutative19 below · depth 18 - Hasse–Arf condition from Sen's congruences, cyclic inertia
IsDiscreteValuationRing.hasseArfChain_of_isCyclic_of_dvd_of_modEq0 below · depth 18 - Herbrand's theorem for lower ramification groups
IsDiscreteValuationRing.map_lowerRamificationGroup_mk_eq_of_iInf_addVal_smul_sub_eq_sum_ramificationDepth0 below · depth 18 - Sen's congruence for ramification depths of p-power iterates
IsDiscreteValuationRing.ramificationDepth_pow_prime_pow_modEq_of_mem_lowerRamificationGroup_one0 below · depth 18 - Lower jumps are divisible by [G₀:G₁] when G₀ is abelian
IsDiscreteValuationRing.relIndex_dvd_of_lowerRamificationGroup_ne_succ_of_commute1 below · depth 18 - Transitivity of the Herbrand function: φ_G = φ_{G/H}∘φ_H
IsLocalRing.herbrandPhi_eq_herbrandPhi_quotient_comp_of_map_lowerRamificationGroup_mk_eq0 below · depth 18 - Level-n units of Eᵥ are norms from the Gⁿ layer
NumberField.PlaceDecomp.exists_forall_upperRamificationGroup_smul_eq_and_finprod_quotient_smul_eq_of_valuation_sub_one_le30 below · depth 18 - Norm surjectivity above the ramification jump
IsDiscreteValuationRing.exists_sub_one_mem_and_finprod_smul_sub_mem_of_jump_lt_of_prime_card7 below · depth 19 - Trace estimate in a one-jump ramification filtration
IsDiscreteValuationRing.finsum_smul_mem_maximalIdeal_pow_of_lowerRamificationGroup_eq_top_of_eq_bot4 below · depth 19 - Hasse–Arf for abelian G from its cyclic quotients
IsDiscreteValuationRing.hasseArfChain_lowerRamificationGroup_of_forall_isCyclic_quotient10 below · depth 19 - Higher units are norms from a prime-degree layer beyond the jump
NumberField.PlaceDecomp.exists_finprod_smul_eq_of_valuation_sub_one_le_of_jump_lt_of_prime_card_decomp10 below · depth 19 - Herbrand's theorem for upper ramification groups in a tower
NumberField.PlaceDecomp.map_restrictNormalHom_upperRamificationGroup_eq20 below · depth 19 - Transitivity of the Herbrand function in a tower of number fields
NumberField.PlaceDecomp.valuationSubring_herbrandPhi_eq_herbrandPhi_under_herbrandPhi18 below · depth 19 - Trace surjectivity for a single lower ramification jump
IsDiscreteValuationRing.exists_finsum_smul_eq_of_mem_maximalIdeal_pow_of_lowerRamificationGroup_eq_top_of_eq_bot4 below · depth 20