Theorem: WithSeminorms.hasBasis_zero_ball
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: refine' ⟨fun V => _⟩
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
⊢ Filter.HasBasis (𝓝 0) (fun sr => 0 < sr.snd) fun sr => ball (Finset.sup sr.fst p) 0 sr.snd

tactic: simp only [hp.hasBasis.mem_iff, SeminormFamily.basisSets_iff, Prod.exists]
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
⊢ V ∈ 𝓝 0 ↔ ∃ i, 0 < i.snd ∧ ball (Finset.sup i.fst p) 0 i.snd ⊆ V

tactic: constructor
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
⊢ (∃ i, (∃ i_1 r x, i = ball (Finset.sup i_1 p) 0 r) ∧ id i ⊆ V) ↔ ∃ a b, 0 < b ∧ ball (Finset.sup a p) 0 b ⊆ V

tactic: rintro ⟨-, ⟨s, r, hr, rfl⟩, hV⟩
state_before: case mp
𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
⊢ (∃ i, (∃ i_1 r x, i = ball (Finset.sup i_1 p) 0 r) ∧ id i ⊆ V) → ∃ a b, 0 < b ∧ ball (Finset.sup a p) 0 b ⊆ V

tactic: exact ⟨s, r, hr, hV⟩
state_before: case mp.intro.intro.intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
s : Finset ι
r : ℝ
hr : 0 < r
hV : id (ball (Finset.sup s p) 0 r) ⊆ V
⊢ ∃ a b, 0 < b ∧ ball (Finset.sup a p) 0 b ⊆ V

tactic: rintro ⟨s, r, hr, hV⟩
state_before: case mpr
𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
⊢ (∃ a b, 0 < b ∧ ball (Finset.sup a p) 0 b ⊆ V) → ∃ i, (∃ i_1 r x, i = ball (Finset.sup i_1 p) 0 r) ∧ id i ⊆ V

tactic: exact ⟨_, ⟨s, r, hr, rfl⟩, hV⟩
state_before: case mpr.intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type ?u.185021
𝕝 : Type ?u.185024
𝕝₂ : Type ?u.185027
E : Type u_2
F : Type ?u.185033
G : Type ?u.185036
ι : Type u_3
ι' : Type ?u.185042
inst✝⁴ : NormedField 𝕜
inst✝³ : AddCommGroup E
inst✝² : Module 𝕜 E
inst✝¹ : Nonempty ι
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
V : Set E
s : Finset ι
r : ℝ
hr : 0 < r
hV : ball (Finset.sup s p) 0 r ⊆ V
⊢ ∃ i, (∃ i_1 r x, i = ball (Finset.sup i_1 p) 0 r) ∧ id i ⊆ V