|
| 1 | +/- |
| 2 | +Copyright (c) 2025 María Inés de Frutos-Fernández, Filippo A. E. Nuccio. All rights reserved. |
| 3 | +Released under Apache 2.0 license as described in the file LICENSE. |
| 4 | +Authors: María Inés de Frutos-Fernández, Filippo A. E. Nuccio |
| 5 | +-/ |
| 6 | +import Mathlib.Algebra.GroupWithZero.Int |
| 7 | +import Mathlib.RingTheory.Valuation.Basic |
| 8 | + |
| 9 | +/-! |
| 10 | +# Discrete Valuations |
| 11 | +
|
| 12 | +A valuation `v : A → ℤₘ₀` on a ring `A` is said to be a (normalized) discrete valuation if |
| 13 | +`ofAdd (-1 : ℤ)` belongs to the image of `v`. Note that valuations in Mathlib are multiplicative; |
| 14 | +if `a : A → ℤ ∪ {infty}` is the additive valuation associated to `v`, this is equivalent to asking |
| 15 | +that `1 : ℤ` belongs to the image of `a`. |
| 16 | +
|
| 17 | +## Main Definitions |
| 18 | +* `IsDiscrete`: We define a valuation to be discrete if it is `ℤₘ₀`-valued and `ofAdd (-1 : ℤ)` |
| 19 | +belongs to the image. |
| 20 | +
|
| 21 | +## TODO |
| 22 | +* Define (pre)uniformizers for nontrivial `ℤₘ₀`-valued valuations. |
| 23 | +* Relate discrete valuations and discrete valuation rings. |
| 24 | +
|
| 25 | +-/ |
| 26 | + |
| 27 | +namespace Valuation |
| 28 | + |
| 29 | +open Function Multiplicative Set |
| 30 | + |
| 31 | +variable {A : Type*} [Ring A] |
| 32 | + |
| 33 | +/-- A valuation `v` on a ring `A` is (normalized) discrete if it is `ℤₘ₀`-valued and |
| 34 | + `ofAdd (-1 : ℤ)` belongs to the image. Note that the latter is equivalent to |
| 35 | + asking that `1 : ℤ` belongs to the image of the corresponding additive valuation. -/ |
| 36 | +class IsDiscrete (v : Valuation A ℤₘ₀) : Prop where |
| 37 | + one_mem_range : (↑(ofAdd (-1 : ℤ)) : ℤₘ₀) ∈ range v |
| 38 | + |
| 39 | +variable {K : Type*} [Field K] |
| 40 | + |
| 41 | +/-- A discrete valuation on a field `K` is surjective. -/ |
| 42 | +lemma IsDiscrete.surj (v : Valuation K ℤₘ₀) [hv : IsDiscrete v] : |
| 43 | + Surjective v := by |
| 44 | + intro c |
| 45 | + obtain ⟨π, hπ⟩ := hv |
| 46 | + refine WithZero.cases_on c ⟨0, map_zero _⟩ fun a ↦ ⟨π ^ (-a.toAdd), ?_⟩ |
| 47 | + simp [hπ, ← WithZero.ofAdd_zpow] |
| 48 | + |
| 49 | +/-- A `ℤₘ₀`-valued valuation on a field `K` is discrete if and only if it is surjective. -/ |
| 50 | +lemma isDiscrete_iff_surjective (v : Valuation K ℤₘ₀) : |
| 51 | + IsDiscrete v ↔ Surjective v := |
| 52 | + ⟨fun _ ↦ IsDiscrete.surj v, fun hv ↦ ⟨hv _⟩⟩ |
| 53 | + |
| 54 | +end Valuation |
0 commit comments