Theorem: absorbent_nhds_zero
File: Mathlib/Analysis/LocallyConvex/Basic.lean

tactic: intro x
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
⊢ Absorbent 𝕜 A

tactic: obtain ⟨w, hw₁, hw₂, hw₃⟩ := mem_nhds_iff.mp hA
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
⊢ ∃ r, 0 < r ∧ ∀ (a : 𝕜), r ≤ ‖a‖ → x ∈ a • A

tactic: have hc : Continuous fun t : 𝕜 => t • x := continuous_id.smul continuous_const
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
⊢ ∃ r, 0 < r ∧ ∀ (a : 𝕜), r ≤ ‖a‖ → x ∈ a • A

tactic: obtain ⟨r, hr₁, hr₂⟩ :=
  Metric.isOpen_iff.mp (hw₂.preimage hc) 0 (by rwa [mem_preimage, zero_smul])
state_before: case intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
⊢ ∃ r, 0 < r ∧ ∀ (a : 𝕜), r ≤ ‖a‖ → x ∈ a • A

tactic: have hr₃ := inv_pos.mpr (half_pos hr₁)
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
⊢ ∃ r, 0 < r ∧ ∀ (a : 𝕜), r ≤ ‖a‖ → x ∈ a • A

tactic: refine' ⟨(r / 2)⁻¹, hr₃, fun a ha₁ => _⟩
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
hr₃ : 0 < (r / 2)⁻¹
⊢ ∃ r, 0 < r ∧ ∀ (a : 𝕜), r ≤ ‖a‖ → x ∈ a • A

tactic: have ha₂ : 0 < ‖a‖ := hr₃.trans_le ha₁
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a✝ b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
hr₃ : 0 < (r / 2)⁻¹
a : 𝕜
ha₁ : (r / 2)⁻¹ ≤ ‖a‖
⊢ x ∈ a • A

tactic: refine' (mem_smul_set_iff_inv_smul_mem₀ (norm_pos_iff.mp ha₂) _ _).2 (hw₁ <| hr₂ _)
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a✝ b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
hr₃ : 0 < (r / 2)⁻¹
a : 𝕜
ha₁ : (r / 2)⁻¹ ≤ ‖a‖
ha₂ : 0 < ‖a‖
⊢ x ∈ a • A

tactic: rw [Metric.mem_ball, dist_zero_right, norm_inv]
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a✝ b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
hr₃ : 0 < (r / 2)⁻¹
a : 𝕜
ha₁ : (r / 2)⁻¹ ≤ ‖a‖
ha₂ : 0 < ‖a‖
⊢ a⁻¹ ∈ Metric.ball 0 r

tactic: calc
  ‖a‖⁻¹ ≤ r / 2 := (inv_le (half_pos hr₁) ha₂).mp ha₁
  _ < r := half_lt_self hr₁
state_before: case intro.intro.intro.intro.intro
𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a✝ b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
r : ℝ
hr₁ : r > 0
hr₂ : Metric.ball 0 r ⊆ (fun t => t • x) ⁻¹' w
hr₃ : 0 < (r / 2)⁻¹
a : 𝕜
ha₁ : (r / 2)⁻¹ ≤ ‖a‖
ha₂ : 0 < ‖a‖
⊢ ‖a‖⁻¹ < r

tactic: rwa [mem_preimage, zero_smul]
state_before: 𝕜 : Type u_2
𝕝 : Type ?u.157008
E : Type u_1
ι : Sort ?u.157014
κ : ι → Sort ?u.157019
inst✝⁸ : NormedField 𝕜
inst✝⁷ : NormedRing 𝕝
inst✝⁶ : NormedSpace 𝕜 𝕝
inst✝⁵ : AddCommGroup E
inst✝⁴ : Module 𝕜 E
inst✝³ : SMulWithZero 𝕝 E
inst✝² : IsScalarTower 𝕜 𝕝 E
s t u v A B : Set E
x✝ : E
a b : 𝕜
inst✝¹ : TopologicalSpace E
inst✝ : ContinuousSMul 𝕜 E
hA : A ∈ 𝓝 0
x : E
w : Set E
hw₁ : w ⊆ A
hw₂ : IsOpen w
hw₃ : 0 ∈ w
hc : Continuous fun t => t • x
⊢ 0 ∈ (fun t => t • x) ⁻¹' w