Theorem: SeminormFamily.filter_eq_iInf
File: Mathlib/Analysis/LocallyConvex/WithSeminorms.lean

tactic: refine' le_antisymm (le_iInf fun i => _) _
state_before: 𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
⊢ FilterBasis.filter AddGroupFilterBasis.toFilterBasis = ⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)

tactic: rw [p.moduleFilterBasis.toFilterBasis.hasBasis.le_basis_iff
    (Metric.nhds_basis_ball.comap _)]
state_before: case refine'_1
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
⊢ FilterBasis.filter AddGroupFilterBasis.toFilterBasis ≤ Filter.comap (↑(p i)) (𝓝 0)

tactic: intro ε hε
state_before: case refine'_1
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
⊢ ∀ (i' : ℝ), 0 < i' → ∃ i_1, i_1 ∈ AddGroupFilterBasis.toFilterBasis ∧ id i_1 ⊆ ↑(p i) ⁻¹' Metric.ball 0 i'

tactic: refine' ⟨(p i).ball 0 ε, _, _⟩
state_before: case refine'_1
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
ε : ℝ
hε : 0 < ε
⊢ ∃ i_1, i_1 ∈ AddGroupFilterBasis.toFilterBasis ∧ id i_1 ⊆ ↑(p i) ⁻¹' Metric.ball 0 ε

tactic: rw [← (Finset.sup_singleton : _ = p i)]
state_before: case refine'_1.refine'_1
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
ε : ℝ
hε : 0 < ε
⊢ ball (p i) 0 ε ∈ AddGroupFilterBasis.toFilterBasis

tactic: exact p.basisSets_mem {i} hε
state_before: case refine'_1.refine'_1
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
ε : ℝ
hε : 0 < ε
⊢ ball (Finset.sup {i} p) 0 ε ∈ AddGroupFilterBasis.toFilterBasis

tactic: rw [id, (p i).ball_zero_eq_preimage_ball]
state_before: case refine'_1.refine'_2
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
i : ι
ε : ℝ
hε : 0 < ε
⊢ id (ball (p i) 0 ε) ⊆ ↑(p i) ⁻¹' Metric.ball 0 ε

tactic: rw [p.moduleFilterBasis.toFilterBasis.hasBasis.ge_iff]
state_before: case refine'_2
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
⊢ (⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)) ≤ FilterBasis.filter AddGroupFilterBasis.toFilterBasis

tactic: rintro U (hU : U ∈ p.basisSets)
state_before: case refine'_2
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
⊢ ∀ (i' : Set E), i' ∈ AddGroupFilterBasis.toFilterBasis → id i' ∈ ⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)

tactic: rcases p.basisSets_iff.mp hU with ⟨s, r, hr, rfl⟩
state_before: case refine'_2
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
U : Set E
hU : U ∈ basisSets p
⊢ id U ∈ ⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)

tactic: rw [id, Seminorm.ball_finset_sup_eq_iInter _ _ _ hr, s.iInter_mem_sets]
state_before: case refine'_2.intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
s : Finset ι
r : ℝ
hr : 0 < r
hU : ball (Finset.sup s p) 0 r ∈ basisSets p
⊢ id (ball (Finset.sup s p) 0 r) ∈ ⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)

tactic: exact fun i _ =>
  Filter.mem_iInf_of_mem i
    ⟨Metric.ball 0 r, Metric.ball_mem_nhds 0 hr,
      Eq.subset (p i).ball_zero_eq_preimage_ball.symm⟩
state_before: case refine'_2.intro.intro.intro
𝕜 : Type u_1
𝕜₂ : Type ?u.89095
𝕝 : Type ?u.89098
𝕝₂ : Type ?u.89101
E : Type u_2
F : Type ?u.89107
G : Type ?u.89110
ι : Type u_3
ι' : Type ?u.89116
inst✝³ : NormedField 𝕜
inst✝² : AddCommGroup E
inst✝¹ : Module 𝕜 E
p✝ : SeminormFamily 𝕜 E ι
inst✝ : Nonempty ι
p : SeminormFamily 𝕜 E ι
s : Finset ι
r : ℝ
hr : 0 < r
hU : ball (Finset.sup s p) 0 r ∈ basisSets p
⊢ ∀ (i : ι), i ∈ s → ball (p i) 0 r ∈ ⨅ (i : ι), Filter.comap (↑(p i)) (𝓝 0)