Imports
/-
Copyright (c) 2025 Joseph Tooby-Smith. All rights reserved.
Released under Apache 2.0 license as described in the file LICENSE.
Authors: Joseph Tooby-Smith
-/
module
public import Physlib.QuantumMechanics.HarmonicOscillator.OneDimension.Eigenfunction
public import Physlib.QuantumMechanics.HilbertSpaces.OneDimension.GaussiansCompleteness of the eigenfunctions of the Harmonic Oscillator
Completeness of the eigenfunctions follows from Plancherel's theorem.
The steps of this proof are:
Prove that if f is orthogonal to all eigenvectors then the Fourier transform of
it multiplied by exp(-c x^2) for a 0<c is zero.
Part of this is using the concept of dominated_convergence.
Use 'Plancherel's theorem' to show that f is zero.
@[expose] public section/-
Integrability conditions related to eigenfunctions.
-/
lemma mul_eigenfunction_integrable (f : ℝ → ℂ) (hf : MemHS f) :
MeasureTheory.Integrable (fun x => Q.eigenfunction n x * f x) := Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS f⊢ Integrable (fun x => Q.eigenfunction n x * f x) volume
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ Integrable (fun x => Q.eigenfunction n x * f x) volume
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) =ᵐ[volume] fun x => Q.eigenfunction n x * f x
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => ↑↑(HilbertSpace.mk hf) x * (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x)) =ᵐ[volume] fun x =>
Q.eigenfunction n x * f x
conv_lhs => Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volumex:ℝ| ↑↑(HilbertSpace.mk hf) x * (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x); Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volumex:ℝ| (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x) * ↑↑(HilbertSpace.mk hf) x
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x)) =ᵐ[volume] Q.eigenfunction nQ:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ ↑↑(HilbertSpace.mk hf) =ᵐ[volume] f
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ ↑↑(HilbertSpace.mk hf) =ᵐ[volume] fQ:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x)) =ᵐ[volume] Q.eigenfunction n
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ ↑↑(HilbertSpace.mk hf) =ᵐ[volume] f All goals completed! 🐙
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x)) =ᵐ[volume] fun x => (starRingEnd ℂ) (Q.eigenfunction n x)Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (Q.eigenfunction n x)) =ᵐ[volume] Q.eigenfunction n
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (↑↑(HilbertSpace.mk ⋯) x)) =ᵐ[volume] fun x => (starRingEnd ℂ) (Q.eigenfunction n x) Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ ↑↑(HilbertSpace.mk ⋯) =ᵐ[volume] Q.eigenfunction n
All goals completed! 🐙
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (Q.eigenfunction n x)) =ᵐ[volume] Q.eigenfunction n Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volume⊢ (fun x => (starRingEnd ℂ) (Q.eigenfunction n x)) = Q.eigenfunction n
Q:HarmonicOscillatorn:ℕf:ℝ → ℂhf:MemHS fh1:Integrable (fun x => ⟪↑↑(HilbertSpace.mk ⋯) x, ↑↑(HilbertSpace.mk hf) x⟫_ℂ) volumex:ℝ⊢ (starRingEnd ℂ) (Q.eigenfunction n x) = Q.eigenfunction n x
All goals completed! 🐙Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
(fun x => ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ Integrable
(fun x => ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volumehc Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ IsUnit (1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)))
· Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
(fun x => ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ Integrable
(fun x => ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume exact h1 All goals completed! 🐙
simp only [ofNat_nonneg, pow_nonneg, Real.sqrt_mul, Complex.ofReal_mul, one_div, mul_inv_rev,
isUnit_iff_ne_zero, ne_eq, _root_.mul_eq_zero, inv_eq_zero, Complex.ofReal_eq_zero, cast_nonneg,
Real.sqrt_eq_zero, cast_eq_zero, pow_eq_zero_iff', OfNat.ofNat_ne_zero, false_and, or_false,
Real.sqrt_nonneg, not_or] hc Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬n ! = 0 ∧ ¬√Q.ξ = 0 ∧ ¬√Real.pi = 0
apply And.intro hc.left Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬n ! = 0hc.right Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Q.ξ = 0 ∧ ¬√Real.pi = 0
· hc.left Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬n ! = 0 exact factorial_ne_zero n All goals completed! 🐙
· hc.right Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Q.ξ = 0 ∧ ¬√Real.pi = 0 apply And.intro hc.right.left Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Q.ξ = 0hc.right.right Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Real.pi = 0
· hc.right.left Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Q.ξ = 0 exact Real.sqrt_ne_zero'.mpr Q.ξ_pos All goals completed! 🐙
· hc.right.right Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fn:ℕh2:((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:Integrable
((1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ))) • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ ¬√Real.pi = 0 exact Real.sqrt_ne_zero'.mpr Real.pi_pos All goals completed! 🐙
lemma mul_polynomial_integrable (f : ℝ → ℂ) (hf : MemHS f) (P : Polynomial ℤ) :
MeasureTheory.Integrable (fun x => (P (x /Q.ξ)) *
(f x * Real.exp (- x^2 / (2 * Q.ξ^2)))) volume := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤ⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
have h1 := polynomial_mem_physHermite_span P Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤh1:(fun x => (Polynomial.aeval x) P) ∈ Submodule.span ℝ (Set.range fun n x => (Polynomial.aeval x) (physHermite n))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
rw [Finsupp.mem_span_range_iff_exists_finsupp Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤh1:∃ c, (c.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) P⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤh1:∃ c, (c.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) P⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume] at h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤh1:∃ c, (c.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) P⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
obtain ⟨a, ha⟩ := h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) P⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
have h2 : (fun x => ↑(P (x/Q.ξ)) * (f x * ↑(Real.exp (- x ^ 2 / (2 * Q.ξ^2)))))
= (fun x => ∑ r ∈ a.support, a r * (physHermite r (x/Q.ξ)) *
(f x * Real.exp (- x ^ 2 / (2 * Q.ξ^2)))) := by
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
rw [← ha Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
rw [← Finset.sum_mul Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
(∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ))) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
(∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ))) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
(∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ))) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
congr e_a Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) =
∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
rw [Finsupp.sum e_a Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑((∑ a_1 ∈ a.support, a a_1 • fun x => (Polynomial.aeval x) (physHermite a_1)) (x / Q.ξ)) =
∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) e_a Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑((∑ a_1 ∈ a.support, a a_1 • fun x => (Polynomial.aeval x) (physHermite a_1)) (x / Q.ξ)) =
∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume]e_a Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑((∑ a_1 ∈ a.support, a a_1 • fun x => (Polynomial.aeval x) (physHermite a_1)) (x / Q.ξ)) =
∑ i ∈ a.support, ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
simp Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
rw [h2 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
apply MeasureTheory.integrable_finsetSum Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun a_2 =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_2 / Q.ξ)) *
(f a_2 * ↑(Real.exp (-a_2 ^ 2 / (2 * Q.ξ ^ 2)))))
volume
intro i hi Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.support⊢ Integrable
(fun a_1 =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))))
volume
simp only [mul_assoc] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.support⊢ Integrable
(fun a_1 =>
↑(a i) * (↑((Polynomial.aeval (a_1 / Q.ξ)) (physHermite i)) * (f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2))))))
volume
have hf' : (fun x => ↑(a i) * (physHermite i (x/Q.ξ) *
(f x * Real.exp (- (x ^ 2) / (2 * Q.ξ^2)))))
= fun x => (a i) • (physHermite i (x/Q.ξ) * (f x * Real.exp (- x ^ 2 / (2 * Q.ξ^2)))) := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤ⊢ Integrable (fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun a_1 =>
↑(a i) * (↑((Polynomial.aeval (a_1 / Q.ξ)) (physHermite i)) * (f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2))))))
volume
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supportx:ℝ⊢ ↑(a i) * (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun a_1 =>
↑(a i) * (↑((Polynomial.aeval (a_1 / Q.ξ)) (physHermite i)) * (f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2))))))
volume
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_pow,
Complex.ofReal_mul, Complex.ofReal_ofNat, Complex.real_smul] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun a_1 =>
↑(a i) * (↑((Polynomial.aeval (a_1 / Q.ξ)) (physHermite i)) * (f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2))))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun a_1 =>
↑(a i) * (↑((Polynomial.aeval (a_1 / Q.ξ)) (physHermite i)) * (f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2))))))
volume
rw [hf' Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))))
volume] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))))
volume
apply MeasureTheory.Integrable.fun_smul Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fP:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) *
(↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))) =
fun x =>
a i • (↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))⊢ Integrable
(fun i_1 =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (i_1 / Q.ξ)) * (f i_1 * ↑(Real.exp (-i_1 ^ 2 / (2 * Q.ξ ^ 2)))))
volume
exact Q.mul_physHermite_integrable f hf i All goals completed! 🐙
lemma mul_power_integrable (f : ℝ → ℂ) (hf : MemHS f) (r : ℕ) :
MeasureTheory.Integrable (fun x => x ^ r * (f x * Real.exp (- x^2 / (2 * Q.ξ^2)))) volume := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕ⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
by_cases hr : r ≠ 0 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeneg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:¬r ≠ 0⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
· pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume have h1 := Q.mul_polynomial_integrable f hf (Polynomial.X ^ r) pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable
(fun x =>
↑((fun x => (Polynomial.aeval x) (Polynomial.X ^ r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
simp only [map_pow, Polynomial.aeval_X, Complex.ofReal_pow, Complex.ofReal_mul,
Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_ofNat] at h1 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volume⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
have h2 : (fun x => (x /Q.ξ) ^ r * (f x * Complex.exp (- x ^ 2/ (2 * Q.ξ^2))))
= (1/Q.ξ : ℂ) ^ r • (fun x => (x ^r * (f x * Real.exp (- ↑x ^ 2 / (2 * Q.ξ^2))))) := by
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumex:ℝ⊢ (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) x pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_mul,
Complex.ofReal_pow, Complex.ofReal_ofNat, Pi.smul_apply, smul_eq_mul] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumex:ℝ⊢ (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
ringpos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumepos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
rw [h2 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume] at h1pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
suffices h2 : IsUnit (↑((1/Q.ξ)^ r : ℂ)) by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2✝:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))h2:IsUnit ((1 / ↑Q.ξ) ^ r)⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ IsUnit ((1 / ↑Q.ξ) ^ r)
rw [IsUnit.integrable_smul_iff h2 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2✝:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))h2:IsUnit ((1 / ↑Q.ξ) ^ r)⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2✝:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))h2:IsUnit ((1 / ↑Q.ξ) ^ r)⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumepos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ IsUnit ((1 / ↑Q.ξ) ^ r)] at h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2✝:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))h2:IsUnit ((1 / ↑Q.ξ) ^ r)⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumepos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ IsUnit ((1 / ↑Q.ξ) ^ r)
simpa using h1pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ IsUnit ((1 / ↑Q.ξ) ^ r)pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ IsUnit ((1 / ↑Q.ξ) ^ r)
simp only [isUnit_iff_ne_zero, ne_eq, pow_eq_zero_iff', not_and, Decidable.not_not] pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r ≠ 0h1:Integrable ((1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volumeh2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) =
(1 / ↑Q.ξ) ^ r • fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ 1 / ↑Q.ξ = 0 → r = 0
simp All goals completed! 🐙
· neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:¬r ≠ 0⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume simp only [ne_eq, Decidable.not_not] at hr neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fr:ℕhr:r = 0⊢ Integrable (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
subst hr neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS f⊢ Integrable (fun x => ↑x ^ 0 * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) volume
simpa using Q.mul_physHermite_integrable f hf 0 All goals completed! 🐙Orthogonality conditions
lemma orthogonal_eigenfunction_of_mem_orthogonal (f : ℝ → ℂ) (hf : MemHS f)
(hOrth : ∀ n : ℕ, ⟪HilbertSpace.mk (Q.eigenfunction_memHS n), HilbertSpace.mk hf⟫_ℂ = 0)
(n : ℕ) : ∫ (x : ℝ), Q.eigenfunction n x * f x = 0 := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = 0
rw [← hOrth n Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ
rw [inner_mk_mk Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ∫ (x : ℝ), (starRingEnd ℂ) (Q.eigenfunction n x) * f x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ∫ (x : ℝ), (starRingEnd ℂ) (Q.eigenfunction n x) * f x] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), Q.eigenfunction n x * f x = ∫ (x : ℝ), (starRingEnd ℂ) (Q.eigenfunction n x) * f x
simp All goals completed! 🐙local notation "m" => Q.mlocal notation "ℏ" => Q.ℏlocal notation "ω" => Q.ωlocal notation "hm" => Q.hmlocal notation "hℏ" => Q.hℏlocal notation "hω" => Q.hω
lemma orthogonal_physHermite_of_mem_orthogonal (f : ℝ → ℂ) (hf : MemHS f)
(hOrth : ∀ n : ℕ, ⟪HilbertSpace.mk (Q.eigenfunction_memHS n), HilbertSpace.mk hf⟫_ℂ = 0)
(n : ℕ) : ∫ (x : ℝ), (physHermite n (x / Q.ξ)) * (f x * ↑(Real.exp (- x ^ 2 / (2 * Q.ξ ^ 2))))
= 0 := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕ⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
have h1 := Q.orthogonal_eigenfunction_of_mem_orthogonal f hf hOrth n Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
have h2 : (fun (x : ℝ) => (1 / ↑√(2 ^ n * ↑n !) * (1/ √(√Real.pi * Q.ξ)) : ℂ) *
(physHermite n (x/Q.ξ) * f x * Real.exp (- x ^ 2 / (2 * Q.ξ^2))))
= fun x => Q.eigenfunction n x * f x := by
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0x:ℝ⊢ 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
Q.eigenfunction n x * f x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
simp only [ofNat_nonneg, pow_nonneg, Real.sqrt_mul, Complex.ofReal_mul, one_div, mul_inv_rev,
Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_pow,
Complex.ofReal_ofNat, eigenfunction_eq] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0x:ℝ⊢ (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ * (↑√(√Real.pi * Q.ξ))⁻¹ *
(↑((Polynomial.aeval (x / Q.ξ)) (physHermite n)) * f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
(↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ * (↑√(√Real.pi * Q.ξ))⁻¹ *
(↑((Polynomial.aeval (x / Q.ξ)) (physHermite n)) * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) *
f x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
ring Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ), Q.eigenfunction n x * f x = 0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
rw [← h2, Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:∫ (x : ℝ),
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
∫ (a : ℝ),
↑((fun x => (Polynomial.aeval x) (physHermite n)) (a / Q.ξ)) * f a * ↑(Real.exp (-a ^ 2 / (2 * Q.ξ ^ 2))) =
0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 MeasureTheory.integral_const_mul Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
∫ (a : ℝ),
↑((fun x => (Polynomial.aeval x) (physHermite n)) (a / Q.ξ)) * f a * ↑(Real.exp (-a ^ 2 / (2 * Q.ξ ^ 2))) =
0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
∫ (a : ℝ),
↑((fun x => (Polynomial.aeval x) (physHermite n)) (a / Q.ξ)) * f a * ↑(Real.exp (-a ^ 2 / (2 * Q.ξ ^ 2))) =
0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0] at h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh1:1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
∫ (a : ℝ),
↑((fun x => (Polynomial.aeval x) (physHermite n)) (a / Q.ξ)) * f a * ↑(Real.exp (-a ^ 2 / (2 * Q.ξ ^ 2))) =
0h2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f x⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
simp only [ofNat_nonneg, pow_nonneg, Real.sqrt_mul, Complex.ofReal_mul, one_div, mul_inv_rev,
Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_pow,
Complex.ofReal_ofNat, _root_.mul_eq_zero, inv_eq_zero, Complex.ofReal_eq_zero, cast_nonneg,
Real.sqrt_eq_zero, cast_eq_zero, pow_eq_zero_iff', OfNat.ofNat_ne_zero, ne_eq, false_and,
or_false, Real.sqrt_nonneg] at h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:(n ! = 0 ∨ √Q.ξ = 0 ∨ √Real.pi = 0) ∨
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
have h0 : n ! ≠ 0 := factorial_ne_zero n Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:(n ! = 0 ∨ √Q.ξ = 0 ∨ √Real.pi = 0) ∨
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0h0:n ! ≠ 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
have h0' : ¬ (√Q.ξ = 0 ∨ √Real.pi = 0) := by
simpa using And.intro (Real.sqrt_ne_zero'.mpr Q.ξ_pos) (Real.sqrt_ne_zero'.mpr Real.pi_pos) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:(n ! = 0 ∨ √Q.ξ = 0 ∨ √Real.pi = 0) ∨
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0h0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh1:(n ! = 0 ∨ √Q.ξ = 0 ∨ √Real.pi = 0) ∨
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0h0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
simp only [h0, h0', or_self, false_or] at h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0
rw [← h1 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))
congr e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0⊢ (fun x => ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun a => ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))
funext x e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0x:ℝ⊢ ↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
↑((Polynomial.aeval (x / Q.ξ)) (physHermite n)) * f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg,
Complex.ofReal_mul, Complex.ofReal_pow, Complex.ofReal_ofNat] e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0n:ℕh2:(fun x =>
1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) *
(↑((fun x => (Polynomial.aeval x) (physHermite n)) (x / Q.ξ)) * f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
fun x => Q.eigenfunction n x * f xh0:n ! ≠ 0h0':¬(√Q.ξ = 0 ∨ √Real.pi = 0)h1:∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite n)) * f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0x:ℝ⊢ ↑((Polynomial.aeval (x / Q.ξ)) (physHermite n)) * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
↑((Polynomial.aeval (x / Q.ξ)) (physHermite n)) * f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))
ring All goals completed! 🐙
lemma orthogonal_polynomial_of_mem_orthogonal (f : ℝ → ℂ) (hf : MemHS f)
(hOrth : ∀ n : ℕ, ⟪HilbertSpace.mk (Q.eigenfunction_memHS n), HilbertSpace.mk hf⟫_ℂ = 0)
(P : Polynomial ℤ) :
∫ x : ℝ, (P (x /Q.ξ)) * (f x * Real.exp (- x^2 / (2 * Q.ξ^2))) = 0 := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤ⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
obtain ⟨a, ha⟩ := Finsupp.mem_span_range_iff_exists_finsupp.mp <|
polynomial_mem_physHermite_span P Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) P⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
have h2 : (fun x => ↑(P (x /Q.ξ)) * (f x * ↑(Real.exp (- x ^ 2 / (2 * Q.ξ^2)))))
= (fun x => ∑ r ∈ a.support, a r * (physHermite r (x/Q.ξ)) *
(f x * Real.exp (- x ^ 2 / (2 * Q.ξ^2)))) := by
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
rw [← ha Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Px:ℝ⊢ ↑(a.sum (fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
simp [← Finset.sum_mul, Finsupp.sum] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
rw [h2, Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∫ (x : ℝ),
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0 Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∑ i ∈ a.support,
∫ (a_1 : ℝ),
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume MeasureTheory.integral_finsetSum Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∑ i ∈ a.support,
∫ (a_1 : ℝ),
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∑ i ∈ a.support,
∫ (a_1 : ℝ),
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∑ i ∈ a.support,
∫ (a_1 : ℝ),
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
· Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∑ i ∈ a.support,
∫ (a_1 : ℝ),
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0 apply Finset.sum_eq_zero Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ x ∈ a.support,
∫ (a_2 : ℝ),
↑(a x) * ↑((fun x_1 => (Polynomial.aeval x_1) (physHermite x)) (a_2 / Q.ξ)) *
(f a_2 * ↑(Real.exp (-a_2 ^ 2 / (2 * Q.ξ ^ 2)))) =
0
intro x hx Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))x:ℕhx:x ∈ a.support⊢ ∫ (a_1 : ℝ),
↑(a x) * ↑((fun x_1 => (Polynomial.aeval x_1) (physHermite x)) (a_1 / Q.ξ)) *
(f a_1 * ↑(Real.exp (-a_1 ^ 2 / (2 * Q.ξ ^ 2)))) =
0
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_pow,
Complex.ofReal_mul, Complex.ofReal_ofNat, mul_assoc, integral_const_mul, _root_.mul_eq_zero,
Complex.ofReal_eq_zero] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))x:ℕhx:x ∈ a.support⊢ a x = 0 ∨
∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite x)) * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0
right Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))x:ℕhx:x ∈ a.support⊢ ∫ (a : ℝ), ↑((Polynomial.aeval (a / Q.ξ)) (physHermite x)) * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg, Complex.ofReal_pow,
Complex.ofReal_mul, Complex.ofReal_ofNat,
← Q.orthogonal_physHermite_of_mem_orthogonal f hf hOrth x] All goals completed! 🐙
· hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ ∀ i ∈ a.support,
Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume /- Integrablility -/
intro i hi hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.support⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
have hf' : (fun x => ↑(a i) * ↑(physHermite i (x /Q.ξ)) *
(f x * ↑(Real.exp (- x ^ 2 / (2 * Q.ξ^2)))))
= a i • (fun x => (physHermite i (x/Q.ξ)) *
(f x * ↑(Real.exp (- x ^ 2 / (2 * Q.ξ^2))))) := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤ⊢ ∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supportx:ℝ⊢ ↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
(a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
xhf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
simp only [Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg,
Complex.ofReal_mul, Complex.ofReal_pow, Complex.ofReal_ofNat, Pi.smul_apply,
Complex.real_smul] Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supportx:ℝ⊢ ↑(a i) * ↑((Polynomial.aeval (x / Q.ξ)) (physHermite i)) * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
↑(a i) * (↑((Polynomial.aeval (x / Q.ξ)) (physHermite i)) * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))hf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
ringhf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volumehf Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0P:Polynomial ℤa:ℕ →₀ ℝha:(a.sum fun i a => a • fun x => (Polynomial.aeval x) (physHermite i)) = fun x => (Polynomial.aeval x) Ph2:(fun x => ↑((fun x => (Polynomial.aeval x) P) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun x =>
∑ r ∈ a.support,
↑(a r) * ↑((fun x => (Polynomial.aeval x) (physHermite r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))i:ℕhi:i ∈ a.supporthf':(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) =
a i • fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))⊢ Integrable
(fun x =>
↑(a i) * ↑((fun x => (Polynomial.aeval x) (physHermite i)) (x / Q.ξ)) *
(f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))))
volume
exact hf' ▸ (MeasureTheory.Integrable.smul _ (Q.mul_physHermite_integrable f hf i)) All goals completed! 🐙
If f is a function ℝ → ℂ satisfying MemHS f such that it is orthogonal
to all eigenfunction n then it is orthogonal to
x ^ r * e ^ (- x ^ 2 / (2 ξ^2))
the proof of this result relies on the fact that Hermite polynomials span polynomials.
lemma orthogonal_power_of_mem_orthogonal (f : ℝ → ℂ) (hf : MemHS f)
(hOrth : ∀ n : ℕ, ⟪HilbertSpace.mk (Q.eigenfunction_memHS n), HilbertSpace.mk hf⟫_ℂ = 0)
(r : ℕ) : ∫ x : ℝ, (x ^ r * (f x * Real.exp (- x^2 / (2 * Q.ξ^2)))) = 0 := by Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕ⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
by_cases hr : r ≠ 0 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:¬r ≠ 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
· pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 have h1 := Q.orthogonal_polynomial_of_mem_orthogonal f hf hOrth (Polynomial.X ^ r) pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ),
↑((fun x => (Polynomial.aeval x) (Polynomial.X ^ r)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
simp only [map_pow, Polynomial.aeval_X, Complex.ofReal_pow, Complex.ofReal_div,
Complex.ofReal_exp, Complex.ofReal_neg, Complex.ofReal_mul, Complex.ofReal_ofNat] at h1 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
have h2 : (fun x => (x /Q.ξ) ^ r *
(f x * Complex.exp (- x ^ 2 / (2 * Q.ξ^2))))
= (fun x => (1/Q.ξ : ℂ) ^ r * (↑x ^r *
(f x * Complex.exp (- x ^ 2 / (2 * Q.ξ^2))))) := by
funext x Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0x:ℝ⊢ (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) =
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
ring pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
rw [h2, pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:∫ (x : ℝ), (1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:(1 / ↑Q.ξ) ^ r * ∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 MeasureTheory.integral_const_mul pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:(1 / ↑Q.ξ) ^ r * ∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:(1 / ↑Q.ξ) ^ r * ∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0] at h1pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h1:(1 / ↑Q.ξ) ^ r * ∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
simp only [one_div, inv_pow, _root_.mul_eq_zero, inv_eq_zero, pow_eq_zero_iff',
Complex.ofReal_eq_zero, ξ_ne_zero, ne_eq, false_and, false_or] at h1 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
rw [← h1 pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)))]pos Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) =
∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)))
congr pos.e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0⊢ (fun x => ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) = fun a =>
↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2)))
funext x pos.e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r ≠ 0h2:(fun x => (↑x / ↑Q.ξ) ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))) = fun x =>
(1 / ↑Q.ξ) ^ r * (↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))))h1:∫ (a : ℝ), ↑a ^ r * (f a * Complex.exp (-↑a ^ 2 / (2 * ↑Q.ξ ^ 2))) = 0x:ℝ⊢ ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = ↑x ^ r * (f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)))
simp All goals completed! 🐙
· neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:¬r ≠ 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0 simp only [ne_eq, Decidable.not_not] at hr neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0r:ℕhr:r = 0⊢ ∫ (x : ℝ), ↑x ^ r * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
subst hr neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ ∫ (x : ℝ), ↑x ^ 0 * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) = 0
simp only [pow_zero, Complex.ofReal_exp, Complex.ofReal_div, Complex.ofReal_neg,
Complex.ofReal_mul, Complex.ofReal_pow, Complex.ofReal_ofNat, one_mul] neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ ∫ (x : ℝ), f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) = 0
rw [← Q.orthogonal_physHermite_of_mem_orthogonal f hf hOrth 0 neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ ∫ (x : ℝ), f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) =
∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite 0)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ ∫ (x : ℝ), f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) =
∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite 0)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))]neg Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ ∫ (x : ℝ), f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) =
∫ (x : ℝ), ↑((fun x => (Polynomial.aeval x) (physHermite 0)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))
congr neg.e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0⊢ (fun x => f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) = fun x =>
↑((fun x => (Polynomial.aeval x) (physHermite 0)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))
funext x neg.e_f Q:HarmonicOscillatorf:ℝ → ℂhf:MemHS fhOrth:∀ (n : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk hf⟫_ℂ = 0x:ℝ⊢ f x * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) =
↑((fun x => (Polynomial.aeval x) (physHermite 0)) (x / Q.ξ)) * (f x * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))
simp All goals completed! 🐙
If f is a function ℝ → ℂ satisfying MemHS f such that it is orthogonal
to all eigenfunction n then it is orthogonal to
e ^ (I c x) * e ^ (- x ^ 2 / (2 ξ^2))
for any real c.
The proof of this result relies on the expansion of e ^ (I c x)
in terms of x^r/r! and using orthogonal_power_of_mem_orthogonal
along with integrability conditions.