Theorem: Valuation.map_add_of_distinct_val
File: Mathlib/RingTheory/Valuation/Basic.lean

tactic: suffices : ¬v (x + y) < max (v x) (v y)
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
⊢ ↑v (x + y) = max (↑v x) (↑v y)

tactic: exact or_iff_not_imp_right.1 (le_iff_eq_or_lt.1 (v.map_add x y)) this
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
this : ¬↑v (x + y) < max (↑v x) (↑v y)
⊢ ↑v (x + y) = max (↑v x) (↑v y)

case this
K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
⊢ ¬↑v (x + y) < max (↑v x) (↑v y)

tactic: intro h'
state_before: case this
K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
⊢ ¬↑v (x + y) < max (↑v x) (↑v y)

tactic: wlog vyx : v y < v x generalizing x y
state_before: case this
K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < max (↑v x) (↑v y)
⊢ False

tactic: rw [max_eq_left_of_lt vyx] at h'
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x✝ y✝ z x y : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < max (↑v x) (↑v y)
vyx : ↑v y < ↑v x
⊢ False

tactic: apply lt_irrefl (v x)
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x✝ y✝ z x y : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < ↑v x
vyx : ↑v y < ↑v x
⊢ False

tactic: calc
  v x = v (x + y - y) := by simp
  _ ≤ max (v <| x + y) (v y) := (map_sub _ _ _)
  _ < v x := max_lt h' vyx
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x✝ y✝ z x y : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < ↑v x
vyx : ↑v y < ↑v x
⊢ ↑v x < ↑v x

tactic: refine' this h.symm _ (h.lt_or_lt.resolve_right vyx)
state_before: case this.inr
K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < max (↑v x) (↑v y)
this : ∀ {x y : R}, ↑v x ≠ ↑v y → ↑v (x + y) < max (↑v x) (↑v y) → ↑v y < ↑v x → False
vyx : ¬↑v y < ↑v x
⊢ False

tactic: rwa [add_comm, max_comm]
state_before: case this.inr
K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x y z : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < max (↑v x) (↑v y)
this : ∀ {x y : R}, ↑v x ≠ ↑v y → ↑v (x + y) < max (↑v x) (↑v y) → ↑v y < ↑v x → False
vyx : ¬↑v y < ↑v x
⊢ ↑v (y + x) < max (↑v y) (↑v x)

tactic: simp
state_before: K : Type ?u.1807321
F : Type ?u.1807324
R : Type u_2
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type ?u.1807336
Γ''₀ : Type ?u.1807339
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : Ring R
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation R Γ₀
x✝ y✝ z x y : R
h : ↑v x ≠ ↑v y
h' : ↑v (x + y) < ↑v x
vyx : ↑v y < ↑v x
⊢ ↑v x = ↑v (x + y - y)