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

Proof steps:
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: 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 →ₗ[𝕜] 𝕜
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: 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
⊢ (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: 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 => 𝓝 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 := @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
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_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)
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: 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)
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: refine h''.to_hasBasis ?_ ?_
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: 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)
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: 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 : ∃ 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: rcases hU with ⟨s, r, hr, 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: 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 ((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: 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
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 [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 : ∀ 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: 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
⊢ (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: 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
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: 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
⊢ ‖(B x) y‖ < r
state_after: no goals
tactic: exact hx y hy