-- Mathlib/Analysis/LocallyConvex/WithSeminorms.lean
theorem WithSeminorms.toLocallyConvexSpace {p : SeminormFamily 𝕜 E ι} (hp : WithSeminorms p) :
    LocallyConvexSpace ℝ E

Proof state:
case hbasis
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ (𝓝 0).HasBasis (fun s => s ∈ p.basisSets) id

Tactic:
rw [hp.1, AddGroupFilterBasis.nhds_eq _, AddGroupFilterBasis.N_zero]

Result:
case hbasis
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ AddGroupFilterBasis.toFilterBasis.filter.HasBasis (fun s => s ∈ p.basisSets) id

Proof state:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : s ∈ p.basisSets
⊢ Convex ℝ (id s)

Tactic:
change s ∈ Set.iUnion _ at hs

Result:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : s ∈ ⋃ s, ⋃ r, ⋃ (_ : 0 < r), {(s.sup p).ball 0 r}
⊢ Convex ℝ (id s)

Proof state:
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ LocallyConvexSpace ℝ E

Tactic:
apply ofBasisZero ℝ E id fun s => s ∈ p.basisSets

Result:
case hbasis
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ (𝓝 0).HasBasis (fun s => s ∈ p.basisSets) id

case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ ∀ i ∈ p.basisSets, Convex ℝ (id i)

Proof state:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : ∃ i i_1, ∃ (_ : 0 < i_1), s = (i.sup p).ball 0 i_1
⊢ Convex ℝ (id s)

Tactic:
rcases hs with ⟨I, r, _, rfl⟩

Result:
case hconvex.intro.intro.intro
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
I : Finset ι
r : ℝ
w✝ : 0 < r
⊢ Convex ℝ (id ((I.sup p).ball 0 r))

Proof state:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : s ∈ ⋃ s, ⋃ r, ⋃ (_ : 0 < r), {(s.sup p).ball 0 r}
⊢ Convex ℝ (id s)

Tactic:
simp_rw [Set.mem_iUnion, Set.mem_singleton_iff] at hs

Result:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : ∃ i i_1, ∃ (_ : 0 < i_1), s = (i.sup p).ball 0 i_1
⊢ Convex ℝ (id s)

Proof state:
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
⊢ LocallyConvexSpace ℝ E

Tactic:
have := hp.topologicalAddGroup

Result:
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ LocallyConvexSpace ℝ E

Proof state:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ ∀ i ∈ p.basisSets, Convex ℝ (id i)

Tactic:
intro s hs

Result:
case hconvex
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
s : Set E
hs : s ∈ p.basisSets
⊢ Convex ℝ (id s)

Proof state:
case hbasis
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
⊢ AddGroupFilterBasis.toFilterBasis.filter.HasBasis (fun s => s ∈ p.basisSets) id

Tactic:
exact FilterBasis.hasBasis _

Result:
no goals

Proof state:
case hconvex.intro.intro.intro
𝕜 : Type u_1
E : Type u_5
ι : Type u_8
inst✝⁷ : Nonempty ι
inst✝⁶ : NormedField 𝕜
inst✝⁵ : NormedSpace ℝ 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : Module ℝ E
inst✝¹ : IsScalarTower ℝ 𝕜 E
inst✝ : TopologicalSpace E
p : SeminormFamily 𝕜 E ι
hp : WithSeminorms p
this : IsTopologicalAddGroup E
I : Finset ι
r : ℝ
w✝ : 0 < r
⊢ Convex ℝ (id ((I.sup p).ball 0 r))

Tactic:
exact convex_ball _ _ _

Result:
no goals