2024-06-23 21:13:01 +02:00
|
|
|
|
import Mathlib.Analysis.InnerProductSpace.Basic
|
2024-06-27 14:02:00 +02:00
|
|
|
|
import Mathlib.Analysis.InnerProductSpace.Dual
|
2024-06-23 21:13:01 +02:00
|
|
|
|
import Mathlib.Analysis.InnerProductSpace.PiL2
|
2024-06-28 07:53:20 +02:00
|
|
|
|
--import Mathlib.Algebra.BigOperators.Basic
|
2024-06-23 21:13:01 +02:00
|
|
|
|
import Mathlib.Analysis.Calculus.ContDiff.Bounds
|
|
|
|
|
import Mathlib.Analysis.Calculus.FDeriv.Symmetric
|
2024-08-23 09:26:58 +02:00
|
|
|
|
--import Mathlib.LinearAlgebra.Basis
|
|
|
|
|
--import Mathlib.LinearAlgebra.Contraction
|
2024-06-23 21:13:01 +02:00
|
|
|
|
|
|
|
|
|
open BigOperators
|
|
|
|
|
open Finset
|
|
|
|
|
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-29 17:17:19 +02:00
|
|
|
|
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E]
|
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
noncomputable def realInnerAsElementOfDualTensorprod
|
|
|
|
|
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E]
|
|
|
|
|
: TensorProduct ℝ E E →ₗ[ℝ] ℝ := TensorProduct.lift bilinFormOfRealInner
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-29 17:17:19 +02:00
|
|
|
|
|
2024-07-25 15:52:16 +02:00
|
|
|
|
instance
|
2024-06-29 17:17:19 +02:00
|
|
|
|
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [CompleteSpace E] [FiniteDimensional ℝ E]
|
2024-07-25 15:52:16 +02:00
|
|
|
|
: NormedAddCommGroup (TensorProduct ℝ E E) where
|
|
|
|
|
norm := by
|
|
|
|
|
|
2024-06-29 17:17:19 +02:00
|
|
|
|
sorry
|
2024-07-25 15:52:16 +02:00
|
|
|
|
dist_self := by
|
|
|
|
|
|
2024-06-29 17:17:19 +02:00
|
|
|
|
sorry
|
|
|
|
|
|
|
|
|
|
sorry
|
|
|
|
|
|
|
|
|
|
/-
|
2024-07-25 15:52:16 +02:00
|
|
|
|
instance
|
2024-06-29 17:17:19 +02:00
|
|
|
|
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [CompleteSpace E] [FiniteDimensional ℝ E]
|
|
|
|
|
: InnerProductSpace ℝ (TensorProduct ℝ E E) where
|
|
|
|
|
smul := _
|
|
|
|
|
one_smul := _
|
|
|
|
|
mul_smul := _
|
|
|
|
|
smul_zero := _
|
|
|
|
|
smul_add := _
|
|
|
|
|
add_smul := _
|
|
|
|
|
zero_smul := _
|
|
|
|
|
norm_smul_le := _
|
|
|
|
|
inner := _
|
|
|
|
|
norm_sq_eq_inner := _
|
|
|
|
|
conj_symm := _
|
|
|
|
|
add_left := _
|
|
|
|
|
smul_left := _
|
|
|
|
|
-/
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
noncomputable def dual'
|
|
|
|
|
{E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [CompleteSpace E] [FiniteDimensional ℝ E]
|
|
|
|
|
: (TensorProduct ℝ E E →ₗ[ℝ] ℝ) ≃ₗ[ℝ] TensorProduct ℝ E E := by
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
let d := InnerProductSpace.toDual ℝ E
|
2024-06-29 17:17:19 +02:00
|
|
|
|
|
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
let e := d.toLinearEquiv
|
|
|
|
|
|
|
|
|
|
let a := TensorProduct.congr e e
|
|
|
|
|
|
|
|
|
|
let b := homTensorHomEquiv ℝ E E ℝ ℝ
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
sorry
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
variable {E : Type*} [NormedAddCommGroup E] [InnerProductSpace ℝ E] [FiniteDimensional ℝ E]
|
|
|
|
|
variable {F : Type*} [NormedAddCommGroup F] [NormedSpace ℝ F]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem InvariantTensor
|
2024-06-23 21:13:01 +02:00
|
|
|
|
[Fintype ι]
|
2024-06-27 14:02:00 +02:00
|
|
|
|
(v : Basis ι ℝ E)
|
|
|
|
|
(c : ι → ℝ)
|
|
|
|
|
(L : ContinuousMultilinearMap ℝ (fun (_ : Fin 2) ↦ E) F) :
|
|
|
|
|
L (fun _ => ∑ j : ι, c j • v j) = ∑ x : Fin 2 → ι, (c (x 0) * c (x 1)) • L ((fun i => v (x i))) := by
|
|
|
|
|
|
|
|
|
|
rw [L.map_sum]
|
|
|
|
|
simp_rw [L.map_smul_univ]
|
|
|
|
|
sorry
|
|
|
|
|
|
2024-06-23 21:13:01 +02:00
|
|
|
|
|
2024-06-24 07:58:04 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
theorem BilinearCalc
|
|
|
|
|
[Fintype ι]
|
|
|
|
|
(v : Basis ι ℝ E)
|
|
|
|
|
(c : ι → ℝ)
|
|
|
|
|
(L : ContinuousMultilinearMap ℝ (fun (_ : Fin 2) ↦ E) F) :
|
|
|
|
|
L (fun _ => ∑ j : ι, c j • v j) = ∑ x : Fin 2 → ι, (c (x 0) * c (x 1)) • L ((fun i => v (x i))) := by
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
rw [L.map_sum]
|
2024-06-27 14:02:00 +02:00
|
|
|
|
simp_rw [L.map_smul_univ]
|
|
|
|
|
sorry
|
2024-06-24 17:30:30 +02:00
|
|
|
|
|
2024-06-27 14:02:00 +02:00
|
|
|
|
/-
|
2024-06-24 17:30:30 +02:00
|
|
|
|
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]
|
2024-06-27 14:02:00 +02:00
|
|
|
|
-/
|
2024-06-24 17:30:30 +02:00
|
|
|
|
|
|
|
|
|
lemma fin_sum
|
2024-06-23 21:13:01 +02:00
|
|
|
|
[Fintype ι]
|
2024-06-24 17:30:30 +02:00
|
|
|
|
(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
|
2024-06-27 06:35:02 +02:00
|
|
|
|
dsimp
|
2024-06-24 17:30:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem LaplaceIndep
|
|
|
|
|
[Fintype ι] [DecidableEq ι]
|
2024-06-27 14:02:00 +02:00
|
|
|
|
(v₁ : OrthonormalBasis ι ℝ E)
|
|
|
|
|
(v₂ : OrthonormalBasis ι ℝ E)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
(L : ContinuousMultilinearMap ℝ (fun (_ : Fin 2) ↦ E) F) :
|
|
|
|
|
∑ i, L (fun _ ↦ v₁ i) = ∑ i, L (fun _ => v₂ i) := by
|
2024-06-23 21:13:01 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
have vector_vs_function
|
2024-06-27 06:35:02 +02:00
|
|
|
|
{y : Fin 2 → ι}
|
2024-06-24 17:30:30 +02:00
|
|
|
|
{v : ι → E}
|
2024-06-27 06:35:02 +02:00
|
|
|
|
: (fun i => v (y i)) = ![v (y 0), v (y 1)] := by
|
2024-06-24 17:30:30 +02:00
|
|
|
|
funext i
|
|
|
|
|
by_cases h : i = 0
|
|
|
|
|
· rw [h]
|
|
|
|
|
simp
|
|
|
|
|
· rw [Fin.eq_one_of_neq_zero i h]
|
|
|
|
|
simp
|
2024-06-23 21:13:01 +02:00
|
|
|
|
|
|
|
|
|
conv =>
|
|
|
|
|
right
|
|
|
|
|
arg 2
|
|
|
|
|
intro i
|
2024-06-27 14:02:00 +02:00
|
|
|
|
rw [v₁.sum_repr' (v₂ i)]
|
2024-06-24 17:30:30 +02:00
|
|
|
|
rw [BilinearCalc]
|
|
|
|
|
rw [Finset.sum_comm]
|
2024-06-23 21:13:01 +02:00
|
|
|
|
conv =>
|
|
|
|
|
right
|
|
|
|
|
arg 2
|
2024-06-24 17:30:30 +02:00
|
|
|
|
intro y
|
|
|
|
|
rw [← Finset.sum_smul]
|
|
|
|
|
rw [← c2 v₂ hv₂ (v₁ (y 0)) (v₁ (y 1))]
|
|
|
|
|
rw [vector_vs_function]
|
|
|
|
|
simp
|
2024-06-24 12:14:18 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
rw [fin_sum (fun i₀ ↦ (fun i₁ ↦ ⟪v₁ i₀, v₁ i₁⟫_ℝ • L ![v₁ i₀, v₁ i₁]))]
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
have xx {r₀ : ι} : ∀ r₁ : ι, r₁ ≠ r₀ → ⟪v₁ r₀, v₁ r₁⟫_ℝ • L ![v₁ r₀, v₁ r₁] = 0 := by
|
|
|
|
|
intro r₁ hr₁
|
|
|
|
|
rw [orthonormal_iff_ite.1 hv₁]
|
|
|
|
|
simp
|
|
|
|
|
tauto
|
2024-06-27 06:35:02 +02:00
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
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
|
2024-06-24 12:14:18 +02:00
|
|
|
|
|
|
|
|
|
|
2024-06-24 17:30:30 +02:00
|
|
|
|
noncomputable def Laplace_wrt_basis
|
2024-06-24 12:14:18 +02:00
|
|
|
|
[Fintype ι]
|
|
|
|
|
(v : Basis ι ℝ E)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
(_ : Orthonormal ℝ v)
|
2024-06-24 12:14:18 +02:00
|
|
|
|
(f : E → F) :
|
|
|
|
|
E → F :=
|
|
|
|
|
fun z ↦ ∑ i, iteratedFDeriv ℝ 2 f z ![v i, v i]
|
2024-06-24 17:30:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem LaplaceIndep'
|
|
|
|
|
[Fintype ι] [DecidableEq ι]
|
2024-06-27 14:02:00 +02:00
|
|
|
|
(v₁ : OrthonormalBasis ι ℝ E)
|
|
|
|
|
(v₂ : OrthonormalBasis ι ℝ E)
|
2024-06-27 06:35:02 +02:00
|
|
|
|
(f : E → F)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
: (Laplace_wrt_basis v₁ hv₁ f) = (Laplace_wrt_basis v₂ hv₂ f) := by
|
|
|
|
|
|
|
|
|
|
funext z
|
|
|
|
|
unfold Laplace_wrt_basis
|
|
|
|
|
let XX := LaplaceIndep v₁ hv₁ v₂ hv₂ (iteratedFDeriv ℝ 2 f z)
|
|
|
|
|
have vector_vs_function
|
|
|
|
|
{v : E}
|
2024-06-27 06:35:02 +02:00
|
|
|
|
: ![v, v] = (fun _ => v) := by
|
2024-06-24 17:30:30 +02:00
|
|
|
|
funext i
|
|
|
|
|
by_cases h : i = 0
|
|
|
|
|
· rw [h]
|
|
|
|
|
simp
|
|
|
|
|
· rw [Fin.eq_one_of_neq_zero i h]
|
|
|
|
|
simp
|
|
|
|
|
conv =>
|
|
|
|
|
left
|
|
|
|
|
arg 2
|
|
|
|
|
intro i
|
|
|
|
|
rw [vector_vs_function]
|
|
|
|
|
conv =>
|
|
|
|
|
right
|
|
|
|
|
arg 2
|
|
|
|
|
intro i
|
|
|
|
|
rw [vector_vs_function]
|
|
|
|
|
assumption
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem LaplaceIndep''
|
|
|
|
|
[Fintype ι₁] [DecidableEq ι₁]
|
|
|
|
|
(v₁ : Basis ι₁ ℝ E)
|
|
|
|
|
(hv₁ : Orthonormal ℝ v₁)
|
|
|
|
|
[Fintype ι₂] [DecidableEq ι₂]
|
|
|
|
|
(v₂ : Basis ι₂ ℝ E)
|
|
|
|
|
(hv₂ : Orthonormal ℝ v₂)
|
2024-06-27 06:35:02 +02:00
|
|
|
|
(f : E → F)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
: (Laplace_wrt_basis v₁ hv₁ f) = (Laplace_wrt_basis v₂ hv₂ f) := by
|
|
|
|
|
|
|
|
|
|
have b : ι₁ ≃ ι₂ := by
|
|
|
|
|
apply Fintype.equivOfCardEq
|
|
|
|
|
rw [← FiniteDimensional.finrank_eq_card_basis v₁]
|
|
|
|
|
rw [← FiniteDimensional.finrank_eq_card_basis v₂]
|
|
|
|
|
|
|
|
|
|
let v'₁ := Basis.reindex v₁ b
|
2024-06-27 06:35:02 +02:00
|
|
|
|
have hv'₁ : Orthonormal ℝ v'₁ := by
|
2024-06-24 17:30:30 +02:00
|
|
|
|
let A := Basis.reindex_apply v₁ b
|
2024-06-27 06:35:02 +02:00
|
|
|
|
have : ⇑v'₁ = v₁ ∘ b.symm := by
|
2024-06-24 17:30:30 +02:00
|
|
|
|
funext i
|
|
|
|
|
exact A i
|
|
|
|
|
rw [this]
|
|
|
|
|
let B := Orthonormal.comp hv₁ b.symm
|
|
|
|
|
apply B
|
|
|
|
|
exact Equiv.injective b.symm
|
|
|
|
|
rw [← LaplaceIndep' v'₁ hv'₁ v₂ hv₂ f]
|
|
|
|
|
|
|
|
|
|
unfold Laplace_wrt_basis
|
|
|
|
|
simp
|
|
|
|
|
funext z
|
|
|
|
|
|
|
|
|
|
rw [← Equiv.sum_comp b.symm]
|
|
|
|
|
apply Fintype.sum_congr
|
|
|
|
|
intro i₂
|
|
|
|
|
congr
|
|
|
|
|
rw [Basis.reindex_apply v₁ b i₂]
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
noncomputable def Laplace
|
2024-06-27 06:35:02 +02:00
|
|
|
|
(f : E → F)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
: E → F := by
|
|
|
|
|
exact Laplace_wrt_basis (stdOrthonormalBasis ℝ E).toBasis (stdOrthonormalBasis ℝ E).orthonormal f
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem LaplaceIndep'''
|
|
|
|
|
[Fintype ι] [DecidableEq ι]
|
|
|
|
|
(v : Basis ι ℝ E)
|
|
|
|
|
(hv : Orthonormal ℝ v)
|
2024-06-27 06:35:02 +02:00
|
|
|
|
(f : E → F)
|
2024-06-24 17:30:30 +02:00
|
|
|
|
: (Laplace f) = (Laplace_wrt_basis v hv f) := by
|
|
|
|
|
|
|
|
|
|
unfold Laplace
|
2024-06-27 06:35:02 +02:00
|
|
|
|
apply LaplaceIndep'' (stdOrthonormalBasis ℝ E).toBasis (stdOrthonormalBasis ℝ E).orthonormal v hv f
|
2024-06-24 17:30:30 +02:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
theorem Complex.Laplace'
|
|
|
|
|
(f : ℂ → F)
|
|
|
|
|
: (Laplace f) = fun z ↦ (iteratedFDeriv ℝ 2 f z) ![1, 1] + (iteratedFDeriv ℝ 2 f z) ![Complex.I, Complex.I] := by
|
|
|
|
|
|
|
|
|
|
rw [LaplaceIndep''' Complex.orthonormalBasisOneI.toBasis Complex.orthonormalBasisOneI.orthonormal f]
|
|
|
|
|
unfold Laplace_wrt_basis
|
|
|
|
|
simp
|