Theorem: NormedSpace.isVonNBounded_iff
File: Mathlib/Analysis/LocallyConvex/Bounded.lean

tactic: rw [← Metric.bounded_iff_isBounded, Metric.bounded_iff_subset_ball (0 : E)]
state_before: 𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ Bornology.IsBounded s

tactic: constructor
state_before: 𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s ↔ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: intro h
state_before: case mp
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ Bornology.IsVonNBounded 𝕜 s → ∃ r, s ⊆ Metric.closedBall 0 r

tactic: rcases h (Metric.ball_mem_nhds 0 zero_lt_one) with ⟨ρ, hρ, hρball⟩
state_before: case mp
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
⊢ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: rcases NormedField.exists_lt_norm 𝕜 ρ with ⟨a, ha⟩
state_before: case mp.intro.intro
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
⊢ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: specialize hρball a ha.le
state_before: case mp.intro.intro.intro
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
hρball : ∀ (a : 𝕜), ρ ≤ ‖a‖ → s ⊆ a • Metric.ball 0 1
a : 𝕜
ha : ρ < ‖a‖
⊢ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: rw [← ball_normSeminorm 𝕜 E, Seminorm.smul_ball_zero (norm_pos_iff.1 <| hρ.trans ha),
  ball_normSeminorm, mul_one] at hρball
state_before: case mp.intro.intro.intro
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
a : 𝕜
ha : ρ < ‖a‖
hρball : s ⊆ a • Metric.ball 0 1
⊢ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: exact ⟨‖a‖, hρball.trans Metric.ball_subset_closedBall⟩
state_before: case mp.intro.intro.intro
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
h : Bornology.IsVonNBounded 𝕜 s
ρ : ℝ
hρ : 0 < ρ
a : 𝕜
ha : ρ < ‖a‖
hρball : s ⊆ Metric.ball 0 ‖a‖
⊢ ∃ r, s ⊆ Metric.closedBall 0 r

tactic: exact fun ⟨C, hC⟩ => (isVonNBounded_closedBall 𝕜 E C).subset hC
state_before: case mpr
𝕜 : Type u_2
𝕜' : Type ?u.246833
E : Type u_1
E' : Type ?u.246839
F : Type ?u.246842
ι : Type ?u.246845
inst✝² : NontriviallyNormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
s : Set E
⊢ (∃ r, s ⊆ Metric.closedBall 0 r) → Bornology.IsVonNBounded 𝕜 s