Theorem: DirectSum.IsInternal.isometryL2OfOrthogonalFamily_symm_apply
File: Mathlib/Analysis/InnerProductSpace/PiL2.lean

tactic: classical
  let e₁ := DirectSum.linearEquivFunOnFintype 𝕜 ι fun i => V i
  let e₂ := LinearEquiv.ofBijective (DirectSum.coeLinearMap V) hV
  suffices ∀ v : ⨁ i, V i, e₂ v = ∑ i, e₁ v i by exact this (e₁.symm w)
  intro v
  simp [DirectSum.coeLinearMap, DirectSum.toModule, Dfinsupp.lsum, Dfinsupp.sumAddHom_apply]
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
⊢ ↑(LinearIsometryEquiv.symm (isometryL2OfOrthogonalFamily hV hV')) w = ∑ i : ι, ↑(w i)

tactic: let e₁ := DirectSum.linearEquivFunOnFintype 𝕜 ι fun i => V i
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
⊢ ↑(LinearIsometryEquiv.symm (isometryL2OfOrthogonalFamily hV hV')) w = ∑ i : ι, ↑(w i)

tactic: let e₂ := LinearEquiv.ofBijective (DirectSum.coeLinearMap V) hV
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
e₁ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] (i : ι) → { x // x ∈ V i } :=
  linearEquivFunOnFintype 𝕜 ι fun i => { x // x ∈ V i }
⊢ ↑(LinearIsometryEquiv.symm (isometryL2OfOrthogonalFamily hV hV')) w = ∑ i : ι, ↑(w i)

tactic: suffices ∀ v : ⨁ i, V i, e₂ v = ∑ i, e₁ v i by exact this (e₁.symm w)
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
e₁ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] (i : ι) → { x // x ∈ V i } :=
  linearEquivFunOnFintype 𝕜 ι fun i => { x // x ∈ V i }
e₂ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] E := LinearEquiv.ofBijective (coeLinearMap V) hV
⊢ ↑(LinearIsometryEquiv.symm (isometryL2OfOrthogonalFamily hV hV')) w = ∑ i : ι, ↑(w i)

tactic: intro v
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
e₁ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] (i : ι) → { x // x ∈ V i } :=
  linearEquivFunOnFintype 𝕜 ι fun i => { x // x ∈ V i }
e₂ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] E := LinearEquiv.ofBijective (coeLinearMap V) hV
⊢ ∀ (v : ⨁ (i : ι), { x // x ∈ V i }), ↑e₂ v = ∑ i : ι, ↑(↑e₁ v i)

tactic: simp [DirectSum.coeLinearMap, DirectSum.toModule, Dfinsupp.lsum, Dfinsupp.sumAddHom_apply]
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
e₁ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] (i : ι) → { x // x ∈ V i } :=
  linearEquivFunOnFintype 𝕜 ι fun i => { x // x ∈ V i }
e₂ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] E := LinearEquiv.ofBijective (coeLinearMap V) hV
v : ⨁ (i : ι), { x // x ∈ V i }
⊢ ↑e₂ v = ∑ i : ι, ↑(↑e₁ v i)

tactic: exact this (e₁.symm w)
state_before: ι : Type u_1
ι' : Type ?u.242521
𝕜 : Type u_2
inst✝¹⁰ : IsROrC 𝕜
E : Type u_3
inst✝⁹ : NormedAddCommGroup E
inst✝⁸ : InnerProductSpace 𝕜 E
E' : Type ?u.242550
inst✝⁷ : NormedAddCommGroup E'
inst✝⁶ : InnerProductSpace 𝕜 E'
F : Type ?u.242568
inst✝⁵ : NormedAddCommGroup F
inst✝⁴ : InnerProductSpace ℝ F
F' : Type ?u.242588
inst✝³ : NormedAddCommGroup F'
inst✝² : InnerProductSpace ℝ F'
inst✝¹ : Fintype ι
inst✝ : DecidableEq ι
V : ι → Submodule 𝕜 E
hV : IsInternal V
hV' : OrthogonalFamily 𝕜 (fun i => { x // x ∈ V i }) fun i => subtypeₗᵢ (V i)
w : PiLp 2 fun i => { x // x ∈ V i }
e₁ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] (i : ι) → { x // x ∈ V i } :=
  linearEquivFunOnFintype 𝕜 ι fun i => { x // x ∈ V i }
e₂ : (⨁ (i : ι), { x // x ∈ V i }) ≃ₗ[𝕜] E := LinearEquiv.ofBijective (coeLinearMap V) hV
this : ∀ (v : ⨁ (i : ι), { x // x ∈ V i }), ↑e₂ v = ∑ i : ι, ↑(↑e₁ v i)
⊢ ↑(LinearIsometryEquiv.symm (isometryL2OfOrthogonalFamily hV hV')) w = ∑ i : ι, ↑(w i)