Theorem: LinearMap.hasBasis_weakBilin
File: Mathlib/Analysis/LocallyConvex/WeakDual.lean

tactic: let p := B.toSeminormFamily
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
⊢ (𝓝 0).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (𝓝 0).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: rw [nhds_induced, nhds_pi]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (𝓝 0).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 ((B 0) i))).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: simp only [map_zero, LinearMap.zero_apply]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 ((B 0) i))).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: have h := @Metric.nhds_basis_ball 𝕜 _ 0
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: have h' := Filter.hasBasis_pi fun _ : F => h
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: have h'' := Filter.HasBasis.comap (fun x y => B x y) h'
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id

tactic: refine h''.to_hasBasis ?_ ?_
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ (Filter.comap (fun x y => (B x) y) (Filter.pi fun i => 𝓝 0)).HasBasis B.toSeminormFamily.basisSets _root_.id
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i : Set F × (F → ℝ)),
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) →
      ∃ i',
        B.toSeminormFamily.basisSets i' ∧
          _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)

case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i' : Set E),
    B.toSeminormFamily.basisSets i' →
      ∃ i,
        (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
          ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id i'

tactic: rintro U (hU : U ∈ p.basisSets)
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i' : Set E),
    B.toSeminormFamily.basisSets i' →
      ∃ i,
        (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
          ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id i'
state_after: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
hU : U ∈ p.basisSets
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U

tactic: rw [SeminormFamily.basisSets_iff] at hU
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
hU : U ∈ p.basisSets
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U
state_after: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
hU : ∃ i r, 0 < r ∧ U = (i.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U

tactic: rcases hU with ⟨s, r, hr, hU⟩
state_before: case refine_2
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
hU : ∃ i r, 0 < r ∧ U = (i.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U

tactic: rw [hU]
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id U
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id ((s.sup p).ball 0 r)

tactic: refine ⟨(s, fun _ => r), ⟨by simp only [s.finite_toSet], fun y _ => hr⟩, fun x hx => ?_⟩
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ ∃ i,
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) ∧
      ((fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)) ⊆ _root_.id ((s.sup p).ball 0 r)
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : x ∈ (fun x y => (B x) y) ⁻¹' (↑s, fun x => r).1.pi fun i => Metric.ball 0 ((↑s, fun x => r).2 i)
⊢ x ∈ _root_.id ((s.sup p).ball 0 r)

tactic: simp only [Set.mem_preimage, Set.mem_pi, Finset.mem_coe, mem_ball_zero_iff] at hx
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : x ∈ (fun x y => (B x) y) ⁻¹' (↑s, fun x => r).1.pi fun i => Metric.ball 0 ((↑s, fun x => r).2 i)
⊢ x ∈ _root_.id ((s.sup p).ball 0 r)
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
⊢ x ∈ _root_.id ((s.sup p).ball 0 r)

tactic: simp only [_root_.id, Seminorm.mem_ball, sub_zero]
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
⊢ x ∈ _root_.id ((s.sup p).ball 0 r)
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
⊢ (s.sup p) x < r

tactic: refine Seminorm.finset_sup_apply_lt hr fun y hy => ?_
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
⊢ (s.sup p) x < r
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
y : F
hy : y ∈ s
⊢ (p y) x < r

tactic: rw [LinearMap.toSeminormFamily_apply]
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
y : F
hy : y ∈ s
⊢ (p y) x < r
state_after: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
y : F
hy : y ∈ s
⊢ ‖(B x) y‖ < r

tactic: exact hx y hy
state_before: case refine_2.intro.intro.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
x : E
hx : ∀ i ∈ s, ‖(B x) i‖ < r
y : F
hy : y ∈ s
⊢ ‖(B x) y‖ < r
state_after: no goals

tactic: rintro (U : Set F × (F → ℝ)) hU
state_before: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i : Set F × (F → ℝ)),
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) →
      ∃ i',
        B.toSeminormFamily.basisSets i' ∧
          _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU : U.1.Finite ∧ ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: cases' hU with hU₁ hU₂
state_before: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU : U.1.Finite ∧ ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: simp only [_root_.id]
state_before: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ _root_.id i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: let U' := hU₁.toFinset
state_before: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: by_cases hU₃ : U.fst.Nonempty
state_before: case refine_1.intro
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: rw [Set.not_nonempty_iff_eq_empty.mp hU₃]
state_before: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' ∅.pi fun i => Metric.ball 0 (U.2 i)

tactic: simp only [Set.empty_pi, Set.preimage_univ, Set.subset_univ, and_true_iff]
state_before: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' ∅.pi fun i => Metric.ball 0 (U.2 i)
state_after: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i'

tactic: exact Exists.intro ((p 0).ball 0 1) (p.basisSets_singleton_mem 0 one_pos)
state_before: case neg
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : ¬U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i'
state_after: no goals

tactic: have hU₃' : U'.Nonempty := hU₁.toFinset_nonempty.mpr hU₃
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)

tactic: refine ⟨(U'.sup p).ball 0 <| U'.inf' hU₃' U.snd, p.basisSets_mem _ <|
  (Finset.lt_inf'_iff _).2 fun y hy => hU₂ y <| hU₁.mem_toFinset.mp hy, fun x hx y hy => ?_⟩
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
⊢ ∃ i', B.toSeminormFamily.basisSets i' ∧ i' ⊆ (fun x y => (B x) y) ⁻¹' U.1.pi fun i => Metric.ball 0 (U.2 i)
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : x ∈ (U'.sup p).ball 0 (U'.inf' hU₃' U.2)
y : F
hy : y ∈ U.1
⊢ (fun x y => (B x) y) x y ∈ (fun i => Metric.ball 0 (U.2 i)) y

tactic: simp only [Set.mem_preimage, Set.mem_pi, mem_ball_zero_iff]
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : x ∈ (U'.sup p).ball 0 (U'.inf' hU₃' U.2)
y : F
hy : y ∈ U.1
⊢ (fun x y => (B x) y) x y ∈ (fun i => Metric.ball 0 (U.2 i)) y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : x ∈ (U'.sup p).ball 0 (U'.inf' hU₃' U.2)
y : F
hy : y ∈ U.1
⊢ ‖(B x) y‖ < U.2 y

tactic: rw [Seminorm.mem_ball_zero] at hx
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : x ∈ (U'.sup p).ball 0 (U'.inf' hU₃' U.2)
y : F
hy : y ∈ U.1
⊢ ‖(B x) y‖ < U.2 y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
⊢ ‖(B x) y‖ < U.2 y

tactic: rw [← LinearMap.toSeminormFamily_apply]
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
⊢ ‖(B x) y‖ < U.2 y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
⊢ (B.toSeminormFamily y) x < U.2 y

tactic: have hyU' : y ∈ U' := (Set.Finite.mem_toFinset hU₁).mpr hy
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
⊢ (B.toSeminormFamily y) x < U.2 y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
⊢ (B.toSeminormFamily y) x < U.2 y

tactic: have hp : p y ≤ U'.sup p := Finset.le_sup hyU'
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
⊢ (B.toSeminormFamily y) x < U.2 y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
hp : p y ≤ U'.sup p
⊢ (B.toSeminormFamily y) x < U.2 y

tactic: refine lt_of_le_of_lt (hp x) (lt_of_lt_of_le hx ?_)
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
hp : p y ≤ U'.sup p
⊢ (B.toSeminormFamily y) x < U.2 y
state_after: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
hp : p y ≤ U'.sup p
⊢ U'.inf' hU₃' U.2 ≤ U.2 y

tactic: exact Finset.inf'_le _ hyU'
state_before: case pos
𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set F × (F → ℝ)
hU₁ : U.1.Finite
hU₂ : ∀ i ∈ U.1, 0 < U.2 i
U' : Finset F := hU₁.toFinset
hU₃ : U.1.Nonempty
hU₃' : U'.Nonempty
x : E
hx : (U'.sup p) x < U'.inf' hU₃' U.2
y : F
hy : y ∈ U.1
hyU' : y ∈ U'
hp : p y ≤ U'.sup p
⊢ U'.inf' hU₃' U.2 ≤ U.2 y
state_after: no goals

tactic: simp only [s.finite_toSet]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
ι : Type u_4
inst✝⁵ : NormedField 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : Module 𝕜 E
inst✝² : AddCommGroup F
inst✝¹ : Module 𝕜 F
inst✝ : Nonempty ι
B✝ B : E →ₗ[𝕜] F →ₗ[𝕜] 𝕜
p : SeminormFamily 𝕜 E F := B.toSeminormFamily
h : (𝓝 0).HasBasis (fun x => 0 < x) (Metric.ball 0)
h' :
  (Filter.pi fun x => 𝓝 0).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun If =>
    If.1.pi fun i => Metric.ball 0 (If.2 i)
h'' :
  (Filter.comap (fun x y => (B x) y) (Filter.pi fun x => 𝓝 0)).HasBasis (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i)
    fun i => (fun x y => (B x) y) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
U : Set E
s : Finset F
r : ℝ
hr : 0 < r
hU : U = (s.sup p).ball 0 r
⊢ (↑s, fun x => r).1.Finite
state_after: no goals