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.Basic public import Physlib.Mathematics.SpecialFunctions.PhysHermite

Eigenfunction of the Harmonic Oscillator

@[expose] public sectionlemma eigenfunction_eq (n : ℕ) : Q.eigenfunction n = fun (x : ℝ) => (1/√(2 ^ n * n !) * (1/ √(√Real.pi * Q.ξ))) * Complex.ofReal (physHermite n (x / Q.ξ) * Real.exp (- x^2 / (2 * Q.ξ^2))) := Q:HarmonicOscillatorn:ℕ⊢ Q.eigenfunction n = fun x => 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) Q:HarmonicOscillatorn:ℕx:ℝ⊢ Q.eigenfunction n x = 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) Q:HarmonicOscillatorn:ℕx:ℝ⊢ (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ * (↑√(√Real.pi * Q.ξ))⁻¹ * ↑(↑(physHermite n) (x / Q.ξ)) * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) = (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ * (↑√(√Real.pi * Q.ξ))⁻¹ * (↑(↑(physHermite n) (x / Q.ξ)) * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2))) All goals completed! 🐙lemma eigenfunction_zero : Q.eigenfunction 0 = fun (x : ℝ) => (1/ √(√Real.pi * Q.ξ)) * Complex.exp (- x^2 / (2 * Q.ξ^2)) := Q:HarmonicOscillator⊢ Q.eigenfunction 0 = fun x => 1 / ↑√(√Real.pi * Q.ξ) * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) Q:HarmonicOscillatorx:ℝ⊢ Q.eigenfunction 0 x = 1 / ↑√(√Real.pi * Q.ξ) * Complex.exp (-↑x ^ 2 / (2 * ↑Q.ξ ^ 2)) All goals completed! 🐙lemma eigenfunction_eq_mul_eigenfunction_zero (n : ℕ) : Q.eigenfunction n = fun x => Complex.ofReal (1/√(2 ^ n * n !)) * Complex.ofReal (physHermite n (x / Q.ξ)) * Q.eigenfunction 0 x := Q:HarmonicOscillatorn:ℕ⊢ Q.eigenfunction n = fun x => ↑(1 / √(2 ^ n * ↑n !)) * ↑(↑(physHermite n) (x / Q.ξ)) * Q.eigenfunction 0 x match n with Q:HarmonicOscillatorn:ℕ⊢ Q.eigenfunction 0 = fun x => ↑(1 / √(2 ^ 0 * ↑0!)) * ↑(↑(physHermite 0) (x / Q.ξ)) * Q.eigenfunction 0 x All goals completed! 🐙 Q:HarmonicOscillatorn✝:ℕn:ℕ⊢ Q.eigenfunction (n + 1) = fun x => ↑(1 / √(2 ^ (n + 1) * ↑(n + 1)!)) * ↑(↑(physHermite (n + 1)) (x / Q.ξ)) * Q.eigenfunction 0 x Q:HarmonicOscillatorn✝:ℕn:ℕx:ℝ⊢ Q.eigenfunction (n + 1) x = ↑(1 / √(2 ^ (n + 1) * ↑(n + 1)!)) * ↑(↑(physHermite (n + 1)) (x / Q.ξ)) * Q.eigenfunction 0 x Q:HarmonicOscillatorn✝:ℕn:ℕx:ℝ⊢ (↑√(2 ^ (n + 1) * ↑(n + 1)!))⁻¹ * (↑√(√Real.pi * Q.ξ))⁻¹ * ↑(↑(physHermite (n + 1)) (x / Q.ξ)) * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = (↑√(2 ^ (n + 1) * ↑(n + 1)!))⁻¹ * ↑(↑(physHermite (n + 1)) (x / Q.ξ)) * ((↑√(√Real.pi * Q.ξ))⁻¹ * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) All goals completed! 🐙

Basic properties of the eigenfunctions

The eigenfunctions are integrable.

Q:HarmonicOscillatorn:ℕh1:(fun x => ↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = fun x => ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / (2 * Q.ξ ^ 2)) * x ^ 2)⊢ Integrable (fun x => ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / (2 * Q.ξ ^ 2)) * x ^ 2)) volume Q:HarmonicOscillatorn:ℕh1:(fun x => ↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) = fun x => ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / (2 * Q.ξ ^ 2)) * x ^ 2)⊢ 0 < 1 / (2 * Q.ξ ^ 2) All goals completed! 🐙

The eigenfunctions are real.

Q:HarmonicOscillatorn:ℕx:ℝ⊢ (starRingEnd ℂ) ((fun x => 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) x) = (fun x => 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) x All goals completed! 🐙
Q:HarmonicOscillatorn:ℕx:ℝ⊢ ‖Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))‖ = Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)) All goals completed! 🐙Q:HarmonicOscillatorn:ℕx:ℝ⊢ Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2) * 2) = Real.exp (-x ^ 2 / Q.ξ ^ 2) Q:HarmonicOscillatorn:ℕx:ℝ⊢ -x ^ 2 / (2 * Q.ξ ^ 2) * 2 = -x ^ 2 / Q.ξ ^ 2 All goals completed! 🐙

The eigenfunctions are square integrable.

Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)⊢ Integrable (fun x => ‖Q.eigenfunction n x‖ ^ 2) volume Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)| Integrable (fun x => ‖Q.eigenfunction n x‖ ^ 2) volume Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)x:ℝ| ‖Q.eigenfunction n x‖ ^ 2 Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)x:ℝ| (1 / √(2 ^ n * ↑n !) * (1 / √(√Real.pi * Q.ξ))) ^ 2 * (↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2)) Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)x:ℝ| (1 / √(2 ^ n * ↑n !) * (1 / √(√Real.pi * Q.ξ))) ^ 2 * ((aeval (x / Q.ξ)) (physHermite n ^ 2) * Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)) Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)x:ℝ| x / Q.ξ Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)x:ℝ| 1 / Q.ξ * x Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)⊢ Integrable (fun x => (aeval (1 / Q.ξ * x)) (physHermite n ^ 2) * Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)) volume Q:HarmonicOscillatorn:ℕh0:∀ (x : ℝ), Real.exp (-x ^ 2 / Q.ξ ^ 2) = Real.exp (-(1 / Q.ξ ^ 2) * x ^ 2)⊢ 0 < 1 / Q.ξ ^ 2 All goals completed! 🐙

The eigenfunctions are almost everywhere strongly measurable.

@[fun_prop] lemma eigenfunction_aeStronglyMeasurable (n : ℕ) : MeasureTheory.AEStronglyMeasurable (Q.eigenfunction n) := (Q.eigenfunction_integrable n).aestronglyMeasurable

The eigenfunctions are members of the Hilbert space.

Q:HarmonicOscillatorn:ℕ⊢ AEStronglyMeasurable (Q.eigenfunction n) volume ∧ Integrable (fun x => ‖Q.eigenfunction n x‖ ^ 2) volume Q:HarmonicOscillatorn:ℕ⊢ AEStronglyMeasurable (Q.eigenfunction n) volumeQ:HarmonicOscillatorn:ℕ⊢ Integrable (fun x => ‖Q.eigenfunction n x‖ ^ 2) volume Q:HarmonicOscillatorn:ℕ⊢ AEStronglyMeasurable (Q.eigenfunction n) volumeQ:HarmonicOscillatorn:ℕ⊢ Integrable (fun x => ‖Q.eigenfunction n x‖ ^ 2) volume All goals completed! 🐙

The eigenfunctions are differentiable.

Q:HarmonicOscillatorx:ℝn:ℕ⊢ DifferentiableAt ℝ (fun x => 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) x All goals completed! 🐙

The eigenfunctions are continuous.

Q:HarmonicOscillatorn:ℕ⊢ Continuous fun x => 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))) All goals completed! 🐙

The nth eigenfunction is an eigenfunction of the parity operator with the eigenvalue (-1) ^ n.

Q:HarmonicOscillatorn:ℕx:ℝ⊢ 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑((-1) ^ n * ↑(physHermite n) (x / Q.ξ) * Real.exp (-(-x) ^ 2 / (2 * Q.ξ ^ 2))) = (-1) ^ n * (1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2)))) Q:HarmonicOscillatorn:ℕx:ℝ⊢ 1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * ((-1) ^ n * ↑(↑(physHermite n) (x / Q.ξ)) * ↑(Real.exp (-(-x) ^ 2 / (2 * Q.ξ ^ 2)))) = (-1) ^ n * (1 / ↑√(2 ^ n * ↑n !) * (1 / ↑√(√Real.pi * Q.ξ)) * (↑(↑(physHermite n) (x / Q.ξ)) * ↑(Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2))))) All goals completed! 🐙

Orthonormality

A simplification of the product of two eigenfunctions.

Q:HarmonicOscillatorx:ℝn:ℕp:ℕ⊢ Real.exp (-x ^ 2 / (2 * Q.ξ ^ 2) + -x ^ 2 / (2 * Q.ξ ^ 2)) = Real.exp (-x ^ 2 / Q.ξ ^ 2) Q:HarmonicOscillatorx:ℝn:ℕp:ℕ⊢ -x ^ 2 / (2 * Q.ξ ^ 2) + -x ^ 2 / (2 * Q.ξ ^ 2) = -x ^ 2 / Q.ξ ^ 2 Q:HarmonicOscillatorx:ℝn:ℕp:ℕ⊢ x ^ 2 * (-1 + -1) = -(x ^ 2 * 2) All goals completed! 🐙 Q:HarmonicOscillatorx:ℝn:ℕp:ℕ⊢ (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ / (↑√(2 ^ p) * ↑√↑p !) * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * (↑(↑(physHermite n) (x / Q.ξ)) * ↑(↑(physHermite p) (x / Q.ξ))) * Complex.exp (-↑x ^ 2 / ↑Q.ξ ^ 2) = (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ / (↑√(2 ^ p) * ↑√↑p !) * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * (↑(↑(physHermite n) (x / Q.ξ)) * ↑(↑(physHermite p) (x / Q.ξ)) * Complex.exp (-↑x ^ 2 / ↑Q.ξ ^ 2)) All goals completed! 🐙
Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ n * ↑n !) * (1 / (↑√Real.pi * ↑Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) * ↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / Q.ξ ^ 2)) = 1 / (2 ^ n * ↑n !) * (1 / (↑√Real.pi * ↑Q.ξ)) * ↑(↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2)) Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ n * ↑n !) = 1 / (2 ^ n * ↑n !)Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(physHermite n) (x / Q.ξ) * ↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ n * ↑n !) = 1 / (2 ^ n * ↑n !) Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ n * ↑n !) = 1 / ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !))Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !)) = 1 / (2 ^ n * ↑n !) Q:HarmonicOscillatorx:ℝn:ℕ⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ n * ↑n !) = 1 / ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !)) Q:HarmonicOscillatorx:ℝn:ℕ⊢ (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ / (↑√(2 ^ n) * ↑√↑n !) = (↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹ * ((↑√↑n !)⁻¹ * (↑√(2 ^ n))⁻¹) All goals completed! 🐙 Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !)) = 2 ^ n * ↑n ! Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !)) = ↑(2 ^ n * ↑n !)Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(2 ^ n * ↑n !) = 2 ^ n * ↑n ! Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(√(2 ^ n * ↑n !) * √(2 ^ n * ↑n !)) = ↑(2 ^ n * ↑n !) Q:HarmonicOscillatorx:ℝn:ℕ⊢ √(2 ^ n * ↑n !) * √(2 ^ n * ↑n !) = 2 ^ n * ↑n ! Q:HarmonicOscillatorx:ℝn:ℕ⊢ 0 ≤ 2 ^ n * ↑n ! Q:HarmonicOscillatorx:ℝn:ℕ⊢ 0 ≤ 2 ^ n Q:HarmonicOscillatorx:ℝn:ℕ⊢ 0 ≤ 2 All goals completed! 🐙 Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(2 ^ n * ↑n !) = 2 ^ n * ↑n ! All goals completed! 🐙 Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(physHermite n) (x / Q.ξ) * ↑(physHermite n) (x / Q.ξ) * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) Q:HarmonicOscillatorx:ℝn:ℕ⊢ ↑(physHermite n) (x / Q.ξ) * ↑(physHermite n) (x / Q.ξ) = ↑(physHermite n) (x / Q.ξ) ^ 2 All goals completed! 🐙

The eigenfunction are normalized.

Q:HarmonicOscillatorn:ℕhc:∫ (x : ℝ), ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ∫ (x : ℝ), ↑(physHermite n) (1 / Q.ξ * x) * ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / Q.ξ) ^ 2 * x ^ 2)this:↑n ! ≠ 0⊢ (↑n !)⁻¹ * (2 ^ n)⁻¹ * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * ↑(Q.ξ • (↑n ! * 2 ^ n * √Real.pi)) = 1 Q:HarmonicOscillatorn:ℕhc:∫ (x : ℝ), ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ∫ (x : ℝ), ↑(physHermite n) (1 / Q.ξ * x) * ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / Q.ξ) ^ 2 * x ^ 2)this✝:↑n ! ≠ 0this:↑Q.ξ ≠ 0⊢ (↑n !)⁻¹ * (2 ^ n)⁻¹ * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * ↑(Q.ξ • (↑n ! * 2 ^ n * √Real.pi)) = 1 Q:HarmonicOscillatorn:ℕhc:∫ (x : ℝ), ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ∫ (x : ℝ), ↑(physHermite n) (1 / Q.ξ * x) * ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / Q.ξ) ^ 2 * x ^ 2)this✝¹:↑n ! ≠ 0this✝:↑Q.ξ ≠ 0this:↑√Real.pi ≠ 0⊢ (↑n !)⁻¹ * (2 ^ n)⁻¹ * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * ↑(Q.ξ • (↑n ! * 2 ^ n * √Real.pi)) = 1 Q:HarmonicOscillatorn:ℕhc:∫ (x : ℝ), ↑(physHermite n) (x / Q.ξ) ^ 2 * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ∫ (x : ℝ), ↑(physHermite n) (1 / Q.ξ * x) * ↑(physHermite n) (1 / Q.ξ * x) * Real.exp (-(1 / Q.ξ) ^ 2 * x ^ 2)this✝¹:↑n ! ≠ 0this✝:↑Q.ξ ≠ 0this:↑√Real.pi ≠ 0⊢ (↑n !)⁻¹ * (2 ^ n)⁻¹ * ((↑Q.ξ)⁻¹ * (↑√Real.pi)⁻¹) * (↑Q.ξ * (↑n ! * 2 ^ n * ↑√Real.pi)) = 1 All goals completed! 🐙

The eigenfunctions of the quantum harmonic oscillator are orthogonal.

Q:HarmonicOscillatorn:ℕp:ℕhnp:n ≠ phc:∫ (x : ℝ), ↑(physHermite n) (x / Q.ξ) * ↑(physHermite p) (x / Q.ξ) * Real.exp (-x ^ 2 / Q.ξ ^ 2) = ∫ (x : ℝ), ↑(physHermite n) (1 / Q.ξ * x) * ↑(physHermite p) (1 / Q.ξ * x) * Real.exp (-(1 / Q.ξ) ^ 2 * x ^ 2)⊢ 1 / ↑√(2 ^ n * ↑n !) * 1 / ↑√(2 ^ p * ↑p !) * (1 / (↑√Real.pi * ↑Q.ξ)) * ↑0 = 0 All goals completed! 🐙

The eigenfunctions are orthonormal within the Hilbert space.

Q:HarmonicOscillator⊢ ∀ (i j : ℕ), ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if i = j then 1 else 0 Q:HarmonicOscillatorn:ℕp:ℕ⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if n = p then 1 else 0 Q:HarmonicOscillatorn:ℕp:ℕhnp:n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if n = p then 1 else 0Q:HarmonicOscillatorn:ℕp:ℕhnp:¬n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if n = p then 1 else 0 Q:HarmonicOscillatorn:ℕp:ℕhnp:n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if n = p then 1 else 0 Q:HarmonicOscillatorn:ℕp:ℕhnp:n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = 1 All goals completed! 🐙 Q:HarmonicOscillatorn:ℕp:ℕhnp:¬n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = if n = p then 1 else 0 Q:HarmonicOscillatorn:ℕp:ℕhnp:¬n = p⊢ ⟪HilbertSpace.mk ⋯, HilbertSpace.mk ⋯⟫_ℂ = 0 All goals completed! 🐙

The eigenfunctions are linearly independent.

lemma eigenfunction_linearIndependent : LinearIndependent ℂ (fun n => HilbertSpace.mk (Q.eigenfunction_memHS n)) := Q.eigenfunction_orthonormal.linearIndependent