l3lab/ntp-mathlib huggingface dataset:
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · 

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
H :
  (fun i => ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) = fun b_1 =>
    (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
      ((fun i => lp.single 2 i (↑f i)) b_1)
⊢ HasSum (fun i => ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i)
    ((LinearIsometryEquiv.symm b.repr) f)

Next tactic:
rw [H]
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
H :
  (fun i => ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) = fun b_1 =>
    (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
      ((fun i => lp.single 2 i (↑f i)) b_1)
⊢ HasSum
    (fun b_1 =>
      (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) b_1))
    ((LinearIsometryEquiv.symm b.repr) f)

Next tactic:
have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
H :
  (fun i => ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) = fun b_1 =>
    (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
      ((fun i => lp.single 2 i (↑f i)) b_1)
this : HasSum (fun i => lp.single 2 i (↑f i)) f
⊢ HasSum
    (fun b_1 =>
      (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) b_1))
    ((LinearIsometryEquiv.symm b.repr) f)

Next tactic:
exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  

Proof state:
case H
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
⊢ (fun i => ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) = fun b_1 =>
    (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
      ((fun i => lp.single 2 i (↑f i)) b_1)

Next tactic:
ext i
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  

Proof state:
case H.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
⊢ ↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i =
    (LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr)) ((fun i => lp.single 2 i (↑f i)) i)

Next tactic:
apply b.repr.injective
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  

Proof state:
case H.h.a
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
⊢ b.repr (↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) =
    b.repr
      ((LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) i))

Next tactic:
letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by 

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
⊢ NormedSpace 𝕜 ↥(lp (fun _i => 𝕜) 2)

Next tactic:
infer_instance
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
  

Proof state:
case H.h.a
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
this : NormedSpace 𝕜 ↥(lp (fun _i => 𝕜) 2) := inferInstance
⊢ b.repr (↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) =
    b.repr
      ((LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) i))

Next tactic:
have : lp.single (E := (fun _ : ι => 𝕜)) 2 i (f i * 1) = f i • lp.single 2 i 1 :=
    lp.single_smul (E := (fun _ : ι => 𝕜)) 2 i (1 : 𝕜) (f i)
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
  have : lp.single (E := (fun _ : ι => 𝕜)) 2 i (f i * 1) = f i • lp.single 2 i 1 :=
    lp.single_smul (E := (fun _ : ι => 𝕜)) 2 i (1 : 𝕜) (f i)
  

Proof state:
case H.h.a
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
this✝ : NormedSpace 𝕜 ↥(lp (fun _i => 𝕜) 2) := inferInstance
this : lp.single 2 i (↑f i * 1) = ↑f i • lp.single 2 i 1
⊢ b.repr (↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) =
    b.repr
      ((LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) i))

Next tactic:
rw [mul_one] at this
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
  have : lp.single (E := (fun _ : ι => 𝕜)) 2 i (f i * 1) = f i • lp.single 2 i 1 :=
    lp.single_smul (E := (fun _ : ι => 𝕜)) 2 i (1 : 𝕜) (f i)
  rw [mul_one] at this
  

Proof state:
case H.h.a
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
this✝ : NormedSpace 𝕜 ↥(lp (fun _i => 𝕜) 2) := inferInstance
this : lp.single 2 i (↑f i) = ↑f i • lp.single 2 i 1
⊢ b.repr (↑f i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) =
    b.repr
      ((LinearIsometryEquiv.toContinuousLinearEquiv (LinearIsometryEquiv.symm b.repr))
        ((fun i => lp.single 2 i (↑f i)) i))

Next tactic:
rw [LinearIsometryEquiv.map_smul, b.repr_self, ← this,
    LinearIsometryEquiv.coe_toContinuousLinearEquiv]
protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) := by
  suffices H : (fun i : ι => f i • b i) = fun b_1 : ι => b.repr.symm.toContinuousLinearEquiv <|
    (fun i : ι => lp.single 2 i (f i) (E := (fun _ : ι => 𝕜))) b_1
  · rw [H]
    have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
    exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
  ext i
  apply b.repr.injective
  letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
  have : lp.single (E := (fun _ : ι => 𝕜)) 2 i (f i * 1) = f i • lp.single 2 i 1 :=
    lp.single_smul (E := (fun _ : ι => 𝕜)) 2 i (1 : 𝕜) (f i)
  rw [mul_one] at this
  rw [LinearIsometryEquiv.map_smul, b.repr_self, ← this,
    LinearIsometryEquiv.coe_toContinuousLinearEquiv]
  

Proof state:
case H.h.a
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : ↥(lp (fun i => 𝕜) 2)
i : ι
this✝ : NormedSpace 𝕜 ↥(lp (fun _i => 𝕜) 2) := inferInstance
this : lp.single 2 i (↑f i) = ↑f i • lp.single 2 i 1
⊢ lp.single 2 i (↑f i) = b.repr ((LinearIsometryEquiv.symm b.repr) ((fun i => lp.single 2 i (↑f i)) i))

Next tactic:
exact (b.repr.apply_symm_apply (lp.single 2 i (f i))).symm
protected theorem hasSum_repr (b : HilbertBasis ι 𝕜 E) (x : E) :
    HasSum (fun i => b.repr x i • b i) x := by 

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
⊢ HasSum (fun i => ↑(b.repr x) i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) x

Next tactic:
simpa using b.hasSum_repr_symm (b.repr x)
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
⊢ topologicalClosure (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))) = ⊤

Next tactic:
classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    simp only [SetLike.mem_coe]
    refine' sum_mem _
    rintro i -
    refine' smul_mem _ _ _
    exact subset_span ⟨i, rfl⟩
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
⊢ topologicalClosure (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))) = ⊤

Next tactic:
rw [eq_top_iff]
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
⊢ ⊤ ≤ topologicalClosure (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)))

Next tactic:
rintro x -
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
⊢ x ∈ topologicalClosure (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)))

Next tactic:
refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
⊢ ∀ (x_1 : Finset ι),
    ∑ b_1 in x_1, (fun i => ↑(b.repr x) i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) b_1 ∈
      ↑(span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))).toAddSubmonoid

Next tactic:
intro s
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
s : Finset ι
⊢ ∑ b_1 in s, (fun i => ↑(b.repr x) i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) b_1 ∈
    ↑(span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))).toAddSubmonoid

Next tactic:
simp only [SetLike.mem_coe]
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    simp only [SetLike.mem_coe]
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
s : Finset ι
⊢ ∑ x_1 in s, ↑(b.repr x) x_1 • (LinearIsometryEquiv.symm b.repr) (lp.single 2 x_1 1) ∈
    (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))).toAddSubmonoid

Next tactic:
refine' sum_mem _
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    simp only [SetLike.mem_coe]
    refine' sum_mem _
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
s : Finset ι
⊢ ∀ c ∈ s,
    ↑(b.repr x) c • (LinearIsometryEquiv.symm b.repr) (lp.single 2 c 1) ∈
      (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))).toAddSubmonoid

Next tactic:
rintro i -
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    simp only [SetLike.mem_coe]
    refine' sum_mem _
    rintro i -
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
s : Finset ι
i : ι
⊢ ↑(b.repr x) i • (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1) ∈
    (span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))).toAddSubmonoid

Next tactic:
refine' smul_mem _ _ _
@[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ := by
  classical
    rw [eq_top_iff]
    rintro x -
    refine' mem_closure_of_tendsto (b.hasSum_repr x) (eventually_of_forall _)
    intro s
    simp only [SetLike.mem_coe]
    refine' sum_mem _
    rintro i -
    refine' smul_mem _ _ _
    

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x : E
s : Finset ι
i : ι
⊢ (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1) ∈
    span 𝕜 (Set.range fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1))

Next tactic:
exact subset_span ⟨i, rfl⟩
protected theorem hasSum_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    HasSum (fun i => ⟪x, b i⟫ * ⟪b i, y⟫) ⟪x, y⟫ := by
  

Proof state:
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
⊢ HasSum
    (fun i =>
      inner x ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) *
        inner ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) y)
    (inner x y)

Next tactic:
convert (b.hasSum_repr y).mapL (innerSL _ x) using 1
protected theorem hasSum_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    HasSum (fun i => ⟪x, b i⟫ * ⟪b i, y⟫) ⟪x, y⟫ := by
  convert (b.hasSum_repr y).mapL (innerSL _ x) using 1
  

Proof state:
case h.e'_5
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
⊢ (fun i =>
      inner x ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) *
        inner ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) y) =
    fun b_1 => ((innerSL 𝕜) x) (↑(b.repr y) b_1 • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) b_1)

Next tactic:
ext i
protected theorem hasSum_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    HasSum (fun i => ⟪x, b i⟫ * ⟪b i, y⟫) ⟪x, y⟫ := by
  convert (b.hasSum_repr y).mapL (innerSL _ x) using 1
  ext i
  

Proof state:
case h.e'_5.h
ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type u_4
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
x y : E
i : ι
⊢ inner x ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) *
      inner ((fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i) y =
    ((innerSL 𝕜) x) (↑(b.repr y) i • (fun i => (LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i)

Next tactic:
rw [innerSL_apply, b.repr_apply_apply, inner_smul_right, mul_comm]