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

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

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

tactic: intro h
state_before: case h
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
⊢ γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
state_after: case h
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 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_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
⊢ x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ
state_after: case h
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
⊢ x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ

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

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

case h.refine_2
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
⊢ ∃ y, ↑y ∈ s

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

case inr
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ ≠ 0
⊢ 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_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ x ∈ {x | extensionValuation x < ↑γ}
state_after: case inl
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ closure (↑K '' {x | v x < ↑γ})

tactic: apply subset_closure
state_before: case inl
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ closure (↑K '' {x | v x < ↑γ})
state_after: case inl.a
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ ↑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_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
this : γ₀ ≠ 0 → (x ∈ closure (↑K '' {x | v x < ↑γ}) ↔ γ₀ < ↑γ)
h : γ₀ = 0
⊢ 0 ∈ ↑K '' {x | v x < ↑γ}
state_after: no goals

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

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

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

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

tactic: replace hy₂ : v y = γ₀ := by simpa using hy₂
state_before: case h.refine_1.intro.mk.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ t ∈ 𝓝 x, ∃ y, ↑y ∈ t
y : K
hy₁ : v y < ↑γ
hy₂ : ↑⟨↑K y, ⋯⟩ ∈ extension ⁻¹' {γ₀}
⊢ γ₀ < ↑γ
state_after: case h.refine_1.intro.mk.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ t ∈ 𝓝 x, ∃ y, ↑y ∈ t
y : K
hy₁ : v y < ↑γ
hy₂ : v y = γ₀
⊢ γ₀ < ↑γ

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

tactic: simpa using hy₂
state_before: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : ∀ t ∈ 𝓝 x, ∃ y, ↑y ∈ t
y : K
hy₁ : v y < ↑γ
hy₂ : ↑⟨↑K y, ⋯⟩ ∈ extension ⁻¹' {γ₀}
⊢ v y = γ₀
state_after: no goals

tactic: obtain ⟨y, hy₁, hy₂⟩ := Completion.denseRange_coe.mem_nhds (inter_mem hγ₀ hs)
state_before: case h.refine_2
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := extensionValuation x
h : γ₀ ≠ 0
hγ₀ : extension ⁻¹' {γ₀} ∈ 𝓝 x
hx : γ₀ < ↑γ
s : Set (hat K)
hs : s ∈ 𝓝 x
⊢ ∃ y, ↑y ∈ s
state_after: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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: replace hy₁ : v y = γ₀ := by simpa using hy₁
state_before: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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
state_after: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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: rw [← hy₁] at hx
state_before: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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
state_after: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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: exact ⟨⟨y, ⟨y, hx, rfl⟩⟩, hy₂⟩
state_before: case h.refine_2.intro.intro
K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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
state_after: no goals

tactic: simpa using hy₁
state_before: K : Type u_1
inst✝¹ : Field K
Γ₀ : Type u_2
inst✝ : LinearOrderedCommGroupWithZero Γ₀
hv : Valued K Γ₀
γ : Γ₀ˣ
x : hat K
γ₀ : Γ₀ := 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 = γ₀
state_after: no goals