Update bilinear.lean
This commit is contained in:
parent
9a9fbf1b54
commit
8b4317759c
|
@ -1,172 +1,73 @@
|
|||
--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
|
||||
|
||||
|
||||
open BigOperators
|
||||
open Finset
|
||||
open scoped TensorProduct
|
||||
|
||||
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E]
|
||||
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
|
||||
open BigOperators
|
||||
open Finset
|
||||
|
||||
|
||||
|
||||
lemma vectorPresentation
|
||||
lemma OrthonormalBasis.sum_repr'
|
||||
{𝕜 : Type*} [RCLike 𝕜]
|
||||
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace 𝕜 E]
|
||||
[Fintype ι]
|
||||
(b : Basis ι ℝ E)
|
||||
(hb : Orthonormal ℝ b)
|
||||
(b : OrthonormalBasis ι 𝕜 E)
|
||||
(v : E) :
|
||||
v = ∑ i, ⟪b i, v⟫_ℝ • (b i) := by
|
||||
v = ∑ i, ⟪b i, v⟫_𝕜 • (b i) := by
|
||||
nth_rw 1 [← (b.sum_repr v)]
|
||||
apply Fintype.sum_congr
|
||||
intro i
|
||||
rw [← Orthonormal.inner_right_finsupp hb (b.repr v) i]
|
||||
simp_rw [b.repr_apply_apply v]
|
||||
|
||||
|
||||
noncomputable def InnerProductSpace.canonicalTensor
|
||||
(E : Type u_2) [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E]
|
||||
: E ⊗[ℝ] E := by
|
||||
let v := stdOrthonormalBasis ℝ E
|
||||
exact ∑ i, (v i) ⊗ₜ[ℝ] (v i)
|
||||
|
||||
|
||||
theorem InnerProductSpace.InvariantTensor
|
||||
(E : Type*) [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E]
|
||||
(v₂ : OrthonormalBasis (Fin (FiniteDimensional.finrank ℝ E)) ℝ E)
|
||||
: InnerProductSpace.canonicalTensor E = ∑ i, (v₂ i) ⊗ₜ[ℝ] (v₂ i) := by
|
||||
|
||||
unfold InnerProductSpace.canonicalTensor
|
||||
|
||||
let v₁ := stdOrthonormalBasis ℝ E
|
||||
simp
|
||||
|
||||
|
||||
theorem BilinearCalc
|
||||
[Fintype ι]
|
||||
(v : Basis ι ℝ E)
|
||||
(c : ι → ℝ)
|
||||
(L : E →ₗ[ℝ] E →ₗ[ℝ] F)
|
||||
: L (∑ j : ι, c j • v j) (∑ j : ι, c j • v j)
|
||||
= ∑ x : Fin 2 → ι, (c (x 0) * c (x 1)) • L (v (x 0)) (v (x 1)) := by
|
||||
|
||||
rw [map_sum]
|
||||
rw [map_sum]
|
||||
|
||||
conv =>
|
||||
left
|
||||
arg 2
|
||||
intro r
|
||||
rw [← sum_apply]
|
||||
|
||||
rw [map_smul]
|
||||
arg 2
|
||||
arg 1
|
||||
arg 2
|
||||
intro x
|
||||
rw [map_smul]
|
||||
simp
|
||||
|
||||
|
||||
lemma c2
|
||||
[Fintype ι]
|
||||
(b : Basis ι ℝ E)
|
||||
(hb : Orthonormal ℝ b)
|
||||
(x y : E) :
|
||||
⟪x, y⟫_ℝ = ∑ i : ι, ⟪x, b i⟫_ℝ * ⟪y, b i⟫_ℝ := by
|
||||
rw [vectorPresentation b hb x]
|
||||
rw [vectorPresentation b hb y]
|
||||
rw [Orthonormal.inner_sum hb]
|
||||
simp
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro i'
|
||||
rw [Orthonormal.inner_left_fintype hb]
|
||||
rw [Orthonormal.inner_left_fintype hb]
|
||||
|
||||
|
||||
lemma fin_sum
|
||||
[Fintype ι]
|
||||
(f : ι → ι → F) :
|
||||
∑ r : Fin 2 → ι, f (r 0) (r 1) = ∑ r₀ : ι, (∑ r₁ : ι, f r₀ r₁) := by
|
||||
|
||||
rw [← Fintype.sum_prod_type']
|
||||
apply Fintype.sum_equiv (finTwoArrowEquiv ι)
|
||||
intro x
|
||||
dsimp
|
||||
|
||||
theorem TensorIndep
|
||||
[Fintype ι] [DecidableEq ι]
|
||||
(v₁ : Basis ι ℝ E)
|
||||
(hv₁ : Orthonormal ℝ v₁)
|
||||
(v₂ : Basis ι ℝ E)
|
||||
(hv₂ : Orthonormal ℝ v₂) :
|
||||
∑ i, (v₁ i) ⊗ₜ[ℝ] (v₁ i) = ∑ i, (v₂ i) ⊗ₜ[ℝ] (v₂ i) := by
|
||||
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro i
|
||||
rw [vectorPresentation v₁ hv₁ (v₂ i)]
|
||||
rw [TensorProduct.sum_tmul]
|
||||
arg 2
|
||||
intro j
|
||||
rw [TensorProduct.tmul_sum]
|
||||
arg 2
|
||||
intro a
|
||||
rw [TensorProduct.tmul_smul]
|
||||
arg 2
|
||||
rw [TensorProduct.smul_tmul]
|
||||
rw [v₁.sum_repr' (v₂ i)]
|
||||
simp_rw [TensorProduct.sum_tmul, TensorProduct.tmul_sum, TensorProduct.smul_tmul_smul]
|
||||
|
||||
conv =>
|
||||
right
|
||||
rw [Finset.sum_comm]
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro i
|
||||
rw [Finset.sum_comm]
|
||||
|
||||
|
||||
|
||||
sorry
|
||||
|
||||
theorem LaplaceIndep
|
||||
[Fintype ι] [DecidableEq ι]
|
||||
(v₁ : Basis ι ℝ E)
|
||||
(hv₁ : Orthonormal ℝ v₁)
|
||||
(v₂ : Basis ι ℝ E)
|
||||
(hv₂ : Orthonormal ℝ v₂)
|
||||
(L : E →ₗ[ℝ] E →ₗ[ℝ] F) :
|
||||
∑ i, L (v₁ i) (v₁ i) = ∑ i, L (v₂ i) (v₂ i) := by
|
||||
|
||||
have vector_vs_function
|
||||
{y : Fin 2 → ι}
|
||||
{v : ι → E}
|
||||
: (fun i => v (y i)) = ![v (y 0), v (y 1)] := by
|
||||
funext i
|
||||
by_cases h : i = 0
|
||||
· rw [h]
|
||||
simp
|
||||
· rw [Fin.eq_one_of_neq_zero i h]
|
||||
simp
|
||||
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro i
|
||||
rw [vectorPresentation v₁ hv₁ (v₂ i)]
|
||||
rw [BilinearCalc]
|
||||
rw [Finset.sum_comm]
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro y
|
||||
rw [Finset.sum_comm]
|
||||
arg 2
|
||||
intro x
|
||||
rw [← Finset.sum_smul]
|
||||
rw [← c2 v₂ hv₂ (v₁ (y 0)) (v₁ (y 1))]
|
||||
rw [vector_vs_function]
|
||||
simp
|
||||
arg 1
|
||||
arg 2
|
||||
intro i
|
||||
rw [← real_inner_comm (v₁ x)]
|
||||
simp_rw [OrthonormalBasis.sum_inner_mul_inner v₂]
|
||||
|
||||
rw [fin_sum (fun i₀ ↦ (fun i₁ ↦ ⟪v₁ i₀, v₁ i₁⟫_ℝ • L ![v₁ i₀, v₁ i₁]))]
|
||||
|
||||
have xx {r₀ : ι} : ∀ r₁ : ι, r₁ ≠ r₀ → ⟪v₁ r₀, v₁ r₁⟫_ℝ • L ![v₁ r₀, v₁ r₁] = 0 := by
|
||||
have xx {r₀ : Fin (FiniteDimensional.finrank ℝ E)} : ∀ r₁ : Fin (FiniteDimensional.finrank ℝ E), r₁ ≠ r₀ → ⟪v₁ r₀, v₁ r₁⟫_ℝ • v₁ r₀ ⊗ₜ[ℝ] v₁ r₁ = 0 := by
|
||||
intro r₁ hr₁
|
||||
rw [orthonormal_iff_ite.1 hv₁]
|
||||
rw [orthonormal_iff_ite.1 v₁.orthonormal]
|
||||
simp
|
||||
tauto
|
||||
|
||||
conv =>
|
||||
right
|
||||
arg 2
|
||||
intro r₀
|
||||
rw [Fintype.sum_eq_single r₀ xx]
|
||||
rw [orthonormal_iff_ite.1 hv₁]
|
||||
apply sum_congr
|
||||
rfl
|
||||
intro x _
|
||||
rw [vector_vs_function]
|
||||
simp_rw [Fintype.sum_eq_single _ xx]
|
||||
simp_rw [orthonormal_iff_ite.1 v₁.orthonormal]
|
||||
simp
|
||||
|
|
Loading…
Reference in New Issue