@@ -820,6 +820,13 @@ variable (R) in
820820class IsNontrivial where
821821 condition : ∃ γ : ValueGroupWithZero R, γ ≠ 0 ∧ γ ≠ 1
822822
823+ lemma IsNontrivial.exists_lt_one [IsNontrivial R] :
824+ ∃ γ : ValueGroupWithZero R, 0 < γ ∧ γ < 1 := by
825+ obtain ⟨γ, h0, h1⟩ := IsNontrivial.condition (R := R)
826+ obtain h1 | h1 := lt_or_lt_iff_ne.mpr h1
827+ · exact ⟨γ, zero_lt_iff.mpr h0, h1⟩
828+ · exact ⟨γ⁻¹, by simpa [zero_lt_iff], by simp [inv_lt_one_iff₀, h0, h1]⟩
829+
823830lemma isNontrivial_iff_nontrivial_units :
824831 IsNontrivial R ↔ Nontrivial (ValueGroupWithZero R)ˣ := by
825832 constructor
@@ -883,6 +890,39 @@ class IsDiscrete where
883890 has_maximal_element :
884891 ∃ γ : ValueGroupWithZero R, γ < 1 ∧ (∀ δ : ValueGroupWithZero R, δ < 1 → δ ≤ γ)
885892
893+ variable (R) in
894+ /-- The maximal element that is `< 1` in the value group of a discrete valuation. -/
895+ -- TODO: Link to `Valuation.IsUniformizer` once we connect `Valuation.IsRankOneDiscrete` with
896+ -- `ValuativeRel`.
897+ noncomputable
898+ def uniformizer [IsDiscrete R] : ValueGroupWithZero R :=
899+ IsDiscrete.has_maximal_element.choose
900+
901+ lemma uniformizer_lt_one [IsDiscrete R] :
902+ uniformizer R < 1 := IsDiscrete.has_maximal_element.choose_spec.1
903+
904+ lemma le_uniformizer_iff [IsDiscrete R] {a : ValueGroupWithZero R} :
905+ a ≤ uniformizer R ↔ a < 1 :=
906+ ⟨fun h ↦ h.trans_lt uniformizer_lt_one,
907+ IsDiscrete.has_maximal_element.choose_spec.2 a⟩
908+
909+ lemma uniformizer_pos [IsDiscrete R] [IsNontrivial R] :
910+ 0 < uniformizer R := by
911+ obtain ⟨γ, hγ, hγ'⟩ := IsNontrivial.exists_lt_one (R := R)
912+ exact hγ.trans_le (le_uniformizer_iff.mpr hγ')
913+
914+ @[simp]
915+ lemma uniformizer_ne_zero [IsDiscrete R] [IsNontrivial R] :
916+ uniformizer R ≠ 0 :=
917+ uniformizer_pos.ne'
918+
919+ lemma uniformizer_inv_le_iff [IsDiscrete R] [IsNontrivial R] {a : ValueGroupWithZero R} :
920+ (uniformizer R)⁻¹ ≤ a ↔ 1 < a := by
921+ by_cases ha : a = 0
922+ · simp [ha]
923+ replace ha : 0 < a := bot_lt_iff_ne_bot.mpr ha
924+ rw [inv_le_comm₀ uniformizer_pos ha, le_uniformizer_iff, inv_lt_one₀ ha]
925+
886926end ValuativeRel
887927
888928open Topology ValuativeRel in
0 commit comments