Theorem: IsLowerSet.mem_interior_of_forall_lt
File: Mathlib/Analysis/Normed/Order/UpperLower.lean

tactic: cases nonempty_fintype ι
state_before: α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
⊢ y ∈ interior s

tactic: obtain ⟨ε, hε, hxy⟩ := Pi.exists_forall_pos_add_lt h
state_before: case intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
⊢ y ∈ interior s

tactic: obtain ⟨z, hz, hxz⟩ := Metric.mem_closure_iff.1 hx _ hε
state_before: case intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
⊢ y ∈ interior s

tactic: rw [dist_pi_lt_iff hε] at hxz
state_before: case intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : dist x z < ε
⊢ y ∈ interior s

tactic: have hyz : ∀ i, y i < z i := by
  refine' fun i =>
    (lt_sub_iff_add_lt.2 <| hxy _).trans_le (sub_le_comm.1 <| (le_abs_self _).trans _)
  rw [← Real.norm_eq_abs, ← dist_eq_norm]
  exact (hxz _).le
state_before: case intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
⊢ y ∈ interior s

tactic: obtain ⟨δ, hδ, hyz⟩ := Pi.exists_forall_pos_add_lt hyz
state_before: case intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz : ∀ (i : ι), y i < z i
⊢ y ∈ interior s

tactic: refine' mem_interior.2 ⟨ball y δ, _, isOpen_ball, mem_ball_self hδ⟩
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ✝ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz✝ : ∀ (i : ι), y i < z i
δ : ℝ
hδ : 0 < δ
hyz : ∀ (i : ι), y i + δ < z i
⊢ y ∈ interior s

tactic: rintro w hw
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ✝ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz✝ : ∀ (i : ι), y i < z i
δ : ℝ
hδ : 0 < δ
hyz : ∀ (i : ι), y i + δ < z i
⊢ ball y δ ⊆ s

tactic: refine' hs (fun i => _) hz
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ✝ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz✝ : ∀ (i : ι), y i < z i
δ : ℝ
hδ : 0 < δ
hyz : ∀ (i : ι), y i + δ < z i
w : ι → ℝ
hw : w ∈ ball y δ
⊢ w ∈ s

tactic: simp_rw [ball_pi _ hδ, Real.ball_eq_Ioo] at hw
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ✝ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz✝ : ∀ (i : ι), y i < z i
δ : ℝ
hδ : 0 < δ
hyz : ∀ (i : ι), y i + δ < z i
w : ι → ℝ
hw : w ∈ ball y δ
i : ι
⊢ w i ≤ z i

tactic: exact ((hw _ <| mem_univ _).2.trans <| hyz _).le
state_before: case intro.intro.intro.intro.intro.intro.intro
α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ✝ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
hyz✝ : ∀ (i : ι), y i < z i
δ : ℝ
hδ : 0 < δ
hyz : ∀ (i : ι), y i + δ < z i
w : ι → ℝ
i : ι
hw : w ∈ pi univ fun b => Ioo (y b - δ) (y b + δ)
⊢ w i ≤ z i

tactic: refine' fun i =>
  (lt_sub_iff_add_lt.2 <| hxy _).trans_le (sub_le_comm.1 <| (le_abs_self _).trans _)
state_before: α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
⊢ ∀ (i : ι), y i < z i

tactic: rw [← Real.norm_eq_abs, ← dist_eq_norm]
state_before: α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
i : ι
⊢ abs (x i - z i) ≤ ε

tactic: exact (hxz _).le
state_before: α : Type ?u.6242
ι : Type u_1
inst✝ : Finite ι
s : Set (ι → ℝ)
x y : ι → ℝ
δ : ℝ
hs : IsLowerSet s
hx : x ∈ closure s
h : ∀ (i : ι), y i < x i
val✝ : Fintype ι
ε : ℝ
hε : 0 < ε
hxy : ∀ (i : ι), y i + ε < x i
z : ι → ℝ
hz : z ∈ s
hxz : ∀ (b : ι), dist (x b) (z b) < ε
i : ι
⊢ dist (x i) (z i) ≤ ε