Update bilinear.lean

This commit is contained in:
Stefan Kebekus 2024-06-29 09:17:43 +02:00
parent 8b4317759c
commit 602296031d
1 changed files with 9 additions and 24 deletions

View File

@ -1,16 +1,6 @@
--import Mathlib.Algebra.BigOperators.Basic
import Mathlib.LinearAlgebra.TensorProduct.Basic
import Mathlib.Analysis.InnerProductSpace.Basic
import Mathlib.Analysis.InnerProductSpace.Dual
import Mathlib.Analysis.InnerProductSpace.PiL2 import Mathlib.Analysis.InnerProductSpace.PiL2
open BigOperators open TensorProduct
open Finset
open scoped TensorProduct
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace E] [FiniteDimensional E]
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace F]
lemma OrthonormalBasis.sum_repr' lemma OrthonormalBasis.sum_repr'
@ -33,19 +23,17 @@ noncomputable def InnerProductSpace.canonicalTensor
theorem InnerProductSpace.InvariantTensor theorem InnerProductSpace.InvariantTensor
(E : Type*) [NormedAddCommGroup E] [InnerProductSpace E] [FiniteDimensional E] (E : Type*) [NormedAddCommGroup E] [InnerProductSpace E] [FiniteDimensional E]
(v : OrthonormalBasis (Fin (FiniteDimensional.finrank E)) E) (v : OrthonormalBasis (Fin (FiniteDimensional.finrank E)) E)
: InnerProductSpace.canonicalTensor E = ∑ i, (v i) ⊗ₜ[] (v i) := by : InnerProductSpace.canonicalTensor E = ∑ i, (v i) ⊗ₜ[] (v i) := by
unfold InnerProductSpace.canonicalTensor unfold InnerProductSpace.canonicalTensor
let v₁ := stdOrthonormalBasis E let v₁ := stdOrthonormalBasis E
simp
conv => conv =>
right right
arg 2 arg 2
intro i intro i
rw [v₁.sum_repr' (v i)] rw [v₁.sum_repr' (v i)]
simp_rw [TensorProduct.sum_tmul, TensorProduct.tmul_sum, TensorProduct.smul_tmul_smul] simp_rw [TensorProduct.sum_tmul, TensorProduct.tmul_sum, TensorProduct.smul_tmul_smul]
conv => conv =>
@ -61,13 +49,10 @@ theorem InnerProductSpace.InvariantTensor
arg 2 arg 2
intro i intro i
rw [← real_inner_comm (v₁ x)] rw [← real_inner_comm (v₁ x)]
simp_rw [OrthonormalBasis.sum_inner_mul_inner v] simp_rw [OrthonormalBasis.sum_inner_mul_inner v]
have xx {r₀ : Fin (FiniteDimensional.finrank E)} : ∀ r₁ : Fin (FiniteDimensional.finrank E), r₁ ≠ r₀ → ⟪v₁ r₀, v₁ r₁⟫_ • v₁ r₀ ⊗ₜ[] v₁ r₁ = 0 := by have {x : Fin (FiniteDimensional.finrank E)} : ∑ x_1 : Fin (FiniteDimensional.finrank E), ⟪v₁ x, v₁ x_1⟫_ • v₁ x ⊗ₜ[] v₁ x_1 = v₁ x ⊗ₜ[] v₁ x := by
rw [Fintype.sum_eq_single x, orthonormal_iff_ite.1 v₁.orthonormal]; simp
intro r₁ hr₁ intro r₁ hr₁
rw [orthonormal_iff_ite.1 v₁.orthonormal] rw [orthonormal_iff_ite.1 v₁.orthonormal]; simp; tauto
simp simp_rw [this]
tauto
simp_rw [Fintype.sum_eq_single _ xx]
simp_rw [orthonormal_iff_ite.1 v₁.orthonormal]
simp