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

tactic: let p : SeminormFamily 𝕜 E (Fin 1) := fun _ => normSeminorm 𝕜 E
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
⊢ WithSeminorms fun x => normSeminorm 𝕜 E

tactic: refine'
  ⟨SeminormedAddCommGroup.toTopologicalAddGroup.ext
      p.addGroupFilterBasis.isTopologicalAddGroup _⟩
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
⊢ WithSeminorms fun x => normSeminorm 𝕜 E

tactic: refine' Filter.HasBasis.eq_of_same_basis Metric.nhds_basis_ball _
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
⊢ 𝓝 0 = 𝓝 0

tactic: rw [← ball_normSeminorm 𝕜 E]
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
⊢ Filter.HasBasis (𝓝 0) (fun x => 0 < x) (Metric.ball 0)

tactic: refine'
  Filter.HasBasis.to_hasBasis p.addGroupFilterBasis.nhds_zero_hasBasis _ fun r hr =>
    ⟨(normSeminorm 𝕜 E).ball 0 r, p.basisSets_singleton_mem 0 hr, rfl.subset⟩
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
⊢ Filter.HasBasis (𝓝 0) (fun x => 0 < x) (ball (normSeminorm 𝕜 E) 0)

tactic: rintro U (hU : U ∈ p.basisSets)
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
⊢ ∀ (i : Set E), i ∈ SeminormFamily.addGroupFilterBasis p → ∃ i', 0 < i' ∧ ball (normSeminorm 𝕜 E) 0 i' ⊆ id i

tactic: rcases p.basisSets_iff.mp hU with ⟨s, r, hr, hU⟩
state_before: 𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU : U ∈ SeminormFamily.basisSets p
⊢ ∃ i', 0 < i' ∧ ball (normSeminorm 𝕜 E) 0 i' ⊆ id U

tactic: use r, hr
state_before: case intro.intro.intro
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ∃ i', 0 < i' ∧ ball (normSeminorm 𝕜 E) 0 i' ⊆ id U

tactic: rw [hU, id.def]
state_before: case intro.intro.intro
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ball (normSeminorm 𝕜 E) 0 r ⊆ id U

tactic: by_cases h : s.Nonempty
state_before: case intro.intro.intro
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
⊢ ball (normSeminorm 𝕜 E) 0 r ⊆ ball (Finset.sup s p) 0 r

tactic: rw [Finset.not_nonempty_iff_eq_empty.mp h, Finset.sup_empty, ball_bot _ hr]
state_before: case neg
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
h : ¬Finset.Nonempty s
⊢ ball (normSeminorm 𝕜 E) 0 r ⊆ ball (Finset.sup s p) 0 r

tactic: exact Set.subset_univ _
state_before: case neg
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
h : ¬Finset.Nonempty s
⊢ ball (normSeminorm 𝕜 E) 0 r ⊆ univ

tactic: rw [Finset.sup_const h]
state_before: case pos
𝕜✝ : Type ?u.457423
𝕜₂ : Type ?u.457426
𝕝 : Type ?u.457429
𝕝₂ : Type ?u.457432
E✝ : Type ?u.457435
F : Type ?u.457438
G : Type ?u.457441
ι : Type ?u.457444
ι' : Type ?u.457447
𝕜 : Type u_1
E : Type u_2
inst✝² : NormedField 𝕜
inst✝¹ : SeminormedAddCommGroup E
inst✝ : NormedSpace 𝕜 E
p : SeminormFamily 𝕜 E (Fin 1) := fun x => normSeminorm 𝕜 E
U : Set E
hU✝ : U ∈ SeminormFamily.basisSets p
s : Finset (Fin 1)
r : ℝ
hr : 0 < r
hU : U = ball (Finset.sup s p) 0 r
h : Finset.Nonempty s
⊢ ball (normSeminorm 𝕜 E) 0 r ⊆ ball (Finset.sup s p) 0 r