Theorem: HilbertBasis.hasSum_repr_symm
File: Mathlib/Analysis/InnerProductSpace/l2Space.lean

tactic: 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
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type ?u.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
⊢ HasSum (fun i => ↑f i • (fun i => ↑(LinearIsometryEquiv.symm b.repr) (lp.single 2 i 1)) i)
    (↑(LinearIsometryEquiv.symm b.repr) f)

tactic: ext i
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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)

tactic: apply b.repr.injective
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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)

tactic: letI : NormedSpace 𝕜 (lp (fun _i : ι => 𝕜) 2) := by infer_instance
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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))

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)
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
i : ι
this : NormedSpace 𝕜 { x // x ∈ 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))

tactic: rw [mul_one] at this
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
i : ι
this✝ : NormedSpace 𝕜 { x // x ∈ 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))

tactic: rw [LinearIsometryEquiv.map_smul, b.repr_self, ← this,
  LinearIsometryEquiv.coe_toContinuousLinearEquiv]
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
i : ι
this✝ : NormedSpace 𝕜 { x // x ∈ 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))

tactic: exact (b.repr.apply_symm_apply (lp.single 2 i (f i))).symm
state_before: 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.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
i : ι
this✝ : NormedSpace 𝕜 { x // x ∈ 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))

tactic: rw [H]
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type ?u.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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)

tactic: have : HasSum (fun i : ι => lp.single 2 i (f i)) f := lp.hasSum_single ENNReal.two_ne_top f
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type ?u.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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)

tactic: exact (↑b.repr.symm.toContinuousLinearEquiv : ℓ²(ι, 𝕜) →L[𝕜] E).hasSum this
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type ?u.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ 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)

tactic: infer_instance
state_before: ι : Type u_1
𝕜 : Type u_2
inst✝⁴ : IsROrC 𝕜
E : Type u_3
inst✝³ : NormedAddCommGroup E
inst✝² : InnerProductSpace 𝕜 E
cplt : CompleteSpace E
G : ι → Type ?u.748906
inst✝¹ : (i : ι) → NormedAddCommGroup (G i)
inst✝ : (i : ι) → InnerProductSpace 𝕜 (G i)
b : HilbertBasis ι 𝕜 E
f : { x // x ∈ lp (fun i => 𝕜) 2 }
i : ι
⊢ NormedSpace 𝕜 { x // x ∈ lp (fun _i => 𝕜) 2 }