Skip to content

Commit 8624f6f

Browse files
committed
feat(RingTheory/Valuation): monotonicity of mul wrt SRel (#31783)
1 parent 1bf88df commit 8624f6f

File tree

1 file changed

+22
-7
lines changed
  • Mathlib/RingTheory/Valuation/ValuativeRel

1 file changed

+22
-7
lines changed

Mathlib/RingTheory/Valuation/ValuativeRel/Basic.lean

Lines changed: 22 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -105,7 +105,7 @@ class ValuativePreorder (R : Type*) [CommRing R] [ValuativeRel R] [Preorder R] w
105105

106106
namespace ValuativeRel
107107

108-
variable {R : Type*} [CommRing R] [ValuativeRel R]
108+
variable {R : Type*} [CommRing R] [ValuativeRel R] {x y z : R}
109109

110110
/-- The strict version of the valuative relation. -/
111111
def SRel (x y : R) : Prop := ¬ y ≤ᵥ x
@@ -158,12 +158,24 @@ lemma mul_rel_mul {x x' y y' : R} (h1 : x ≤ᵥ y) (h2 : x' ≤ᵥ y') : x * x'
158158
calc x * x' ≤ᵥ x * y' := rel_mul_left _ h2
159159
_ ≤ᵥ y * y' := rel_mul_right _ h1
160160

161+
@[simp] lemma mul_rel_mul_iff_left (hz : 0 <ᵥ z) : x * z ≤ᵥ y * z ↔ x ≤ᵥ y :=
162+
⟨rel_mul_cancel hz, rel_mul_right _⟩
163+
164+
@[simp] lemma mul_rel_mul_iff_right (hx : 0 <ᵥ x) : x * y ≤ᵥ x * z ↔ y ≤ᵥ z := by
165+
simp [mul_comm x, hx]
166+
167+
@[simp] lemma mul_srel_mul_iff_left (hz : 0 <ᵥ z) : x * z <ᵥ y * z ↔ x <ᵥ y :=
168+
(mul_rel_mul_iff_left hz).not
169+
170+
@[simp] lemma mul_srel_mul_iff_right (hx : 0 <ᵥ x) : x * y <ᵥ x * z ↔ y <ᵥ z :=
171+
(mul_rel_mul_iff_right hx).not
172+
161173
@[deprecated (since := "2025-11-04")] alias rel_mul := mul_rel_mul
162174

163175
theorem rel_add_cases (x y : R) : x + y ≤ᵥ x ∨ x + y ≤ᵥ y :=
164176
(rel_total y x).imp (fun h => rel_add .rfl h) (fun h => rel_add h .rfl)
165177

166-
lemma zero_srel_mul {x y : R} (hx : 0 <ᵥ x) (hy : 0 <ᵥ y) : 0 <ᵥ x * y := by
178+
@[simp] lemma zero_srel_mul (hx : 0 <ᵥ x) (hy : 0 <ᵥ y) : 0 <ᵥ x * y := by
167179
contrapose! hy
168180
rw [not_srel_iff] at hy ⊢
169181
rw [show (0 : R) = x * 0 by simp, mul_comm x y, mul_comm x 0] at hy
@@ -176,17 +188,16 @@ def posSubmonoid : Submonoid R where
176188
mul_mem' := zero_srel_mul
177189
one_mem' := zero_srel_one
178190

191+
@[simp] lemma zero_srel_coe_posSubmonoid (x : posSubmonoid R) : 0 <ᵥ x.val := x.prop
192+
179193
@[simp]
180194
lemma posSubmonoid_def (x : R) : x ∈ posSubmonoid R ↔ 0 <ᵥ x := Iff.rfl
181195

182-
@[simp]
183196
lemma right_cancel_posSubmonoid (x y : R) (u : posSubmonoid R) :
184-
x * u ≤ᵥ y * u ↔ x ≤ᵥ y := ⟨rel_mul_cancel u.prop, rel_mul_right _⟩
197+
x * u ≤ᵥ y * u ↔ x ≤ᵥ y := by simp
185198

186-
@[simp]
187199
lemma left_cancel_posSubmonoid (x y : R) (u : posSubmonoid R) :
188-
u * x ≤ᵥ u * y ↔ x ≤ᵥ y := by
189-
simp only [← right_cancel_posSubmonoid x y u, mul_comm]
200+
u * x ≤ᵥ u * y ↔ x ≤ᵥ y := by simp
190201

191202
@[simp]
192203
lemma val_posSubmonoid_ne_zero (x : posSubmonoid R) :
@@ -452,6 +463,10 @@ theorem ValueGroupWithZero.mk_lt_mk (x y : R) (t s : posSubmonoid R) :
452463
ValueGroupWithZero.mk x t < ValueGroupWithZero.mk y s ↔ x * s <ᵥ y * t := by
453464
rw [lt_iff_not_ge, srel_iff, mk_le_mk]
454465

466+
@[simp]
467+
lemma ValueGroupWithZero.mk_pos {x : R} {s : posSubmonoid R} :
468+
0 < ValueGroupWithZero.mk x s ↔ 0 <ᵥ x := by rw [← mk_zero 1]; simp [-mk_zero]
469+
455470
instance : Bot (ValueGroupWithZero R) where
456471
bot := 0
457472

0 commit comments

Comments
 (0)