Skip to content

Commit c160989

Browse files
committed
feat(RingTheory/Valuation/RankOne): add rank one valuations (#12156)
Add the definition of rank one valuation, as well as some basic lemmas. Co-authored-by: María Inés de Frutos-Fernández <88536493+mariainesdff@users.noreply.github.com>
1 parent 90e480d commit c160989

File tree

2 files changed

+74
-0
lines changed

2 files changed

+74
-0
lines changed

Mathlib.lean

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3523,6 +3523,7 @@ import Mathlib.RingTheory.Valuation.Integral
35233523
import Mathlib.RingTheory.Valuation.PrimeMultiplicity
35243524
import Mathlib.RingTheory.Valuation.Quotient
35253525
import Mathlib.RingTheory.Valuation.RamificationGroup
3526+
import Mathlib.RingTheory.Valuation.RankOne
35263527
import Mathlib.RingTheory.Valuation.ValuationRing
35273528
import Mathlib.RingTheory.Valuation.ValuationSubring
35283529
import Mathlib.RingTheory.WittVector.Basic
Lines changed: 73 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,73 @@
1+
/-
2+
Copyright (c) 2024 María Inés de Frutos-Fernández. 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
5+
-/
6+
import Mathlib.Data.Real.NNReal
7+
import Mathlib.RingTheory.Valuation.Basic
8+
9+
/-!
10+
# Rank one valuations
11+
12+
We define rank one valuations.
13+
14+
## Main Definitions
15+
* `RankOne` : A valuation `v` has rank one if it is nontrivial and its image is contained in `ℝ≥0`.
16+
Note that this class contains the data of the inclusion of the codomain of `v` into `ℝ≥0`.
17+
18+
## Tags
19+
20+
valuation, rank one
21+
-/
22+
23+
noncomputable section
24+
25+
open Function Multiplicative
26+
27+
open scoped NNReal
28+
29+
variable {R : Type*} [Ring R] {Γ₀ : Type*} [LinearOrderedCommGroupWithZero Γ₀]
30+
31+
namespace Valuation
32+
33+
/-- A valuation has rank one if it is nontrivial and its image is contained in `ℝ≥0`.
34+
Note that this class includes the data of an inclusion morphism `Γ₀ → ℝ≥0`. -/
35+
class RankOne (v : Valuation R Γ₀) where
36+
/-- The inclusion morphism from `Γ₀` to `ℝ≥0`. -/
37+
hom : Γ₀ →*₀ ℝ≥0
38+
strictMono' : StrictMono hom
39+
nontrivial' : ∃ r : R, v r ≠ 0 ∧ v r ≠ 1
40+
41+
namespace RankOne
42+
43+
variable (v : Valuation R Γ₀) [RankOne v]
44+
45+
lemma strictMono : StrictMono (hom v) := strictMono'
46+
47+
lemma nontrivial : ∃ r : R, v r ≠ 0 ∧ v r ≠ 1 := nontrivial'
48+
49+
/-- If `v` is a rank one valuation and `x : Γ₀` has image `0` under `RankOne.hom v`, then
50+
`x = 0`. -/
51+
theorem zero_of_hom_zero {x : Γ₀} (hx : hom v x = 0) : x = 0 := by
52+
refine (eq_of_le_of_not_lt (zero_le' (a := x)) fun h_lt ↦ ?_).symm
53+
have hs := strictMono v h_lt
54+
rw [_root_.map_zero, hx] at hs
55+
exact hs.false
56+
57+
/-- If `v` is a rank one valuation, then`x : Γ₀` has image `0` under `RankOne.hom v` if and
58+
only if `x = 0`. -/
59+
theorem hom_eq_zero_iff {x : Γ₀} : RankOne.hom v x = 0 ↔ x = 0 :=
60+
fun h ↦ zero_of_hom_zero v h, fun h ↦ by rw [h, _root_.map_zero]⟩
61+
62+
/-- A nontrivial unit of `Γ₀`, given that there exists a rank one `v : Valuation R Γ₀`. -/
63+
def unit : Γ₀ˣ :=
64+
Units.mk0 (v (nontrivial v).choose) ((nontrivial v).choose_spec).1
65+
66+
/-- A proof that `RankOne.unit v ≠ 1`. -/
67+
theorem unit_ne_one : unit v ≠ 1 := by
68+
rw [Ne.def, ← Units.eq_iff, Units.val_one]
69+
exact ((nontrivial v).choose_spec ).2
70+
71+
end RankOne
72+
73+
end Valuation

0 commit comments

Comments
 (0)