File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

full_name: «_aux_Mathlib_Analysis_InnerProductSpace_l2Space___macroRules_term⟪_,_⟫_1»
code: local notation "⟪" x ", " y "⟫" => @inner 𝕜 _ _ x y
goal: Lean.Macro

full_name: _aux_Mathlib_Analysis_InnerProductSpace_l2Space___unexpand_lp_1
code: /-- `ℓ²(ι, 𝕜)` is the Hilbert space of square-summable functions `ι → 𝕜`, herein implemented
as `lp (fun i : ι => 𝕜) 2`. -/
notation "ℓ²(" ι ", " 𝕜 ")" => lp (fun i : ι => 𝕜) 2
goal: Lean.PrettyPrinter.Unexpander

full_name: «_aux_Mathlib_Analysis_InnerProductSpace_l2Space___macroRules_termℓ²(_,_)_1»
code: /-- `ℓ²(ι, 𝕜)` is the Hilbert space of square-summable functions `ι → 𝕜`, herein implemented
as `lp (fun i : ι => 𝕜) 2`. -/
notation "ℓ²(" ι ", " 𝕜 ")" => lp (fun i : ι => 𝕜) 2
goal: Lean.Macro

full_name: lp.summable_inner
code: theorem summable_inner (f g : lp G 2) : Summable fun i => ⟪f i, g i⟫ 
goal: Summable fun i => ⟪↑f i, ↑g i⟫_𝕜

full_name: lp.instInnerProductSpace
code: instance instInnerProductSpace : InnerProductSpace 𝕜 (lp G 2) 
goal: InnerProductSpace 𝕜 ↥(lp G 2)

full_name: lp.inner_eq_tsum
code: theorem inner_eq_tsum (f g : lp G 2) : ⟪f, g⟫ = ∑' i, ⟪f i, g i⟫ 
goal: ⟪f, g⟫_𝕜 = ∑' (i : ι), ⟪↑f i, ↑g i⟫_𝕜

full_name: lp.hasSum_inner
code: theorem hasSum_inner (f g : lp G 2) : HasSum (fun i => ⟪f i, g i⟫) ⟪f, g⟫ 
goal: HasSum (fun i => ⟪↑f i, ↑g i⟫_𝕜) ⟪f, g⟫_𝕜

full_name: lp.inner_single_left
code: theorem inner_single_left (i : ι) (a : G i) (f : lp G 2) : ⟪lp.single 2 i a, f⟫ = ⟪a, f i⟫ 
goal: ⟪lp.single 2 i a, f⟫_𝕜 = ⟪a, ↑f i⟫_𝕜

full_name: lp.inner_single_right
code: theorem inner_single_right (i : ι) (a : G i) (f : lp G 2) : ⟪f, lp.single 2 i a⟫ = ⟪f i, a⟫ 
goal: ⟪f, lp.single 2 i a⟫_𝕜 = ⟪↑f i, a⟫_𝕜

full_name: OrthogonalFamily.summable_of_lp
code: protected theorem summable_of_lp (f : lp G 2) : Summable fun i => V i (f i) 
goal: Summable fun i => (V i) (↑f i)

full_name: OrthogonalFamily.linearIsometry
code: /-- A mutually orthogonal family of subspaces of `E` induce a linear isometry from `lp 2` of the
subspaces into `E`. -/
protected def linearIsometry : lp G 2 →ₗᵢ[𝕜] E 
goal: ↥(lp G 2) →ₗᵢ[𝕜] E

full_name: OrthogonalFamily.linearIsometry_apply
code: protected theorem linearIsometry_apply (f : lp G 2) : hV.linearIsometry f = ∑' i, V i (f i) 
goal: hV.linearIsometry f = ∑' (i : ι), (V i) (↑f i)

full_name: OrthogonalFamily.hasSum_linearIsometry
code: protected theorem hasSum_linearIsometry (f : lp G 2) :
    HasSum (fun i => V i (f i)) (hV.linearIsometry f) 
goal: HasSum (fun i => (V i) (↑f i)) (hV.linearIsometry f)

full_name: OrthogonalFamily.linearIsometry_apply_single
code: @[simp]
protected theorem linearIsometry_apply_single {i : ι} (x : G i) :
    hV.linearIsometry (lp.single 2 i x) = V i x 
goal: hV.linearIsometry (lp.single 2 i x) = (V i) x

full_name: OrthogonalFamily.linearIsometry_apply_dfinsupp_sum_single
code: protected theorem linearIsometry_apply_dfinsupp_sum_single (W₀ : Π₀ i : ι, G i) :
    hV.linearIsometry (W₀.sum (lp.single 2)) = W₀.sum fun i => V i 
goal: hV.linearIsometry (W₀.sum (lp.single 2)) = W₀.sum fun i => ⇑(V i)

full_name: OrthogonalFamily.range_linearIsometry
code: /-- The canonical linear isometry from the `lp 2` of a mutually orthogonal family of subspaces of
`E` into E, has range the closure of the span of the subspaces. -/
protected theorem range_linearIsometry [∀ i, CompleteSpace (G i)] :
    LinearMap.range hV.linearIsometry.toLinearMap =
      (⨆ i, LinearMap.range (V i).toLinearMap).topologicalClosure 
goal: LinearMap.range hV.linearIsometry.toLinearMap = (⨆ i, LinearMap.range (V i).toLinearMap).topologicalClosure

full_name: IsHilbertSum.OrthogonalFamily
code: /-- Given a family of Hilbert spaces `G : ι → Type*`, a Hilbert sum of `G` consists of a Hilbert
space `E` and an orthogonal family `V : Π i, G i →ₗᵢ[𝕜] E` such that the induced isometry
`Φ : lp G 2 → E` is surjective.

Keeping in mind that `lp G 2` is "the" external Hilbert sum of `G : ι → Type*`, this is analogous
to `DirectSum.IsInternal`, except that we don't express it in terms of actual submodules. -/
structure IsHilbertSum : Prop where
  ofSurjective ::
  /-- The orthogonal family constituting the summands in the Hilbert sum. -/
  protected OrthogonalFamily : OrthogonalFamily 𝕜 G V
  /-- The isometry `lp G 2 → E` induced by the orthogonal family is surjective. -/
  protected surjective_isometry : Function.Surjective OrthogonalFamily.linearIsometry
goal: OrthogonalFamily 𝕜 G V

full_name: IsHilbertSum
code: /-- Given a family of Hilbert spaces `G : ι → Type*`, a Hilbert sum of `G` consists of a Hilbert
space `E` and an orthogonal family `V : Π i, G i →ₗᵢ[𝕜] E` such that the induced isometry
`Φ : lp G 2 → E` is surjective.

Keeping in mind that `lp G 2` is "the" external Hilbert sum of `G : ι → Type*`, this is analogous
to `DirectSum.IsInternal`, except that we don't express it in terms of actual submodules. -/
structure IsHilbertSum : Prop where
  ofSurjective ::
  /-- The orthogonal family constituting the summands in the Hilbert sum. -/
  protected OrthogonalFamily : OrthogonalFamily 𝕜 G V
  /-- The isometry `lp G 2 → E` induced by the orthogonal family is surjective. -/
  protected surjective_isometry : Function.Surjective OrthogonalFamily.linearIsometry
goal: Prop

full_name: IsHilbertSum.surjective_isometry
code: /-- Given a family of Hilbert spaces `G : ι → Type*`, a Hilbert sum of `G` consists of a Hilbert
space `E` and an orthogonal family `V : Π i, G i →ₗᵢ[𝕜] E` such that the induced isometry
`Φ : lp G 2 → E` is surjective.

Keeping in mind that `lp G 2` is "the" external Hilbert sum of `G : ι → Type*`, this is analogous
to `DirectSum.IsInternal`, except that we don't express it in terms of actual submodules. -/
structure IsHilbertSum : Prop where
  ofSurjective ::
  /-- The orthogonal family constituting the summands in the Hilbert sum. -/
  protected OrthogonalFamily : OrthogonalFamily 𝕜 G V
  /-- The isometry `lp G 2 → E` induced by the orthogonal family is surjective. -/
  protected surjective_isometry : Function.Surjective OrthogonalFamily.linearIsometry
goal: Function.Surjective ⇑⋯.linearIsometry

full_name: IsHilbertSum.ofSurjective
code: /-- Given a family of Hilbert spaces `G : ι → Type*`, a Hilbert sum of `G` consists of a Hilbert
space `E` and an orthogonal family `V : Π i, G i →ₗᵢ[𝕜] E` such that the induced isometry
`Φ : lp G 2 → E` is surjective.

Keeping in mind that `lp G 2` is "the" external Hilbert sum of `G : ι → Type*`, this is analogous
to `DirectSum.IsInternal`, except that we don't express it in terms of actual submodules. -/
structure IsHilbertSum : Prop where
  ofSurjective ::
  /-- The orthogonal family constituting the summands in the Hilbert sum. -/
  protected OrthogonalFamily : OrthogonalFamily 𝕜 G V
  /-- The isometry `lp G 2 → E` induced by the orthogonal family is surjective. -/
  protected surjective_isometry : Function.Surjective OrthogonalFamily.linearIsometry
goal: IsHilbertSum 𝕜 G V

full_name: IsHilbertSum.mk
code: /-- If `V : Π i, G i →ₗᵢ[𝕜] E` is an orthogonal family such that the supremum of the ranges of
`V i` is dense, then `(E, V)` is a Hilbert sum of `G`. -/
theorem IsHilbertSum.mk [∀ i, CompleteSpace <| G i] (hVortho : OrthogonalFamily 𝕜 G V)
    (hVtotal : ⊤ ≤ (⨆ i, LinearMap.range (V i).toLinearMap).topologicalClosure) :
    IsHilbertSum 𝕜 G V 
goal: IsHilbertSum 𝕜 G V

full_name: IsHilbertSum.mkInternal
code: /-- This is `Orthonormal.isHilbertSum` in the case of actual inclusions from subspaces. -/
theorem IsHilbertSum.mkInternal [∀ i, CompleteSpace <| F i]
    (hFortho : OrthogonalFamily 𝕜 (fun i => F i) fun i => (F i).subtypeₗᵢ)
    (hFtotal : ⊤ ≤ (⨆ i, F i).topologicalClosure) :
    IsHilbertSum 𝕜 (fun i => F i) fun i => (F i).subtypeₗᵢ 
goal: IsHilbertSum 𝕜 (fun i => ↥(F i)) fun i => (F i).subtypeₗᵢ

full_name: IsHilbertSum.linearIsometryEquiv
code: /-- *A* Hilbert sum `(E, V)` of `G` is canonically isomorphic to *the* Hilbert sum of `G`,
i.e `lp G 2`.

Note that this goes in the opposite direction from `OrthogonalFamily.linearIsometry`. -/
noncomputable def IsHilbertSum.linearIsometryEquiv (hV : IsHilbertSum 𝕜 G V) : E ≃ₗᵢ[𝕜] lp G 2 
goal: E ≃ₗᵢ[𝕜] ↥(lp G 2)

full_name: IsHilbertSum.linearIsometryEquiv_symm_apply
code: /-- In the canonical isometric isomorphism between a Hilbert sum `E` of `G` and `lp G 2`,
a vector `w : lp G 2` is the image of the infinite sum of the associated elements in `E`. -/
protected theorem IsHilbertSum.linearIsometryEquiv_symm_apply (hV : IsHilbertSum 𝕜 G V)
    (w : lp G 2) : hV.linearIsometryEquiv.symm w = ∑' i, V i (w i) 
goal: hV.linearIsometryEquiv.symm w = ∑' (i : ι), (V i) (↑w i)

full_name: IsHilbertSum.hasSum_linearIsometryEquiv_symm
code: /-- In the canonical isometric isomorphism between a Hilbert sum `E` of `G` and `lp G 2`,
a vector `w : lp G 2` is the image of the infinite sum of the associated elements in `E`, and this
sum indeed converges. -/
protected theorem IsHilbertSum.hasSum_linearIsometryEquiv_symm (hV : IsHilbertSum 𝕜 G V)
    (w : lp G 2) : HasSum (fun i => V i (w i)) (hV.linearIsometryEquiv.symm w) 
goal: HasSum (fun i => (V i) (↑w i)) (hV.linearIsometryEquiv.symm w)

full_name: IsHilbertSum.linearIsometryEquiv_symm_apply_single
code: /-- In the canonical isometric isomorphism between a Hilbert sum `E` of `G : ι → Type*` and
`lp G 2`, an "elementary basis vector" in `lp G 2` supported at `i : ι` is the image of the
associated element in `E`. -/
@[simp]
protected theorem IsHilbertSum.linearIsometryEquiv_symm_apply_single (hV : IsHilbertSum 𝕜 G V)
    {i : ι} (x : G i) : hV.linearIsometryEquiv.symm (lp.single 2 i x) = V i x 
goal: hV.linearIsometryEquiv.symm (lp.single 2 i x) = (V i) x

full_name: IsHilbertSum.linearIsometryEquiv_symm_apply_dfinsupp_sum_single
code: /-- In the canonical isometric isomorphism between a Hilbert sum `E` of `G : ι → Type*` and
`lp G 2`, a finitely-supported vector in `lp G 2` is the image of the associated finite sum of
elements of `E`. -/
protected theorem IsHilbertSum.linearIsometryEquiv_symm_apply_dfinsupp_sum_single
    (hV : IsHilbertSum 𝕜 G V) (W₀ : Π₀ i : ι, G i) :
    hV.linearIsometryEquiv.symm (W₀.sum (lp.single 2)) = W₀.sum fun i => V i 
goal: hV.linearIsometryEquiv.symm (W₀.sum (lp.single 2)) = W₀.sum fun i => ⇑(V i)

full_name: IsHilbertSum.linearIsometryEquiv_apply_dfinsupp_sum_single
code: /-- In the canonical isometric isomorphism between a Hilbert sum `E` of `G : ι → Type*` and
`lp G 2`, a finitely-supported vector in `lp G 2` is the image of the associated finite sum of
elements of `E`. -/
@[simp]
protected theorem IsHilbertSum.linearIsometryEquiv_apply_dfinsupp_sum_single
    (hV : IsHilbertSum 𝕜 G V) (W₀ : Π₀ i : ι, G i) :
    ((W₀.sum (γ := lp G 2) fun a b ↦ hV.linearIsometryEquiv (V a b)) : ∀ i, G i) = W₀ 
goal: ↑(W₀.sum fun a b => hV.linearIsometryEquiv ((V a) b)) = ⇑W₀

full_name: Orthonormal.isHilbertSum
code: /-- Given a total orthonormal family `v : ι → E`, `E` is a Hilbert sum of `fun i : ι => 𝕜`
relative to the family of linear isometries `fun i k => k • v i`. -/
theorem Orthonormal.isHilbertSum {v : ι → E} (hv : Orthonormal 𝕜 v)
    (hsp : ⊤ ≤ (span 𝕜 (Set.range v)).topologicalClosure) :
    IsHilbertSum 𝕜 (fun _ : ι => 𝕜) fun i => LinearIsometry.toSpanSingleton 𝕜 E (hv.1 i) 
goal: IsHilbertSum 𝕜 (fun x => 𝕜) fun i => LinearIsometry.toSpanSingleton 𝕜 E ⋯

full_name: Submodule.isHilbertSumOrthogonal
code: theorem Submodule.isHilbertSumOrthogonal (K : Submodule 𝕜 E) [hK : CompleteSpace K] :
    IsHilbertSum 𝕜 (fun b => ↥(cond b K Kᗮ)) fun b => (cond b K Kᗮ).subtypeₗᵢ 
goal: IsHilbertSum 𝕜 (fun b => ↥(bif b then K else Kᗮ)) fun b => (bif b then K else Kᗮ).subtypeₗᵢ

full_name: HilbertBasis
code: /-- A Hilbert basis on `ι` for an inner product space `E` is an identification of `E` with the `lp`
space `ℓ²(ι, 𝕜)`. -/
structure HilbertBasis where ofRepr ::
  /-- The linear isometric equivalence implementing identifying the Hilbert space with `ℓ²`. -/
  repr : E ≃ₗᵢ[𝕜] ℓ²(ι, 𝕜)
goal: Type (max (max u_1 u_2) u_3)

full_name: HilbertBasis.repr
code: /-- A Hilbert basis on `ι` for an inner product space `E` is an identification of `E` with the `lp`
space `ℓ²(ι, 𝕜)`. -/
structure HilbertBasis where ofRepr ::
  /-- The linear isometric equivalence implementing identifying the Hilbert space with `ℓ²`. -/
  repr : E ≃ₗᵢ[𝕜] ℓ²(ι, 𝕜)
goal: E ≃ₗᵢ[𝕜] ↥(lp (fun i => 𝕜) 2)

full_name: HilbertBasis.ofRepr
code: /-- A Hilbert basis on `ι` for an inner product space `E` is an identification of `E` with the `lp`
space `ℓ²(ι, 𝕜)`. -/
structure HilbertBasis where ofRepr ::
  /-- The linear isometric equivalence implementing identifying the Hilbert space with `ℓ²`. -/
  repr : E ≃ₗᵢ[𝕜] ℓ²(ι, 𝕜)
goal: HilbertBasis ι 𝕜 E

full_name: HilbertBasis.instInhabitedSubtypePreLpMemAddSubgroupLpOfNatENNReal
code: instance {ι : Type*} : Inhabited (HilbertBasis ι 𝕜 ℓ²(ι, 𝕜)) 
goal: Inhabited (HilbertBasis ι 𝕜 ↥(lp (fun i => 𝕜) 2))

full_name: HilbertBasis.instCoeFun
code: /-- `b i` is the `i`th basis vector. -/
instance instCoeFun : CoeFun (HilbertBasis ι 𝕜 E) fun _ => ι → E 
goal: CoeFun (HilbertBasis ι 𝕜 E) fun x => ι → E

full_name: HilbertBasis.repr_symm_single
code: protected theorem repr_symm_single (b : HilbertBasis ι 𝕜 E) (i : ι) :
    b.repr.symm (lp.single 2 i (1 : 𝕜)) = b i 
goal: b.repr.symm (lp.single 2 i 1) = (fun i => b.repr.symm (lp.single 2 i 1)) i

full_name: HilbertBasis.repr_self
code: protected theorem repr_self (b : HilbertBasis ι 𝕜 E) (i : ι) :
    b.repr (b i) = lp.single 2 i (1 : 𝕜) 
goal: b.repr ((fun i => b.repr.symm (lp.single 2 i 1)) i) = lp.single 2 i 1

full_name: HilbertBasis.repr_apply_apply
code: protected theorem repr_apply_apply (b : HilbertBasis ι 𝕜 E) (v : E) (i : ι) :
    b.repr v i = ⟪b i, v⟫ 
goal: ↑(b.repr v) i = ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, v⟫_𝕜

full_name: HilbertBasis.orthonormal
code: @[simp]
protected theorem orthonormal (b : HilbertBasis ι 𝕜 E) : Orthonormal 𝕜 b 
goal: Orthonormal 𝕜 fun i => b.repr.symm (lp.single 2 i 1)

full_name: HilbertBasis.hasSum_repr_symm
code: protected theorem hasSum_repr_symm (b : HilbertBasis ι 𝕜 E) (f : ℓ²(ι, 𝕜)) :
    HasSum (fun i => f i • b i) (b.repr.symm f) 
goal: HasSum (fun i => ↑f i • (fun i => b.repr.symm (lp.single 2 i 1)) i) (b.repr.symm f)

full_name: HilbertBasis.hasSum_repr
code: protected theorem hasSum_repr (b : HilbertBasis ι 𝕜 E) (x : E) :
    HasSum (fun i => b.repr x i • b i) x 
goal: HasSum (fun i => ↑(b.repr x) i • (fun i => b.repr.symm (lp.single 2 i 1)) i) x

full_name: HilbertBasis.dense_span
code: @[simp]
protected theorem dense_span (b : HilbertBasis ι 𝕜 E) :
    (span 𝕜 (Set.range b)).topologicalClosure = ⊤ 
goal: (Submodule.span 𝕜 (Set.range fun i => b.repr.symm (lp.single 2 i 1))).topologicalClosure = ⊤

full_name: HilbertBasis.hasSum_inner_mul_inner
code: protected theorem hasSum_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    HasSum (fun i => ⟪x, b i⟫ * ⟪b i, y⟫) ⟪x, y⟫ 
goal: HasSum (fun i => ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜)
  ⟪x, y⟫_𝕜

full_name: HilbertBasis.summable_inner_mul_inner
code: protected theorem summable_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    Summable fun i => ⟪x, b i⟫ * ⟪b i, y⟫ 
goal: Summable fun i => ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜

full_name: HilbertBasis.tsum_inner_mul_inner
code: protected theorem tsum_inner_mul_inner (b : HilbertBasis ι 𝕜 E) (x y : E) :
    ∑' i, ⟪x, b i⟫ * ⟪b i, y⟫ = ⟪x, y⟫ 
goal: ∑' (i : ι), ⟪x, (fun i => b.repr.symm (lp.single 2 i 1)) i⟫_𝕜 * ⟪(fun i => b.repr.symm (lp.single 2 i 1)) i, y⟫_𝕜 =
  ⟪x, y⟫_𝕜

full_name: HilbertBasis.toOrthonormalBasis
code: /-- A finite Hilbert basis is an orthonormal basis. -/
protected def toOrthonormalBasis [Fintype ι] (b : HilbertBasis ι 𝕜 E) : OrthonormalBasis ι 𝕜 E 
goal: OrthonormalBasis ι 𝕜 E

full_name: HilbertBasis.coe_toOrthonormalBasis
code: @[simp]
theorem coe_toOrthonormalBasis [Fintype ι] (b : HilbertBasis ι 𝕜 E) :
    (b.toOrthonormalBasis : ι → E) = b 
goal: ⇑b.toOrthonormalBasis = fun i => b.repr.symm (lp.single 2 i 1)

full_name: HilbertBasis.hasSum_orthogonalProjection
code: protected theorem hasSum_orthogonalProjection {U : Submodule 𝕜 E} [CompleteSpace U]
    (b : HilbertBasis ι 𝕜 U) (x : E) :
    HasSum (fun i => ⟪(b i : E), x⟫ • b i) (orthogonalProjection U x) 
goal: HasSum (fun i => ⟪↑((fun i => b.repr.symm (lp.single 2 i 1)) i), x⟫_𝕜 • (fun i => b.repr.symm (lp.single 2 i 1)) i)
  ((orthogonalProjection U) x)

full_name: HilbertBasis.finite_spans_dense
code: theorem finite_spans_dense (b : HilbertBasis ι 𝕜 E) :
    (⨆ J : Finset ι, span 𝕜 (J.image b : Set E)).topologicalClosure = ⊤ 
goal: (⨆ J, Submodule.span 𝕜 ↑(Finset.image (fun i => b.repr.symm (lp.single 2 i 1)) J)).topologicalClosure = ⊤

full_name: HilbertBasis.mk
code: /-- An orthonormal family of vectors whose span is dense in the whole module is a Hilbert basis. -/
protected def mk (hsp : ⊤ ≤ (span 𝕜 (Set.range v)).topologicalClosure) : HilbertBasis ι 𝕜 E 
goal: HilbertBasis ι 𝕜 E

full_name: Orthonormal.linearIsometryEquiv_symm_apply_single_one
code: theorem _root_.Orthonormal.linearIsometryEquiv_symm_apply_single_one (h i) :
    (hv.isHilbertSum h).linearIsometryEquiv.symm (lp.single 2 i 1) = v i 
goal: ⋯.linearIsometryEquiv.symm (lp.single 2 i 1) = v i

full_name: HilbertBasis.coe_mk
code: @[simp]
protected theorem coe_mk (hsp : ⊤ ≤ (span 𝕜 (Set.range v)).topologicalClosure) :
    ⇑(HilbertBasis.mk hv hsp) = v 
goal: (fun i => (HilbertBasis.mk hv hsp).repr.symm (lp.single 2 i 1)) = v

full_name: HilbertBasis.mkOfOrthogonalEqBot
code: /-- An orthonormal family of vectors whose span has trivial orthogonal complement is a Hilbert
basis. -/
protected def mkOfOrthogonalEqBot (hsp : (span 𝕜 (Set.range v))ᗮ = ⊥) : HilbertBasis ι 𝕜 E 
goal: HilbertBasis ι 𝕜 E

full_name: HilbertBasis.coe_mkOfOrthogonalEqBot
code: @[simp]
protected theorem coe_mkOfOrthogonalEqBot (hsp : (span 𝕜 (Set.range v))ᗮ = ⊥) :
    ⇑(HilbertBasis.mkOfOrthogonalEqBot hv hsp) = v 
goal: (fun i => (HilbertBasis.mkOfOrthogonalEqBot hv hsp).repr.symm (lp.single 2 i 1)) = v

full_name: OrthonormalBasis.toHilbertBasis
code: /-- An orthonormal basis is a Hilbert basis. -/
protected def _root_.OrthonormalBasis.toHilbertBasis [Fintype ι] (b : OrthonormalBasis ι 𝕜 E) :
    HilbertBasis ι 𝕜 E 
goal: HilbertBasis ι 𝕜 E

full_name: OrthonormalBasis.coe_toHilbertBasis
code: @[simp]
theorem _root_.OrthonormalBasis.coe_toHilbertBasis [Fintype ι] (b : OrthonormalBasis ι 𝕜 E) :
    (b.toHilbertBasis : ι → E) = b 
goal: (fun i => b.toHilbertBasis.repr.symm (lp.single 2 i 1)) = ⇑b

full_name: Orthonormal.exists_hilbertBasis_extension
code: /-- A Hilbert space admits a Hilbert basis extending a given orthonormal subset. -/
theorem _root_.Orthonormal.exists_hilbertBasis_extension {s : Set E}
    (hs : Orthonormal 𝕜 ((↑) : s → E)) :
    ∃ (w : Set E) (b : HilbertBasis w 𝕜 E), s ⊆ w ∧ ⇑b = ((↑) : w → E) 
goal: ∃ w b, s ⊆ w ∧ (fun i => b.repr.symm (lp.single 2 i 1)) = Subtype.val

full_name: exists_hilbertBasis
code: /-- A Hilbert space admits a Hilbert basis. -/
theorem _root_.exists_hilbertBasis : ∃ (w : Set E) (b : HilbertBasis w 𝕜 E), ⇑b = ((↑) : w → E) 
goal: ∃ w b, (fun i => b.repr.symm (lp.single 2 i 1)) = Subtype.val