Theorem: Valued.closure_coe_completion_v_lt
File: Mathlib/Topology/Algebra/ValuedField.lean

tactic: ext x
state_before: K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
⊢ closure (↑K '' {x | ↑v x < ↑γ}) = {x | ↑extensionValuation x < ↑γ}

tactic: let γ₀ := extensionValuation x
state_before: case h
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ x ∈ {x | ↑extensionValuation x < ↑γ}

tactic: intro h
state_before: case h
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
⊢ γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)

tactic: have hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x :=
  continuous_extension.continuousAt.preimage_mem_nhds
    (WithZeroTopology.singleton_mem_nhds_of_ne_zero h)
state_before: case h
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ

tactic: rw [mem_closure_iff_nhds']
state_before: case h
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ

tactic: refine' ⟨fun hx => _, fun hx s hs => _⟩
state_before: case h
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
⊢ (∀ (t : Set (hat K)), t ∈ 𝓝 x → ∃ y, ↑y ∈ t) ↔ γ₀ < ↑γ

tactic: cases' eq_or_ne γ₀ 0 with h h
state_before: K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ x ∈ {x | ↑extensionValuation x < ↑γ}

tactic: simp only [h, (Valuation.zero_iff _).mp h, mem_setOf_eq, Valuation.map_zero, Units.zero_lt,
  iff_true_iff]
state_before: case inl
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ x ∈ {x | ↑extensionValuation x < ↑γ}

tactic: apply subset_closure
state_before: case inl
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ closure (↑K '' {x | ↑v x < ↑γ})

tactic: exact ⟨0, by simp only [mem_setOf_eq, Valuation.map_zero, Units.zero_lt, true_and_iff]; rfl ⟩
state_before: case inl.a
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ ↑K '' {x | ↑v x < ↑γ}

tactic: simp only [mem_setOf_eq, Valuation.map_zero, Units.zero_lt, true_and_iff]
state_before: K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ {x | ↑v x < ↑γ} ∧ ↑K 0 = 0

tactic: rfl
state_before: K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ ↑K 0 = 0

tactic: exact this h
state_before: case inr
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ ≠ 0
⊢ x ∈ closure (↑K '' {x | ↑v x < ↑γ}) ↔ x ∈ {x | ↑extensionValuation x < ↑γ}

tactic: obtain ⟨⟨-, y, hy₁ : v y < (γ : Γ₀), rfl⟩, hy₂⟩ := hx _ hγ₀
state_before: case h.refine'_1
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ (t : Set (hat K)), t ∈ 𝓝 x → ∃ y, ↑y ∈ t
⊢ γ₀ < ↑γ

tactic: replace hy₂ : v y = γ₀
state_before: case h.refine'_1.intro.mk.intro.intro
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ (t : Set (hat K)), t ∈ 𝓝 x → ∃ y, ↑y ∈ t
y : K
hy₁ : ↑v y < ↑γ
hy₂ : ↑{ val := ↑K y, property := (_ : ∃ a, a ∈ {x | ↑v x < ↑γ} ∧ ↑K a = ↑K y) } ∈ extension ⁻¹' {γ₀}
⊢ γ₀ < ↑γ

tactic: rwa [← hy₂]
state_before: case h.refine'_1.intro.mk.intro.intro
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ (t : Set (hat K)), t ∈ 𝓝 x → ∃ y, ↑y ∈ t
y : K
hy₁ : ↑v y < ↑γ
hy₂ : ↑v y = γ₀
⊢ γ₀ < ↑γ

tactic: simpa using hy₂
state_before: case hy₂
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ (t : Set (hat K)), t ∈ 𝓝 x → ∃ y, ↑y ∈ t
y : K
hy₁ : ↑v y < ↑γ
hy₂ : ↑{ val := ↑K y, property := (_ : ∃ a, a ∈ {x | ↑v x < ↑γ} ∧ ↑K a = ↑K y) } ∈ extension ⁻¹' {γ₀}
⊢ ↑v y = γ₀

tactic: obtain ⟨y, hy₁, hy₂⟩ := Completion.denseRange_coe.mem_nhds (inter_mem hγ₀ hs)
state_before: case h.refine'_2
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
⊢ ∃ y, ↑y ∈ s

tactic: replace hy₁ : v y = γ₀
state_before: case h.refine'_2.intro.intro
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
y : K
hy₁ : ↑K y ∈ extension ⁻¹' {γ₀}
hy₂ : ↑K y ∈ s
⊢ ∃ y, ↑y ∈ s

tactic: rw [← hy₁] at hx
state_before: case h.refine'_2.intro.intro
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
y : K
hy₂ : ↑K y ∈ s
hy₁ : ↑v y = γ₀
⊢ ∃ y, ↑y ∈ s

tactic: exact ⟨⟨y, ⟨y, hx, rfl⟩⟩, hy₂⟩
state_before: case h.refine'_2.intro.intro
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
s : Set (hat K)
hs : s ∈ 𝓝 x
y : K
hx : ↑v y < ↑γ
hy₂ : ↑K y ∈ s
hy₁ : ↑v y = γ₀
⊢ ∃ y, ↑y ∈ s

tactic: simpa using hy₁
state_before: case hy₁
K : Type u_2
inst✝¹ : Field K
Γ₀ : Type u_1
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : (fun x => Γ₀) x := ↑extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
y : K
hy₁ : ↑K y ∈ extension ⁻¹' {γ₀}
hy₂ : ↑K y ∈ s
⊢ ↑v y = γ₀