Theorem: ContinuousLinearMapWOT.hasBasis_seminorms
File: Mathlib/Analysis/Normed/Operator/WeakOperatorTopology.lean

Proof steps:
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
⊢ (𝓝 0).HasBasis (seminormFamily 𝕜 E F).basisSets id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (𝓝 0).HasBasis (seminormFamily 𝕜 E F).basisSets id
tactic: let p := seminormFamily 𝕜 E F
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (𝓝 0).HasBasis (seminormFamily 𝕜 E F).basisSets id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 ((inducingFn 𝕜 E F) 0 i))).HasBasis
    (seminormFamily 𝕜 E F).basisSets id
tactic: rw [nhds_induced, nhds_pi]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 ((inducingFn 𝕜 E F) 0 i))).HasBasis
    (seminormFamily 𝕜 E F).basisSets id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 0)).HasBasis (seminormFamily 𝕜 E F).basisSets id
tactic: simp only [map_zero, Pi.zero_apply]
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 0)).HasBasis (seminormFamily 𝕜 E F).basisSets id
state_after: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
h :
  (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun x => 𝓝 0)).HasBasis
    (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun i =>
    ⇑(inducingFn 𝕜 E F) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 0)).HasBasis (seminormFamily 𝕜 E F).basisSets id
tactic: have h := Filter.hasBasis_pi (fun _ : (E × F⋆) ↦ Metric.nhds_basis_ball (x := 0)) |>.comap
    (inducingFn 𝕜 E F)
state_before: 𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
h :
  (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun x => 𝓝 0)).HasBasis
    (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun i =>
    ⇑(inducingFn 𝕜 E F) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun i => 𝓝 0)).HasBasis (seminormFamily 𝕜 E F).basisSets id
state_after: case refine_1
𝕜 : Type u_1
E : Type u_2
F : Type u_3
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
h :
  (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun x => 𝓝 0)).HasBasis
    (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun i =>
    ⇑(inducingFn 𝕜 E F) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i : Set (E × NormedSpace.Dual 𝕜 F) × (E × NormedSpace.Dual 𝕜 F → ℝ)),
    (i.1.Finite ∧ ∀ i_1 ∈ i.1, 0 < i.2 i_1) →
      ∃ i',
        (seminormFamily 𝕜 E F).basisSets i' ∧ id i' ⊆ ⇑(inducingFn 𝕜 E F) ⁻¹' 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
inst✝⁵ : RCLike 𝕜
inst✝⁴ : AddCommGroup E
inst✝³ : TopologicalSpace E
inst✝² : Module 𝕜 E
inst✝¹ : NormedAddCommGroup F
inst✝ : NormedSpace 𝕜 F
p : SeminormFamily 𝕜 (E →WOT[𝕜]F) (E × NormedSpace.Dual 𝕜 F) := seminormFamily 𝕜 E F
h :
  (Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun x => 𝓝 0)).HasBasis
    (fun If => If.1.Finite ∧ ∀ i ∈ If.1, 0 < If.2 i) fun i =>
    ⇑(inducingFn 𝕜 E F) ⁻¹' i.1.pi fun i_1 => Metric.ball 0 (i.2 i_1)
⊢ ∀ (i' : Set (E →WOT[𝕜]F)),
    (seminormFamily 𝕜 E F).basisSets i' → id i' ∈ Filter.comap (⇑(inducingFn 𝕜 E F)) (Filter.pi fun x => 𝓝 0)
tactic: refine h.to_hasBasis' ?_ ?_