Theorem: Valuation.inversion_estimate
File: Mathlib/Topology/Algebra/ValuedField.lean

tactic: have hyp1 : v (x - y) < γ * (v y * v y) := lt_of_lt_of_le h (min_le_left _ _)
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: have hyp1' : v (x - y) * (v y * v y)⁻¹ < γ := mul_inv_lt_of_lt_mul₀ hyp1
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: have hyp2 : v (x - y) < v y := lt_of_lt_of_le h (min_le_right _ _)
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: have key : v x = v y := Valuation.map_eq_of_sub_lt v hyp2
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: have x_ne : x ≠ 0 := by
  intro h
  apply y_ne
  rw [h, v.map_zero] at key
  exact v.zero_iff.1 key.symm
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: have decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹ := by
  rw [mul_sub_left_distrib, sub_mul, mul_assoc, show y * y⁻¹ = 1 from mul_inv_cancel y_ne,
    show x⁻¹ * x = 1 from inv_mul_cancel x_ne, mul_one, one_mul]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: calc
  v (x⁻¹ - y⁻¹) = v (x⁻¹ * (y - x) * y⁻¹) := by rw [decomp]
  _ = v x⁻¹ * (v <| y - x) * v y⁻¹ := by repeat' rw [Valuation.map_mul]
  _ = (v x)⁻¹ * (v <| y - x) * (v y)⁻¹ := by rw [map_inv₀, map_inv₀]
  _ = (v <| y - x) * (v y * v y)⁻¹ := by rw [mul_assoc, mul_comm, key, mul_assoc, mul_inv_rev]
  _ = (v <| y - x) * (v y * v y)⁻¹ := rfl
  _ = (v <| x - y) * (v y * v y)⁻¹ := by rw [Valuation.map_sub_swap]
  _ < γ := hyp1'
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v (x⁻¹ - y⁻¹) < ↑γ

tactic: intro h
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
⊢ x ≠ 0

tactic: apply y_ne
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h✝ : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
h : x = 0
⊢ False

tactic: rw [h, v.map_zero] at key
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h✝ : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
h : x = 0
⊢ y = 0

tactic: exact v.zero_iff.1 key.symm
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h✝ : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : 0 = ↑v y
h : x = 0
⊢ y = 0

tactic: rw [mul_sub_left_distrib, sub_mul, mul_assoc, show y * y⁻¹ = 1 from mul_inv_cancel y_ne,
  show x⁻¹ * x = 1 from inv_mul_cancel x_ne, mul_one, one_mul]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
⊢ x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹

tactic: rw [decomp]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v (x⁻¹ - y⁻¹) = ↑v (x⁻¹ * (y - x) * y⁻¹)

tactic: repeat' rw [Valuation.map_mul]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v (x⁻¹ * (y - x) * y⁻¹) = ↑v x⁻¹ * ↑v (y - x) * ↑v y⁻¹

tactic: rw [Valuation.map_mul]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v (x⁻¹ * (y - x)) * ↑v y⁻¹ = ↑v x⁻¹ * ↑v (y - x) * ↑v y⁻¹

tactic: rw [map_inv₀, map_inv₀]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v x⁻¹ * ↑v (y - x) * ↑v y⁻¹ = (↑v x)⁻¹ * ↑v (y - x) * (↑v y)⁻¹

tactic: rw [mul_assoc, mul_comm, key, mul_assoc, mul_inv_rev]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ (↑v x)⁻¹ * ↑v (y - x) * (↑v y)⁻¹ = ↑v (y - x) * (↑v y * ↑v y)⁻¹

tactic: rw [Valuation.map_sub_swap]
state_before: K : Type u_2
inst✝¹ : DivisionRing K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
v : Valuation K Γ₀
x y : K
γ : Γ₀ˣ
y_ne : y ≠ 0
h : ↑v (x - y) < min (↑γ * (↑v y * ↑v y)) (↑v y)
hyp1 : ↑v (x - y) < ↑γ * (↑v y * ↑v y)
hyp1' : ↑v (x - y) * (↑v y * ↑v y)⁻¹ < ↑γ
hyp2 : ↑v (x - y) < ↑v y
key : ↑v x = ↑v y
x_ne : x ≠ 0
decomp : x⁻¹ - y⁻¹ = x⁻¹ * (y - x) * y⁻¹
⊢ ↑v (y - x) * (↑v y * ↑v y)⁻¹ = ↑v (x - y) * (↑v y * ↑v y)⁻¹