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

tactic: constructor
state_before: K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
⊢ IsEquiv v v' ↔ ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1

tactic: intro h x
state_before: case mp
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
⊢ IsEquiv v v' → ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1

tactic: simp only [lt_iff_le_and_ne,
  and_congr ((isEquiv_iff_val_le_one _ _).1 h) ((isEquiv_iff_val_eq_one _ _).1 h).not]
state_before: case mp
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : IsEquiv v v'
x : K
⊢ ↑v x < 1 ↔ ↑v' x < 1

tactic: rw [isEquiv_iff_val_eq_one]
state_before: case mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
⊢ (∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1) → IsEquiv v v'

tactic: intro h x
state_before: case mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
⊢ (∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1) → ∀ {x : K}, ↑v x = 1 ↔ ↑v' x = 1

tactic: by_cases hx : x = 0
state_before: case mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
⊢ ↑v x = 1 ↔ ↑v' x = 1

tactic: constructor
state_before: case neg
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
⊢ ↑v x = 1 ↔ ↑v' x = 1

tactic: rw [(zero_iff _).2 hx, (zero_iff _).2 hx]
state_before: case pos
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : x = 0
⊢ ↑v x = 1 ↔ ↑v' x = 1

tactic: simp only [zero_ne_one]
state_before: case pos
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : x = 0
⊢ 0 = 1 ↔ 0 = 1

tactic: intro hh
state_before: case neg.mp
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
⊢ ↑v x = 1 → ↑v' x = 1

tactic: by_contra h_1
state_before: case neg.mp
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v x = 1
⊢ ↑v' x = 1

tactic: cases ne_iff_lt_or_gt.1 h_1 with
| inl h_2 => simpa [hh, lt_self_iff_false] using h.2 h_2
| inr h_2 =>
    rw [← inv_one, ←inv_eq_iff_eq_inv, ← map_inv₀] at hh
    exact hh.not_lt (h.2 ((one_lt_val_iff v' hx).1 h_2))
state_before: case neg.mp
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v x = 1
h_1 : ¬↑v' x = 1
⊢ False

tactic: simpa [hh, lt_self_iff_false] using h.2 h_2
state_before: case neg.mp.inl
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v x = 1
h_1 : ¬↑v' x = 1
h_2 : ↑v' x < 1
⊢ False

tactic: rw [← inv_one, ←inv_eq_iff_eq_inv, ← map_inv₀] at hh
state_before: case neg.mp.inr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v x = 1
h_1 : ¬↑v' x = 1
h_2 : ↑v' x > 1
⊢ False

tactic: exact hh.not_lt (h.2 ((one_lt_val_iff v' hx).1 h_2))
state_before: case neg.mp.inr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v x⁻¹ = 1
h_1 : ¬↑v' x = 1
h_2 : ↑v' x > 1
⊢ False

tactic: intro hh
state_before: case neg.mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
⊢ ↑v' x = 1 → ↑v x = 1

tactic: by_contra h_1
state_before: case neg.mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v' x = 1
⊢ ↑v x = 1

tactic: cases ne_iff_lt_or_gt.1 h_1 with
| inl h_2 => simpa [hh, lt_self_iff_false] using h.1 h_2
| inr h_2 =>
  rw [← inv_one, ← inv_eq_iff_eq_inv, ← map_inv₀] at hh
  exact hh.not_lt (h.1 ((one_lt_val_iff v hx).1 h_2))
state_before: case neg.mpr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v' x = 1
h_1 : ¬↑v x = 1
⊢ False

tactic: simpa [hh, lt_self_iff_false] using h.1 h_2
state_before: case neg.mpr.inl
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v' x = 1
h_1 : ¬↑v x = 1
h_2 : ↑v x < 1
⊢ False

tactic: rw [← inv_one, ← inv_eq_iff_eq_inv, ← map_inv₀] at hh
state_before: case neg.mpr.inr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v' x = 1
h_1 : ¬↑v x = 1
h_2 : ↑v x > 1
⊢ False

tactic: exact hh.not_lt (h.1 ((one_lt_val_iff v hx).1 h_2))
state_before: case neg.mpr.inr
K : Type u_3
F : Type ?u.3380888
R : Type ?u.3380891
inst✝³ : DivisionRing K
Γ₀ : Type u_1
Γ'₀ : Type u_2
Γ''₀ : Type ?u.3380903
inst✝² : LinearOrderedCommMonoidWithZero Γ''₀
inst✝¹ : LinearOrderedCommGroupWithZero Γ₀
inst✝ : LinearOrderedCommGroupWithZero Γ'₀
v : Valuation K Γ₀
v' : Valuation K Γ'₀
h : ∀ {x : K}, ↑v x < 1 ↔ ↑v' x < 1
x : K
hx : ¬x = 0
hh : ↑v' x⁻¹ = 1
h_1 : ¬↑v x = 1
h_2 : ↑v x > 1
⊢ False