Imports
/- Copyright (c) 2026 Bjørn Kjos-Hanssen. All rights reserved. Released under Apache 2.0 license as described in the file LICENSE. Authors: Bjørn Kjos-Hanssen -/ module public import Mathlib.Data.Matrix.PEquiv public import Mathlib.Probability.Distributions.Poisson.Basic public import Mathlib.Analysis.Normed.Lp.lpSpace

Quantum harmonic oscillator

Annihilation operator.

def a (x : ℕ → ℂ) : ℕ → ℂ := fun n => √(n + 1) * x (n + 1)
def aLin : (ℕ → ℂ) →ₗ[ℂ] (ℕ → ℂ) := { toFun := a map_add' := ⊢ ∀ (x y : ℕ → ℂ), a (x + y) = a x + a y ⊢ ∀ (x y : ℕ → ℂ), (fun n => ↑√(↑n + 1) * (x + y) (n + 1)) = (fun n => ↑√(↑n + 1) * x (n + 1)) + fun n => ↑√(↑n + 1) * y (n + 1) x:ℕ → ℂy:ℕ → ℂ⊢ (fun n => ↑√(↑n + 1) * (x + y) (n + 1)) = (fun n => ↑√(↑n + 1) * x (n + 1)) + fun n => ↑√(↑n + 1) * y (n + 1) x:ℕ → ℂy:ℕ → ℂn:ℕ⊢ ↑√(↑n + 1) * (x + y) (n + 1) = ((fun n => ↑√(↑n + 1) * x (n + 1)) + fun n => ↑√(↑n + 1) * y (n + 1)) n x:ℕ → ℂy:ℕ → ℂn:ℕ⊢ ↑√(↑n + 1) * (x (n + 1) + y (n + 1)) = ↑√(↑n + 1) * x (n + 1) + ↑√(↑n + 1) * y (n + 1) All goals completed! 🐙 map_smul' := ⊢ ∀ (m : ℂ) (x : ℕ → ℂ), a (m • x) = (RingHom.id ℂ) m • a x m:ℂx:ℕ → ℂ⊢ a (m • x) = (RingHom.id ℂ) m • a x m:ℂx:ℕ → ℂ⊢ (fun n => ↑√(↑n + 1) * (m • x) (n + 1)) = (RingHom.id ℂ) m • fun n => ↑√(↑n + 1) * x (n + 1) m:ℂx:ℕ → ℂn:ℕ⊢ ↑√(↑n + 1) * (m • x) (n + 1) = ((RingHom.id ℂ) m • fun n => ↑√(↑n + 1) * x (n + 1)) n m:ℂx:ℕ → ℂn:ℕ⊢ ↑√(↑n + 1) * (m * x (n + 1)) = m * (↑√(↑n + 1) * x (n + 1)) All goals completed! 🐙 }

Creation operator.

def a_dag (x : ℕ → ℂ) : ℕ → ℂ := fun n => ite (n = 0) 0 (√n * x (n - 1))
def a_dagLin : (ℕ → ℂ) →ₗ[ℂ] (ℕ → ℂ) := { toFun := a_dag map_add' := ⊢ ∀ (x y : ℕ → ℂ), a_dag (x + y) = a_dag x + a_dag y ⊢ ∀ (x y : ℕ → ℂ), (fun n => if n = 0 then 0 else ↑√↑n * (x + y) (n - 1)) = (fun n => if n = 0 then 0 else ↑√↑n * x (n - 1)) + fun n => if n = 0 then 0 else ↑√↑n * y (n - 1) x:ℕ → ℂy:ℕ → ℂ⊢ (fun n => if n = 0 then 0 else ↑√↑n * (x + y) (n - 1)) = (fun n => if n = 0 then 0 else ↑√↑n * x (n - 1)) + fun n => if n = 0 then 0 else ↑√↑n * y (n - 1) x:ℕ → ℂy:ℕ → ℂn:ℕ⊢ (if n = 0 then 0 else ↑√↑n * (x + y) (n - 1)) = ((fun n => if n = 0 then 0 else ↑√↑n * x (n - 1)) + fun n => if n = 0 then 0 else ↑√↑n * y (n - 1)) n x:ℕ → ℂy:ℕ → ℂn:ℕ⊢ (if n = 0 then 0 else ↑√↑n * (x (n - 1) + y (n - 1))) = (if n = 0 then 0 else ↑√↑n * x (n - 1)) + if n = 0 then 0 else ↑√↑n * y (n - 1) x:ℕ → ℂy:ℕ → ℂn:ℕ⊢ (if n = 0 then 0 else ↑√↑n * x (n - 1) + ↑√↑n * y (n - 1)) = (if n = 0 then 0 else ↑√↑n * x (n - 1)) + if n = 0 then 0 else ↑√↑n * y (n - 1) x:ℕ → ℂy:ℕ → ℂn:ℕh✝:n = 0⊢ 0 = 0 + 0x:ℕ → ℂy:ℕ → ℂn:ℕh✝:¬n = 0⊢ ↑√↑n * x (n - 1) + ↑√↑n * y (n - 1) = ↑√↑n * x (n - 1) + ↑√↑n * y (n - 1) x:ℕ → ℂy:ℕ → ℂn:ℕh✝:n = 0⊢ 0 = 0 + 0x:ℕ → ℂy:ℕ → ℂn:ℕh✝:¬n = 0⊢ ↑√↑n * x (n - 1) + ↑√↑n * y (n - 1) = ↑√↑n * x (n - 1) + ↑√↑n * y (n - 1) All goals completed! 🐙 map_smul' := ⊢ ∀ (m : ℂ) (x : ℕ → ℂ), a_dag (m • x) = (RingHom.id ℂ) m • a_dag x m:ℂx:ℕ → ℂ⊢ a_dag (m • x) = (RingHom.id ℂ) m • a_dag x m:ℂx:ℕ → ℂ⊢ (fun n => if n = 0 then 0 else ↑√↑n * (m • x) (n - 1)) = (RingHom.id ℂ) m • fun n => if n = 0 then 0 else ↑√↑n * x (n - 1) m:ℂx:ℕ → ℂn:ℕ⊢ (if n = 0 then 0 else ↑√↑n * (m • x) (n - 1)) = ((RingHom.id ℂ) m • fun n => if n = 0 then 0 else ↑√↑n * x (n - 1)) n m:ℂx:ℕ → ℂn:ℕ⊢ (if n = 0 then 0 else ↑√↑n * (m * x (n - 1))) = if n = 0 then 0 else m * (↑√↑n * x (n - 1)) All goals completed! 🐙 }def ε (n : ℕ) (c : ℂ) : ℕ → ℂ := fun i => ite (i = n) c 0

Verify that a_dag really is the transpose of a.

i:ℕj:ℕ_✝:¬j = 0_:j - 1 = ig₃:i + 1 = j⊢ ↑√↑(i + 1) = (starRingEnd ℂ) ↑√(↑i + 1);All goals completed! 🐙

Verify that a |n + 1⟩ = √(n + 1) |n ⟩

All goals completed! 🐙 n:ℕi:ℕg₀:¬i = n⊢ 0 = 0 All goals completed! 🐙

Verify that a† ∣n⟩ = √(n+1) ∣n+1⟩.

n:ℕi:ℕ_✝:¬i = 0_:i - 1 = nh:i = n + 1⊢ ↑√↑(n + 1) * 1 = ↑√(↑n + 1); All goals completed! 🐙 n:ℕi:ℕ_✝:¬i = 0_:¬i - 1 = nh✝:¬i = n + 1⊢ ↑√↑i * 0 = 0 All goals completed! 🐙
n:ℕx:ℕ → ℂg:¬n = 0h:n - 1 + 1 = n⊢ ↑√↑n * ↑√↑n * x n = ↑n * x n n:ℕx:ℕ → ℂg:¬n = 0h:n - 1 + 1 = n⊢ ↑√↑n * ↑√↑n = ↑n n:ℕx:ℕ → ℂg:¬n = 0h:n - 1 + 1 = n⊢ √↑n * √↑n = ↑n n:ℕx:ℕ → ℂg:¬n = 0h:n - 1 + 1 = n⊢ 0 ≤ ↑n All goals completed! 🐙n:ℕx:ℕ → ℂ⊢ ↑√(↑n + 1) * ↑√(↑n + 1) * x n = (↑n + 1) * x n n:ℕx:ℕ → ℂ⊢ ↑√(↑n + 1) * ↑√(↑n + 1) = ↑n + 1 n:ℕx:ℕ → ℂ⊢ √↑(n + 1) * √↑(n + 1) = ↑(n + 1) n:ℕx:ℕ → ℂ⊢ 0 ≤ ↑(n + 1) n:ℕx:ℕ → ℂ⊢ 0 ≤ n + 1 All goals completed! 🐙x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ ↑√↑(i + 1) * ↑√↑(i + 1) * ((↑i + 1) * x i - ↑i * x i) - ↑√↑i * ↑√↑i * ((↑i + 1) * x i - ↑i * x i) = (↑i + 1) * x i - ↑i * x i x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ ↑√↑(i + 1) * ↑√↑(i + 1) = ↑i + 1x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ ↑√↑i * ↑√↑i = ↑i x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ ↑√↑(i + 1) * ↑√↑(i + 1) = ↑i + 1 x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ √↑(i + 1) * √↑(i + 1) = ↑(i + 1) x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ 0 ≤ ↑(i + 1) All goals completed! 🐙 x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ ↑√↑i * ↑√↑i = ↑i x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ √↑i * √↑i = ↑i x:ℕ → ℂi:ℕg₀:¬i = 0this✝:i - 1 + 1 = ithis:(↑i + 1) * x i - ↑i * x i = x i⊢ 0 ≤ ↑i All goals completed! 🐙def coherentState (α : ℂ) : ℕ → ℂ := fun n : ℕ => Real.exp (-‖α‖^2 / 2) * α ^ n / √(n.factorial)def probabilityOf (n : ℕ) (α : ℂ) : NNReal := ⟨‖coherentState α n‖^2, n:ℕα:ℂ⊢ 0 ≤ ‖coherentState α n‖ ^ 2 All goals completed! 🐙⟩

Coherent state has a Poisson distribution.

n:ℕα:ℂthis✝²:|√↑n.factorial| = √↑n.factorialthis✝¹:√↑n.factorial ^ 2 = ↑n.factorialthis✝:∀ (a b : ℝ), a = b → a / ↑n.factorial = b / ↑n.factorialthis:∀ (a b c d : ℝ), a = b → c = d → a * c = b * d⊢ (‖α‖ ^ 2) ^ n = ↑(⟨‖α‖ ^ 2, ⋯⟩ ^ n) All goals completed! 🐙 n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ Real.exp (-↑⟨‖α‖ ^ 2, ⋯⟩) * ↑⟨‖α‖ ^ 2, ⋯⟩ ^ n / ↑n.factorial n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ Real.exp (-↑⟨‖α‖ ^ 2, ⋯⟩) * ↑⟨‖α‖ ^ 2, ⋯⟩ ^ nn:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ ↑n.factorial n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ Real.exp (-↑⟨‖α‖ ^ 2, ⋯⟩) * ↑⟨‖α‖ ^ 2, ⋯⟩ ^ n n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ Real.exp (-↑⟨‖α‖ ^ 2, ⋯⟩)n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ ↑⟨‖α‖ ^ 2, ⋯⟩ ^ n n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ Real.exp (-↑⟨‖α‖ ^ 2, ⋯⟩) All goals completed! 🐙 n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ ↑⟨‖α‖ ^ 2, ⋯⟩ ^ n All goals completed! 🐙 n:ℕα:ℂthis✝:|√↑n.factorial| = √↑n.factorialthis:√↑n.factorial ^ 2 = ↑n.factorial⊢ 0 ≤ ↑n.factorial All goals completed! 🐙

The only eigenvectors of a are the coherent states.

α:ℂv:ℕ → ℂh:v = (Complex.exp (↑‖α‖ ^ 2 / 2) * v 0) • coherentState αn:ℕthis✝:Complex.exp (↑‖α‖ ^ 2 / 2) ≠ 0this:(n + 1).factorial = (n + 1) * n.factorial⊢ ↑√(↑n + 1) * v 0 * (α * α ^ n) / ↑√↑((n + 1) * n.factorial) = v 0 * α * α ^ n / ↑√↑n.factorial α:ℂv:ℕ → ℂh:v = (Complex.exp (↑‖α‖ ^ 2 / 2) * v 0) • coherentState αn:ℕthis✝:Complex.exp (↑‖α‖ ^ 2 / 2) ≠ 0this:(n + 1).factorial = (n + 1) * n.factorial⊢ ↑√(↑n + 1) * v 0 * (α * α ^ n) / (↑√(↑n + 1) * ↑√↑n.factorial) = v 0 * α * α ^ n / ↑√↑n.factorial All goals completed! 🐙
α:ℂthis:Complex.exp (↑‖α‖ ^ 2 / 2) * coherentState α 0 = 1⊢ coherentState α = 1 • coherentState α All goals completed! 🐙

None of the coherentState eigenvectors are proportional.

lemma distinct_eigenvectors_a (α β c : ℂ) (hc : coherentState α = c • coherentState β) : α = β := α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState β⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:coherentState α 0 = (c • coherentState β) 0⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:coherentState α 0 = (c • coherentState β) 0h₁:coherentState α 1 = (c • coherentState β) 1⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:Complex.exp (-↑‖α‖ ^ 2 / 2) = c * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:Complex.exp (-↑‖α‖ ^ 2 / 2) * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:Complex.exp (-↑‖α‖ ^ 2 / 2) = c * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:Complex.exp (-↑‖α‖ ^ 2 / 2) * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)hc₀:c = 0⊢ α = βα:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:Complex.exp (-↑‖α‖ ^ 2 / 2) = c * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:Complex.exp (-↑‖α‖ ^ 2 / 2) * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)hc₀:¬c = 0⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βh₀:Complex.exp (-↑‖α‖ ^ 2 / 2) = c * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:Complex.exp (-↑‖α‖ ^ 2 / 2) * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)hc₀:c = 0⊢ α = β α:ℂβ:ℂhc:coherentState α = 0 • coherentState βh₀:Complex.exp (-↑‖α‖ ^ 2 / 2) = 0 * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:Complex.exp (-↑‖α‖ ^ 2 / 2) * α = 0 * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)⊢ α = β All goals completed! 🐙 α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βhc₀:¬c = 0A:ℂh₀:A = c * Complex.exp (-↑‖β‖ ^ 2 / 2)h₁:A * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βhc₀:¬c = 0h₁:c * Complex.exp (-↑‖β‖ ^ 2 / 2) * α = c * (Complex.exp (-↑‖β‖ ^ 2 / 2) * β)⊢ α = β α:ℂβ:ℂc:ℂhc:coherentState α = c • coherentState βhc₀:¬c = 0h₁:α = β⊢ α = β All goals completed! 🐙

Formal eigenvectors for a_dag (not in ℓ²(ℂ)) (fails at n=0) .

α:ℂhα:α ≠ 0n:ℕhn:n ≠ 0g₀:¬n = 0this✝:↑√↑(n - 1).factorial ≠ 0this:α ^ n = α * α ^ (n - 1)⊢ ↑√↑n * (α * α ^ (n - 1)) = ↑√↑n * α ^ (n - 1) * α All goals completed! 🐙
lemma a_dag_nullspace {v : ℕ → ℂ} (hv : a_dag v = 0) : v = 0 := v:ℕ → ℂhv:a_dag v = 0⊢ v = 0 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0⊢ v = 0 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕ⊢ v n = 0 n induction n with v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0⊢ v 0 = 0 0 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0this:(if 1 = 0 then 0 else ↑√↑1 * v (1 - 1)) = 0 1⊢ v 0 = 0 0 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0this:v 0 = 0⊢ v 0 = 0 All goals completed! 🐙 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0 n⊢ v (n + 1) = 0 (n + 1) v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0 nthis:(if n + 2 = 0 then 0 else ↑√↑(n + 2) * v (n + 2 - 1)) = 0 (n + 2)⊢ v (n + 1) = 0 (n + 1) v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0this:√(↑n + 2) = 0 ∨ v (n + 1) = 0⊢ v (n + 1) = 0 cases this with v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0h:√(↑n + 2) = 0⊢ v (n + 1) = 0 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0h:√(↑n + 2) = 0⊢ False v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0⊢ √(↑n + 2) = 0 → False v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0⊢ 0 < ↑n + 2 All goals completed! 🐙 v:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = 0n:ℕhn:v n = 0h:v (n + 1) = 0⊢ v (n + 1) = 0 All goals completed! 🐙v:ℕ → ℂhv:a_dag v = 0 • v⊢ 0 • v = 0; All goals completed! 🐙 α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:a_dag v 0 = (α • v) 0⊢ v = 0 α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0⊢ v = 0 α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0n:ℕ⊢ v n = 0 n induction n with α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0⊢ v 0 = 0 0 α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:α = 0 ∨ v 0 = 0⊢ v 0 = 0;All goals completed! 🐙 α:ℂv:ℕ → ℂhv:a_dag v = α • vhα:¬α = 0this:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0n:ℕhn:v n = 0 n⊢ v (n + 1) = 0 (n + 1) α:ℂv:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = α • vhα:¬α = 0this:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0n:ℕhn:v n = 0 n⊢ v (n + 1) = 0 (n + 1) α:ℂv:ℕ → ℂhv:(fun n => if n = 0 then 0 else ↑√↑n * v (n - 1)) = α • vhα:¬α = 0this✝:(if 0 = 0 then 0 else ↑√↑0 * v (0 - 1)) = (α • v) 0n:ℕhn:v n = 0 nthis:(if n + 1 = 0 then 0 else ↑√↑(n + 1) * v (n + 1 - 1)) = (α • v) (n + 1)⊢ v (n + 1) = 0 (n + 1) All goals completed! 🐙 α:ℂv:ℕ → ℂa✝:v = 0⊢ a_dag v = α • v α:ℂ⊢ a_dag 0 = α • 0 α:ℂ⊢ (fun n => if n = 0 then 0 else ↑√↑n * 0 (n - 1)) = α • 0 α:ℂ⊢ (fun n => 0) = 0 All goals completed! 🐙x:ℕ → ℂi:ℕ⊢ ({ toFun := a, map_add' := aLin._proof_1, map_smul' := aLin._proof_2 } * { toFun := a_dag, map_add' := a_dagLin._proof_1, map_smul' := a_dagLin._proof_2 } - { toFun := a_dag, map_add' := a_dagLin._proof_1, map_smul' := a_dagLin._proof_2 } * { toFun := a, map_add' := aLin._proof_1, map_smul' := aLin._proof_2 }) x i = (a ∘ a_dag - a_dag ∘ a) x i All goals completed! 🐙n:ℕg₀:¬n = 0⊢ ↑(Real.exp (-‖0‖ ^ 2 / 2)) * 0 / ↑√↑n.factorial = 0 All goals completed! 🐙

The coherent state belongs to ℓ²(ℂ).

α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ i⊢ HasSum (fun i => (‖α‖ ^ 2) ^ i / √↑i.factorial ^ 2) ‖Complex.exp ↑(‖α‖ ^ 2)‖ α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝ⊢ HasSum (fun i => A ^ i / √↑i.factorial ^ 2) ‖Complex.exp ↑A‖ α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝ⊢ HasSum (fun i => A ^ i / ↑i.factorial) (Real.exp A) α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝx✝:ℕ⊢ A ^ x✝ / ↑x✝.factorial = (NormedSpace.expSeries ℝ ℝ x✝) fun x => Aα:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝ⊢ Real.exp = NormedSpace.exp α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝx✝:ℕ⊢ A ^ x✝ / ↑x✝.factorial = (NormedSpace.expSeries ℝ ℝ x✝) fun x => A α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝx✝:ℕ⊢ A ^ x✝ / ↑x✝.factorial = (↑x✝.factorial)⁻¹ * A ^ x✝ All goals completed! 🐙 α:ℂthis✝:∀ (r : ℝ), |√r| = √rthis:∀ (i : ℕ), (‖α‖ ^ i) ^ 2 = (‖α‖ ^ 2) ^ iA:ℝ⊢ Real.exp = NormedSpace.exp All goals completed! 🐙 }