Why Hilbert spaces?
Heated hydrogen does not glow in all colours. It emits light at sharp wavelengths, which Johann Balmer (1885) fitted by , — a law no classical model of an electron orbiting a nucleus could explain, since such an electron should radiate continuously and spiral inwards. The energies of an atom are discrete, and the light it emits carries the differences.
In 1925 Werner Heisenberg replaced electron orbits by arrays of transition amplitudes; Max Born and Pascual Jordan recognised the arrays as infinite matrices and found the rule . In 1926 Erwin Schrödinger found a wave equation whose eigenvalues reproduce the energy levels. The two theories looked nothing alike, until John von Neumann (1932) showed that both are statements about operators on a Hilbert space: matrix mechanics lives on , wave mechanics on , and the two spaces are unitarily isomorphic. Energy levels are points of the spectrum of an operator.
The commutation rule already shows that the mathematics must be infinite-dimensional and delicate. If and were matrices, the trace of would be , while the trace of is . This lesson develops the framework — states, observables, spectra, unitary evolution — and the two most famous consequences: the uncertainty relation and the quantised harmonic oscillator.
A qubit, then a particle
The smallest example. A qubit (an electron's spin, a photon's polarisation) has state space . A state is a unit vector with . Measuring "which basis vector" gives with probability and with probability . Observables are Hermitian matrices; the spin components are the Pauli matrices
Measuring gives an eigenvalue , with probability for the unit eigenvectors . The state has a sharp value of ( with certainty) but gives with probability each for , whose eigenvectors are . The matrices do not commute — — and no state has sharp values for both. Multiplying by a phase changes no probability, so states are really unit vectors up to phase; but relative phases matter: and have identical statistics and opposite values of .
A particle on a line. Now the state is a function with , and is the probability density of the position. Position acts by multiplication, , and momentum by differentiation, ; integrating by parts, for nice functions: . Neither operator is defined on all of — need not be square-integrable, and need not be differentiable — and that is not a technicality to be ignored, but the source of real phenomena.
Definitions and postulates
Definition— unbounded operators, adjoints, self-adjointness
Let be a complex Hilbert space (inner product linear in the second slot). An operator on is a linear map from a subspace , its domain, to ; it is densely defined if is dense. Its adjoint has domain and is defined by . The operator is symmetric if for all (that is, ), and self-adjoint if moreover , i.e. including domains. Its spectrum is the set of for which is not a bijection from onto with bounded inverse.
For bounded operators defined everywhere, symmetric and self-adjoint mean the same thing (and are often called Hermitian). For unbounded operators they differ, and only self-adjoint operators have real spectrum and a spectral theorem. A basic criterion: a symmetric operator is self-adjoint if and only if are both surjective (Reed–Simon I, Thm VIII.3).
Definition— projection-valued measure
A projection-valued measure on assigns to each Borel set an orthogonal projection on , with , , and countably additive. For each unit vector , is then a Borel probability measure on .
Definition— the postulates of quantum mechanics
- States. A pure state of a system is a unit vector in a separable complex Hilbert space , determined up to a phase: really a point of the projective space . (Mixed states are density operators: positive trace-class operators of trace .)
- Observables. An observable is a self-adjoint operator on . By the spectral theorem it has a projection-valued measure with .
- Born's rule. Measuring in the state gives a result in the Borel set with probability . Results lie in . If , the expectation is and the standard deviation is .
- Dynamics. There is a self-adjoint Hamiltonian (the energy) and states evolve by ; for this is the Schrödinger equation .
- Composite systems are described by the tensor product .
Definition— position, momentum and the commutation relation
On , position is with , and momentum is with , the functions that are absolutely continuous with . Both are self-adjoint. With the unitary Fourier transform , where multiplies by . The commutator of two operators is on ; on the Schwartz space , which both and map into itself, .
Examples
Example— The Bloch sphere
Every unit vector of is, up to phase, , and are spherical coordinates of a point of the unit sphere : the projective line is a sphere. is the eigenvector of the spin observable , and measuring the spin along another unit vector gives with probability . Orthogonal states are antipodal points.
Example— Momentum on an interval: the same formula, different observables
On (with ) let with domain . Integration by parts shows is symmetric: . But its adjoint is on all of , with no boundary conditions, so is not self-adjoint; indeed every is an eigenvalue of (eigenfunction ), and the spectrum of is all of . For each , the operator on is self-adjoint, with eigenfunctions for . These are physically different observables — a particle on a ring threaded by a magnetic flux sees exactly this (the Aharonov–Bohm effect). Domains are part of the physics.
Example— A Gaussian wave packet
Let with . Then , , and , so — the minimum allowed by the uncertainty relation below. Under the free Hamiltonian the packet stays Gaussian but spreads: , while is constant (momentum is conserved). With , .
Observables, spectra and the commutation relation
Theorem— Theorem (observables have real values)
Let be symmetric. Then (a) is real for every ; (b) every eigenvalue of is real; (c) eigenvectors for different eigenvalues are orthogonal.
Proof
(a) . (b) If with , then is real by (a). (c) If and with real , then , so .
∎
Theorem— Spectral theorem and Born's rule in finite dimensions
If is a Hermitian operator on , there is an orthonormal basis of eigenvectors with real eigenvalues . For a unit vector , the numbers are a probability distribution and .
Proof
Over the characteristic polynomial has a root, so has an eigenvector , normalised. Its orthogonal complement is invariant: if then . Induct on the dimension, restricting to ; reality of the eigenvalues is part (b) above. Then , so by Parseval and .
∎
Grouping equal eigenvalues, with the orthogonal projection onto the -eigenspace: the projection-valued measure of the postulates, concentrated on finitely many points.
Theorem— Spectral theorem (self-adjoint operators)
Let be self-adjoint on a separable Hilbert space . Then there are a σ-finite measure space , a measurable real function on and a unitary such that is multiplication by , with domain . Equivalently, there is a unique projection-valued measure on with , and is the support of , a closed subset of .
We do not prove this here; see Hall, Ch. 10, or Reed–Simon I, §VIII.3. The theorem says that every observable is a multiplication operator in suitable coordinates: position already is one, and momentum becomes one after the Fourier transform. Both have spectrum and no eigenvectors in — a "plane wave" is not a state — which is why the postulates are phrased with spectral measures rather than eigenvectors. The functional calculus defines , and indicator functions .
Why not allow unbounded operators everywhere on ? Because there are none that are symmetric.
Theorem— Hellinger–Toeplitz theorem (1910)
A symmetric operator defined on all of a Hilbert space is bounded.
Proof
By the closed graph theorem it suffices to show that the graph of is closed. Let and . For every , . Hence .
∎
Theorem— Wintner–Wielandt theorem (1947, 1949)
There are no bounded operators on a nonzero complex Banach space with for a constant . In finite dimensions, no matrices satisfy it at all.
Proof
Finite dimensions. , while .
Bounded operators (Wielandt's proof). Suppose . By induction on ,
using the inductive hypothesis . No power of is zero: , and if the identity gives , so , and descending we would reach . Taking norms, with ,
Dividing by gives for every , which is absurd.
∎
So the canonical commutation relation forces at least one of to be unbounded, and then by Hellinger–Toeplitz it cannot be defined on the whole space. Domains are unavoidable in quantum mechanics, and statements such as hold only on suitable dense subspaces. The Stone–von Neumann theorem (below) explains which representations of the commutation relation are the right ones.
Unitary time evolution
Theorem— The Schrödinger equation generates a unitary group
Let be self-adjoint and (functional calculus). Then each is unitary, , is continuous for every , and for the curve stays in and satisfies .
Proof
By the spectral theorem we may assume is multiplication by a real function on . Then is multiplication by , which has modulus : it is unitary with inverse , and the group law is . Continuity: by dominated convergence (the integrand is at most ). For , i.e. , the difference quotient is dominated by (as ) and converges pointwise to ; by dominated convergence the derivative exists in and equals .
∎
Theorem— Stone's theorem (1932)
Conversely, if is a strongly continuous one-parameter group of unitary operators, there is a unique self-adjoint operator with . Its domain is the set of for which exists, and is that limit.
(Proof: Hall, Ch. 10; Reed–Simon I, §VIII.4.) Stone's theorem is the reason observables must be self-adjoint, not merely symmetric: symmetries of a quantum system that depend continuously on a parameter — time translation, space translation, rotation — are strongly continuous unitary groups, and their generators — energy, momentum, angular momentum — are self-adjoint operators. A symmetric operator with no self-adjoint extension generates no dynamics at all, and one with many self-adjoint extensions (like above) generates many different dynamics.
Consequences: the norm is conserved, and so is the energy distribution, since commutes with . If then , the same ray: energy eigenstates are stationary, and all their measurement statistics are constant in time. Superpositions of two eigenstates oscillate with angular frequency — Bohr's frequency rule, which explains why spectral lines measure energy differences.
The uncertainty relation
Theorem— Robertson's uncertainty relation (1929)
Let be symmetric and let be a unit vector in . Then
More generally for all real .
Proof
Let and . The shifted operators are symmetric (as are real) and have the same commutator as . By symmetry,
So by the Cauchy–Schwarz inequality. Taking and gives on the right.
∎
For position and momentum, on Schwartz functions gives the Heisenberg–Kennard inequality (Kennard, 1927); by approximation it holds for every unit . Equality requires equality in Cauchy–Schwarz, with real, a first-order differential equation whose solutions are exactly the Gaussian wave packets .
Domains matter here too. On take the angular momentum on periodic functions and the angle (multiplication by ). Formally , yet the eigenstate has , so the naive inequality fails. The resolution: is not periodic, so and Robertson's hypothesis is violated.
What the inequality says is that no state has sharp values of two non-commuting observables: it constrains preparations, not the clumsiness of measuring devices. Relations between measurement error and disturbance are different, later theorems (Ozawa, 2003; Busch, Lahti and Werner, 2013).
The harmonic oscillator
The Hamiltonian of a particle in a quadratic potential is . In units with it is on . Work on the Schwartz space , which is dense and mapped into itself by , and the ladder operators
Here on , and gives and , with the number operator .
Theorem— Spectrum of the harmonic oscillator
The functions , , with , form an orthonormal basis of , and . They are the only eigenfunctions of in , up to scalars. In physical units the energy levels are .
Proof
Step 1 (commutators). From : and . Hence if , then and .
Step 2 (positivity). , so every eigenvalue of is .
Step 3 (the ladder stops). Let with nonzero. The vectors are eigenvectors with eigenvalue unless they vanish; by Step 2 they cannot all be nonzero, so there is with and . The equation reads , so , an eigenvector of with eigenvalue . Hence is a non-negative integer, and the ground state is unique up to scalars.
Step 4 (going up). For an eigenvector of with eigenvalue , . By induction , so is a unit vector with ; eigenvectors for different eigenvalues are orthogonal.
Step 5 (simplicity). If , then by Step 3, and since acts on the eigenvector as multiplication by , . So , a multiple of .
Step 6 (completeness). with a polynomial of degree exactly , so the span the same space as the functions . Suppose is orthogonal to all of them, and let . Because of the Gaussian factor we may differentiate under the integral any number of times, and is given by its everywhere-convergent Taylor series at , whose coefficients are multiples of . So : the Fourier transform of the integrable function vanishes, hence almost everywhere and .
∎
Since the eigenvectors form an orthonormal basis, extends uniquely to a self-adjoint operator (essential self-adjointness on ), namely , with spectrum exactly . Explicitly with the Hermite polynomials , , , . The lowest energy is not but : the zero-point energy, forced by the uncertainty relation, since .
Quantum mechanics in Lean and Mathlib
Mathlib works with bounded (everywhere-defined) operators, so the formal statements below are about symmetric linear maps A : E →ₗ[ℂ] E on a complex inner product space E (by Hellinger–Toeplitz these are automatically bounded on a Hilbert space) and about elements of normed algebras. Mathlib's inner product ⟪x, y⟫_ℂ is, like the physicists', conjugate-linear in the first slot. First the basic facts about observables: real expectation values (proved here), real eigenvalues (Mathlib), orthogonality of eigenvectors (proved here, as in the lesson) and the finite-dimensional spectral theorem (Mathlib):
/-- **Expectation values of observables are real.** If `A` is symmetric (`⟪A x, y⟫ = ⟪x, A y⟫`),
then `⟪ψ, A ψ⟫` equals its own complex conjugate. Proof: `conj ⟪ψ, Aψ⟫ = ⟪Aψ, ψ⟫ = ⟪ψ, Aψ⟫`, by
conjugate symmetry of the inner product and then symmetry of `A`. -/
theorem expectation_real {A : E →ₗ[ℂ] E} (hA : A.IsSymmetric) (ψ : E) :
conj ⟪ψ, A ψ⟫_ℂ = ⟪ψ, A ψ⟫_ℂ := by
rw [inner_conj_symm, hA]/-- **Eigenvalues of a symmetric operator are real** (`LinearMap.IsSymmetric.conj_eigenvalue_eq_self`):
measured values of an observable are real numbers. -/
theorem eigenvalue_real {A : E →ₗ[ℂ] E} (hA : A.IsSymmetric) {ev : ℂ}
(h : Module.End.HasEigenvalue A ev) : conj ev = ev :=
hA.conj_eigenvalue_eq_self h/-- **Eigenvectors of an observable for different eigenvalues are orthogonal.** If `A v = λ v`
and `A w = μ w` with real `λ ≠ μ`, then `⟪v, w⟫ = 0`. Proof:
`λ ⟪v, w⟫ = ⟪A v, w⟫ = ⟪v, A w⟫ = μ ⟪v, w⟫`, so `(λ − μ) ⟪v, w⟫ = 0`. Distinct measurement
outcomes are perfectly distinguishable states. -/
theorem eigenvectors_orthogonal {A : E →ₗ[ℂ] E} (hA : A.IsSymmetric) {v w : E} {lv lw : ℝ}
(hv : A v = (lv : ℂ) • v) (hw : A w = (lw : ℂ) • w) (hne : lv ≠ lw) : ⟪v, w⟫_ℂ = 0 := by
have h := hA v w
rw [hv, hw, inner_smul_left, inner_smul_right, Complex.conj_ofReal] at h
have h' : ((lv : ℂ) - lw) * ⟪v, w⟫_ℂ = 0 := by rw [sub_mul, h, sub_self]
rcases mul_eq_zero.mp h' with h0 | h0
· exact absurd (by exact_mod_cast sub_eq_zero.mp h0) hne
· exact h0/-- **The spectral theorem in finite dimensions.** A symmetric operator on an `n`-dimensional
complex inner product space has an orthonormal basis `e₀, …, e_{n−1}` of eigenvectors with real
eigenvalues `λᵢ`: `A eᵢ = λᵢ eᵢ`. In a state `ψ`, a measurement of `A` gives `λᵢ` with probability
`|⟪eᵢ, ψ⟫|²` (Born's rule). This is Mathlib's `LinearMap.IsSymmetric.apply_eigenvectorBasis`. -/
theorem spectral_theorem_finite [FiniteDimensional ℂ E] {A : E →ₗ[ℂ] E} (hA : A.IsSymmetric)
{n : ℕ} (hn : Module.finrank ℂ E = n) (i : Fin n) :
A (hA.eigenvectorBasis hn i) = (hA.eigenvalues hn i : ℂ) • hA.eigenvectorBasis hn i :=
hA.apply_eigenvectorBasis hn iThe uncertainty relation, proved from scratch exactly as in the human proof: symmetry turns into , then the triangle and Cauchy–Schwarz inequalities finish. The second version allows arbitrary real shifts ; taking them to be the expectation values gives .
/-- **Robertson's inequality, core estimate.** For symmetric `A, B` and any vector `ψ`,
`|⟪ψ, [A, B] ψ⟫| ≤ 2 ‖Aψ‖ ‖Bψ‖`, where `[A, B] = AB − BA`. Proof: by symmetry
`⟪ψ, ABψ⟫ = ⟪Aψ, Bψ⟫` and `⟪ψ, BAψ⟫ = ⟪Bψ, Aψ⟫`; then the triangle inequality and the
Cauchy–Schwarz inequality `|⟪u, v⟫| ≤ ‖u‖ ‖v‖`. -/
theorem robertson {A B : E →ₗ[ℂ] E} (hA : A.IsSymmetric) (hB : B.IsSymmetric) (ψ : E) :
‖⟪ψ, (A ∘ₗ B - B ∘ₗ A) ψ⟫_ℂ‖ ≤ 2 * ‖A ψ‖ * ‖B ψ‖ := by
have h1 : ⟪ψ, (A ∘ₗ B - B ∘ₗ A) ψ⟫_ℂ = ⟪A ψ, B ψ⟫_ℂ - ⟪B ψ, A ψ⟫_ℂ := by
rw [LinearMap.sub_apply, inner_sub_right, LinearMap.comp_apply, LinearMap.comp_apply,
← hA ψ (B ψ), ← hB ψ (A ψ)]
rw [h1]
calc ‖⟪A ψ, B ψ⟫_ℂ - ⟪B ψ, A ψ⟫_ℂ‖ ≤ ‖⟪A ψ, B ψ⟫_ℂ‖ + ‖⟪B ψ, A ψ⟫_ℂ‖ := norm_sub_le _ _
_ ≤ ‖A ψ‖ * ‖B ψ‖ + ‖B ψ‖ * ‖A ψ‖ :=
add_le_add (norm_inner_le_norm _ _) (norm_inner_le_norm _ _)
_ = 2 * ‖A ψ‖ * ‖B ψ‖ := by ring/-- **The Robertson–Heisenberg uncertainty relation.** For symmetric `A, B`, any `ψ` and any real
numbers `a, b`: `½ |⟪ψ, [A, B] ψ⟫| ≤ ‖(A − a)ψ‖ · ‖(B − b)ψ‖`. For a unit vector `ψ` and
`a = ⟨A⟩ = ⟪ψ, Aψ⟫`, `b = ⟨B⟩`, the right side is the product of standard deviations `σ_A σ_B`.
Proof: shifting by real scalars does not change the commutator, and the shifted operators are
still symmetric; the cross terms `a ⟪ψ, Bψ⟫` and `b ⟪Aψ, ψ⟫` cancel in pairs, leaving
`⟪Aψ, Bψ⟫ − ⟪Bψ, Aψ⟫`, which is bounded as in `robertson`. -/
theorem uncertainty {A B : E →ₗ[ℂ] E} (hA : A.IsSymmetric) (hB : B.IsSymmetric) (ψ : E)
(a b : ℝ) :
‖⟪ψ, (A ∘ₗ B - B ∘ₗ A) ψ⟫_ℂ‖ / 2 ≤ ‖A ψ - (a : ℂ) • ψ‖ * ‖B ψ - (b : ℂ) • ψ‖ := by
set u := A ψ - (a : ℂ) • ψ
set w := B ψ - (b : ℂ) • ψ
have hAψ : ⟪A ψ, ψ⟫_ℂ = ⟪ψ, A ψ⟫_ℂ := hA ψ ψ
have hBψ : ⟪B ψ, ψ⟫_ℂ = ⟪ψ, B ψ⟫_ℂ := hB ψ ψ
have h1 : ⟪ψ, (A ∘ₗ B - B ∘ₗ A) ψ⟫_ℂ = ⟪u, w⟫_ℂ - ⟪w, u⟫_ℂ := by
simp only [u, w, LinearMap.sub_apply, LinearMap.comp_apply, inner_sub_right, inner_sub_left,
inner_smul_left, inner_smul_right, Complex.conj_ofReal, ← hA ψ (B ψ), ← hB ψ (A ψ), hAψ,
hBψ]
ring
rw [h1]
have h2 : ‖⟪u, w⟫_ℂ - ⟪w, u⟫_ℂ‖ ≤ 2 * (‖u‖ * ‖w‖) :=
calc ‖⟪u, w⟫_ℂ - ⟪w, u⟫_ℂ‖ ≤ ‖⟪u, w⟫_ℂ‖ + ‖⟪w, u⟫_ℂ‖ := norm_sub_le _ _
_ ≤ ‖u‖ * ‖w‖ + ‖w‖ * ‖u‖ := add_le_add (norm_inner_le_norm _ _) (norm_inner_le_norm _ _)
_ = 2 * (‖u‖ * ‖w‖) := by ring
linarithThe ladder-operator algebra holds in any ring (noncomm_ring verifies the commutator identities), the eigenvector-shifting property in any complex vector space, and positivity of the number operator in any inner product space where is the adjoint of :
/-- **The number operator raises with the creation operator.** In any ring, if `a a† − a† a = 1`
and `N = a† a`, then `N a† − a† N = a†`. Proof: `N a† − a† N = a† (a a† − a† a) = a†`. -/
theorem number_raise {R : Type*} [Ring R] (a ad : R) (h : a * ad - ad * a = 1) :
(ad * a) * ad - ad * (ad * a) = ad :=
calc (ad * a) * ad - ad * (ad * a) = ad * (a * ad - ad * a) := by noncomm_ring
_ = ad := by rw [h, mul_one]/-- **…and lowers with the annihilation operator:** `N a − a N = −a`, because
`N a − a N = −(a a† − a† a) a`. -/
theorem number_lower {R : Type*} [Ring R] (a ad : R) (h : a * ad - ad * a = 1) :
(ad * a) * a - a * (ad * a) = -a :=
calc (ad * a) * a - a * (ad * a) = -((a * ad - ad * a) * a) := by noncomm_ring
_ = -a := by rw [h, one_mul]/-- **Ladder operators move between eigenvectors.** If `a a† − a† a = 1` on a complex vector space
and `N v = λ v` for `N = a† a`, then `N (a† v) = (λ + 1) a† v` and `N (a v) = (λ − 1) a v`. Each
application of `a†` adds one quantum `ℏω` of energy and each application of `a` removes one. -/
theorem raise_eigenvector {V : Type*} [AddCommGroup V] [Module ℂ V] (a ad : Module.End ℂ V)
(h : a * ad - ad * a = 1) {v : V} {l : ℂ} (hv : (ad * a) v = l • v) :
(ad * a) (ad v) = (l + 1) • ad v ∧ (ad * a) (a v) = (l - 1) • a v := by
have hv' : ad (a v) = l • v := by simpa only [Module.End.mul_apply] using hv
have hr := congrArg (fun T : Module.End ℂ V => T v) (number_raise a ad h)
have hl := congrArg (fun T : Module.End ℂ V => T v) (number_lower a ad h)
simp only [LinearMap.sub_apply, Module.End.mul_apply, LinearMap.neg_apply] at hr hl
rw [hv', map_smul] at hr hl
simp only [Module.End.mul_apply]
rw [sub_eq_iff_eq_add] at hr hl
constructor
· rw [hr, add_smul, one_smul]
abel
· rw [hl, sub_smul, one_smul]
abel/-- **The number operator is positive, so the ladder must stop.** If `a†` is the adjoint of `a`
(`⟪a† x, y⟫ = ⟪x, a y⟫`), then `⟪v, a† a v⟫ = ‖a v‖²`. Hence an eigenvalue `λ` of `N = a† a` with
eigenvector `v ≠ 0` satisfies `λ ‖v‖² = ‖a v‖² ≥ 0`: repeated lowering must end at a vector with
`a v₀ = 0`, the ground state, and the eigenvalues of `N` are `0, 1, 2, …`. -/
theorem number_nonneg (a ad : E →ₗ[ℂ] E) (hadj : ∀ x y, ⟪ad x, y⟫_ℂ = ⟪x, a y⟫_ℂ) (v : E) :
⟪v, ad (a v)⟫_ℂ = ((‖a v‖ ^ 2 : ℝ) : ℂ) := by
rw [← inner_conj_symm, hadj, inner_self_eq_norm_sq_to_K]
simpThe two no-go theorems: the trace argument for matrices, Wielandt's proof for any nontrivial normed algebra (induction for the commutator with , induction for , the norm estimate, and the Archimedean property), and its corollary for bounded operators on a nonzero normed space:
/-- **No matrices satisfy `[X, P] = c · 1` with `c ≠ 0`.** Taking traces: `tr(XP) = tr(PX)`, so the
left side has trace `0`, while `tr(c · 1) = c n ≠ 0` for `n ≥ 1`. Hence position and momentum
(`[X, P] = iℏ`) cannot be represented on a finite-dimensional Hilbert space. -/
theorem no_finite_ccr {n : ℕ} (hn : 0 < n) (X P : Matrix (Fin n) (Fin n) ℂ) {c : ℂ}
(hc : c ≠ 0) : X * P - P * X ≠ c • (1 : Matrix (Fin n) (Fin n) ℂ) := by
intro h
have ht := congrArg Matrix.trace h
rw [Matrix.trace_sub, Matrix.trace_mul_comm, sub_self, Matrix.trace_smul, Matrix.trace_one,
Fintype.card_fin, smul_eq_mul] at ht
have hn' : (n : ℂ) ≠ 0 := by exact_mod_cast hn.ne'
exact mul_ne_zero hc hn' ht.symm/-- **The Wintner–Wielandt theorem.** In a nontrivial normed algebra (for example the bounded
operators on a nonzero Banach space), no elements satisfy `x p − p x = c · 1` with `c ≠ 0`.
Wielandt's proof: by induction `x pⁿ⁺¹ − pⁿ⁺¹ x = (n + 1) c pⁿ`; hence no power of `p` vanishes
(otherwise the next lower one would too, down to `p⁰ = 1`); taking norms,
`(n + 1) |c| ‖pⁿ‖ ≤ 2 ‖x‖ ‖p‖ ‖pⁿ‖`, so `(n + 1) |c| ≤ 2 ‖x‖ ‖p‖` for every `n`, which is absurd. -/
theorem wintner_wielandt {A : Type*} [NormedRing A] [NormedAlgebra ℂ A] [Nontrivial A]
(x p : A) {c : ℂ} (hc : c ≠ 0) : x * p - p * x ≠ c • (1 : A) := by
intro h
-- The commutator with a power of `p`.
have key : ∀ n : ℕ, x * p ^ (n + 1) - p ^ (n + 1) * x = (((n : ℂ) + 1) * c) • p ^ n := by
intro n
induction n with
| zero => simp [h]
| succ n ih =>
have e : x * p ^ (n + 1 + 1) - p ^ (n + 1 + 1) * x =
(x * p ^ (n + 1) - p ^ (n + 1) * x) * p + p ^ (n + 1) * (x * p - p * x) := by
rw [pow_succ p (n + 1)]
noncomm_ring
rw [e, ih, h, smul_mul_assoc, mul_smul_comm, mul_one, ← pow_succ, ← add_smul]
congr 1
push_cast
ring
-- No power of `p` is zero.
have hne : ∀ n : ℕ, p ^ n ≠ 0 := by
intro n
induction n with
| zero => simp
| succ n ih =>
intro hp
have hk := key n
rw [hp, mul_zero, zero_mul, sub_zero] at hk
have hcoef : ((n : ℂ) + 1) * c ≠ 0 := mul_ne_zero (by exact_mod_cast n.succ_ne_zero) hc
exact ih ((smul_eq_zero.mp hk.symm).resolve_left hcoef)
-- The norm estimate.
have hbound : ∀ n : ℕ, ((n : ℝ) + 1) * ‖c‖ ≤ 2 * ‖x‖ * ‖p‖ := by
intro n
have hpos : 0 < ‖p ^ n‖ := norm_pos_iff.mpr (hne n)
have hp1 : ‖p ^ (n + 1)‖ ≤ ‖p ^ n‖ * ‖p‖ := by rw [pow_succ]; exact norm_mul_le _ _
have hlhs : ‖(((n : ℂ) + 1) * c) • p ^ n‖ = ((n : ℝ) + 1) * ‖c‖ * ‖p ^ n‖ := by
rw [norm_smul, norm_mul]
congr 2
exact_mod_cast Complex.norm_natCast (n + 1)
have hrhs : ‖x * p ^ (n + 1) - p ^ (n + 1) * x‖ ≤ 2 * ‖x‖ * ‖p‖ * ‖p ^ n‖ :=
calc ‖x * p ^ (n + 1) - p ^ (n + 1) * x‖
≤ ‖x * p ^ (n + 1)‖ + ‖p ^ (n + 1) * x‖ := norm_sub_le _ _
_ ≤ ‖x‖ * ‖p ^ (n + 1)‖ + ‖p ^ (n + 1)‖ * ‖x‖ :=
add_le_add (norm_mul_le _ _) (norm_mul_le _ _)
_ ≤ ‖x‖ * (‖p ^ n‖ * ‖p‖) + (‖p ^ n‖ * ‖p‖) * ‖x‖ := by gcongr
_ = 2 * ‖x‖ * ‖p‖ * ‖p ^ n‖ := by ring
rw [key n, hlhs] at hrhs
exact le_of_mul_le_mul_right hrhs hpos
-- Contradiction with the Archimedean property.
have hcpos : 0 < ‖c‖ := norm_pos_iff.mpr hc
obtain ⟨n, hn⟩ := exists_nat_gt (2 * ‖x‖ * ‖p‖ / ‖c‖)
rw [div_lt_iff₀ hcpos] at hn
have := hbound n
nlinarith/-- **Position and momentum cannot both be bounded.** On a nonzero complex normed space there
are no bounded operators `X, P` with `XP − PX = iℏ · 1` for `ℏ ≠ 0`. This is Wintner–Wielandt
applied to the normed algebra of bounded operators; so at least one of `X, P` is unbounded, and
then (by the Hellinger–Toeplitz theorem) it cannot be defined on the whole Hilbert space. -/
theorem no_bounded_ccr {F : Type*} [NormedAddCommGroup F] [NormedSpace ℂ F] [Nontrivial F]
(X P : F →L[ℂ] F) {ℏ : ℝ} (hℏ : ℏ ≠ 0) :
X * P - P * X ≠ (Complex.I * ℏ) • (1 : F →L[ℂ] F) :=
wintner_wielandt X P (mul_ne_zero Complex.I_ne_zero (by exact_mod_cast hℏ))Finally, the bounded case of unitary evolution: in a C*-algebra, for self-adjoint is unitary and the evolution operators form a one-parameter group.
/-- **Time evolution is a one-parameter unitary group** (bounded case). For a self-adjoint
element `H` of a C*-algebra (e.g. a Hermitian matrix), `U(t) = exp(i t H)` is unitary
(`selfAdjoint.expUnitary`) and `U(s + t) = U(s) U(t)`, because `sH` and `tH` commute
(`Commute.expUnitary_add`). The physicists' `e^{−itH/ℏ}` is `U(−t/ℏ)`. Stone's theorem — every
strongly continuous unitary group arises this way from a possibly unbounded self-adjoint
generator — is not yet in Mathlib. -/
theorem evolution_group {A : Type*} [NormedRing A] [NormedAlgebra ℂ A] [StarRing A]
[ContinuousStar A] [CompleteSpace A] [StarModule ℂ A] (H : selfAdjoint A) (s t : ℝ) :
selfAdjoint.expUnitary ((s + t) • H) =
selfAdjoint.expUnitary (s • H) * selfAdjoint.expUnitary (t • H) := by
rw [add_smul]
exact Commute.expUnitary_add (((Commute.refl (H : A)).smul_left s).smul_right t)Not formalised (and not yet in Mathlib): unbounded operators with domains, self-adjointness in the unbounded sense, the spectral theorem for unbounded self-adjoint operators, Stone's theorem, position and momentum on , and the completeness of the Hermite functions. The formal development covers the algebra and the bounded-operator theorems on which those analytic results build — and, in the Wintner–Wielandt theorem, proves formally why the unbounded theory is unavoidable.
Experiments: computing the oscillator
The first experiment replaces by a finite-difference matrix on a grid in and computes its lowest eigenvalues. They approach , and halving the grid spacing divides the error by about (a second-order method). The ground state's uncertainty product comes out as .
"""The harmonic oscillator spectrum from a finite-difference Hamiltonian.
In units hbar = m = omega = 1 the Hamiltonian is H = -(1/2) d^2/dx^2 + x^2/2.
We replace it by a symmetric tridiagonal matrix on a grid of N points in
[-L, L] (Dirichlet boundary) and compute its lowest eigenvalues with numpy.
They approach n + 1/2, and halving the grid spacing divides the error by
about 4 (a second-order method). From the ground-state eigenvector we also
compute the uncertainty product sigma_x sigma_p, which is 1/2: the minimum
allowed by the Heisenberg relation.
"""
import numpy as np
def hamiltonian(n_points, half_width):
"""Finite-difference matrix for -(1/2) d^2/dx^2 + x^2/2 and its grid."""
if n_points < 3:
raise ValueError("need at least 3 grid points")
x = np.linspace(-half_width, half_width, n_points)
h = x[1] - x[0]
main = 1.0 / h ** 2 + 0.5 * x ** 2
off = np.full(n_points - 1, -0.5 / h ** 2)
return np.diag(main) + np.diag(off, 1) + np.diag(off, -1), x
def lowest_levels(n_points, half_width, count):
"""The `count` smallest eigenvalues of the discretised Hamiltonian."""
matrix, _ = hamiltonian(n_points, half_width)
return np.linalg.eigvalsh(matrix)[:count]
def ground_state_uncertainty(n_points, half_width):
"""sigma_x * sigma_p for the lowest eigenvector (grid approximation)."""
matrix, x = hamiltonian(n_points, half_width)
h = x[1] - x[0]
_, vecs = np.linalg.eigh(matrix)
psi = vecs[:, 0] / np.sqrt(h)
mean_x = h * np.sum(x * psi ** 2)
var_x = h * np.sum((x - mean_x) ** 2 * psi ** 2)
dpsi = np.gradient(psi, h)
var_p = h * np.sum(dpsi ** 2)
return float(np.sqrt(var_x * var_p))
def main():
half_width, count = 8.0, 6
print("Lowest eigenvalues of the discretised oscillator (exact: n + 1/2):")
print(" N h E_0 E_1 E_2 E_5")
errors = []
for n_points in [161, 321, 641]:
levels = lowest_levels(n_points, half_width, count)
h = 2 * half_width / (n_points - 1)
print(f" {n_points:>4} {h:.3f} {levels[0]:.5f} {levels[1]:.5f}"
f" {levels[2]:.5f} {levels[5]:.5f}")
errors.append(abs(levels[5] - 5.5))
print("error in E_5 for the three grids:",
", ".join(f"{e:.2e}" for e in errors))
print("ratios:", ", ".join(f"{a / b:.2f}" for a, b in zip(errors, errors[1:])),
"(about 4: the error is O(h^2))")
print()
u = ground_state_uncertainty(641, half_width)
print(f"Ground state: sigma_x * sigma_p = {u:.5f}; the exact value is the")
print("Heisenberg minimum 1/2 (the difference is discretisation error).")
print("The spacing E_(n+1) - E_n = 1 = hbar omega is the energy quantum,")
print("and E_0 = 1/2 is the zero-point energy.")
print()
print("Epistemic status: floating-point eigenvalues of a finite matrix")
print("approximating an unbounded operator on a truncated interval. The")
print("agreement with n + 1/2 is numerical evidence; the exact spectrum is")
print("the theorem proved in the lesson.")
if __name__ == "__main__":
main()The second truncates the ladder operators to levels. The commutator is then the identity except in the last diagonal entry, , so that its trace is — the trace argument made visible: truncation must break the commutation relation somewhere. The number operator still has eigenvalues , and Robertson's inequality holds for all states, with equality for the ground state.
"""Ladder operators on N levels: where the commutation relation must break.
On the span of the first N oscillator states, the annihilation operator a is
the N x N matrix with sqrt(1), ..., sqrt(N - 1) above the diagonal. We compute
the commutator [a, a^dagger] exactly (its entries are integers): it is the
identity except for the last diagonal entry, 1 - N, which makes the trace 0,
as it must be for any commutator of matrices. With X = (a + a^dagger)/sqrt 2
and P = (a - a^dagger)/(i sqrt 2) we check the Robertson inequality
sigma_X sigma_P >= |<[X, P]>| / 2 for number states and random states.
"""
import math
import random
import numpy as np
def ladder_commutator_diagonal(n_levels):
"""Diagonal of [a, a^dagger] computed exactly: entries (k+1) - k, last 1-N."""
if n_levels < 1:
raise ValueError("need at least one level")
a_ad = [k + 1 if k < n_levels - 1 else 0 for k in range(n_levels)]
ad_a = list(range(n_levels))
return [p - q for p, q in zip(a_ad, ad_a)]
def annihilation(n_levels):
"""The N x N annihilation matrix a (complex)."""
return np.diag(np.sqrt(np.arange(1, n_levels)), 1).astype(complex)
def position_momentum(n_levels):
"""X = (a + a^dagger)/sqrt(2), P = (a - a^dagger)/(i sqrt(2))."""
a = annihilation(n_levels)
ad = a.conj().T
return (a + ad) / math.sqrt(2), (a - ad) / (1j * math.sqrt(2))
def robertson_sides(state, x_op, p_op):
"""(sigma_X * sigma_P, |<[X, P]>| / 2) for a normalised state vector."""
def mean(op):
return np.vdot(state, op @ state)
var_x = (mean(x_op @ x_op) - mean(x_op) ** 2).real
var_p = (mean(p_op @ p_op) - mean(p_op) ** 2).real
comm = mean(x_op @ p_op - p_op @ x_op)
return math.sqrt(max(var_x, 0) * max(var_p, 0)), abs(comm) / 2
def main():
n = 8
diag = ladder_commutator_diagonal(n)
print(f"N = {n}: diagonal of [a, a^dagger] = {diag}")
print(f"trace = {sum(diag)} (a commutator of matrices always has trace 0)")
a = annihilation(n)
number = np.linalg.eigvalsh(a.conj().T @ a)
print("eigenvalues of a^dagger a:",
" ".join(f"{float(v):.3f}" for v in number))
x_op, p_op = position_momentum(n)
print()
print("Number states |k>: sigma_X sigma_P versus |<[X,P]>|/2")
for k in range(n):
state = np.zeros(n, dtype=complex)
state[k] = 1
lhs, rhs = robertson_sides(state, x_op, p_op)
print(f" k = {k}: {lhs:.4f} >= {rhs:.4f}")
print("For k < N - 1 these are k + 1/2 >= 1/2, as for the true oscillator;")
print("the top level feels the truncation: <[X, P]> = i(1 - N) there.")
rng = random.Random(1925)
worst = math.inf
for _ in range(200):
v = np.array([complex(rng.gauss(0, 1), rng.gauss(0, 1)) for _ in range(n)])
v /= np.linalg.norm(v)
lhs, rhs = robertson_sides(v, x_op, p_op)
worst = min(worst, lhs - rhs)
print(f"200 random states: min of sigma_X sigma_P - |<[X,P]>|/2 = {worst:.4f}")
print()
print("Epistemic status: the commutator diagonal is exact integer")
print("arithmetic; the eigenvalues and uncertainty products are floating")
print("point for one N and finitely many states. Robertson's inequality")
print("and the trace argument are proved in the lesson and in Lean.")
if __name__ == "__main__":
main()Both are floating-point (or exact integer) computations with finite matrices: numerical evidence about the infinite-dimensional operators, whose spectrum is the theorem proved above.
Seeing the oscillator and a spreading wave packet
The potential and the first four eigenfunctions , each drawn at the height of its energy . Count the nodes ( has zeros), notice the even–odd alternation, and see that each eigenfunction leaks a little beyond the classical turning points where .
Harmonic oscillator: energy levels and eigenfunctions
Move the sliders and trace along the curves to read off values.
- V(x) = x²/2
- h₀ at E = 1/2
- h₁ at E = 3/2
- h₂ at E = 5/2
- h₃ at E = 7/2
- V(x) = x²/2: y = 0.5
- h₀ at E = 1/2: y = 0.8645
- h₁ at E = 3/2: y = 2.0154
- h₂ at E = 5/2: y = 2.7577
- h₃ at E = 7/2: y = 3.2896
A free Gaussian wave packet (, initial width ): move the time slider and watch spread while its area stays . Its momentum distribution never changes; the spreading is the position uncertainty catching up with the momentum uncertainty.
A free Gaussian wave packet spreading
Move the sliders and trace along the curves to read off values.
- |ψ(x, t)|²
- Signed area: above the axis counts as positive, below (hatched) as negative
- |ψ(x, t)|²: y = 0.2076
- Signed area from −8 to 8 ≈ 1 (numerical integration)
The Pauli matrix acting on real amplitudes is the reflection in the line : its eigenvectors and are orthogonal with eigenvalues , as for every observable. Try the other presets: a rotation (not symmetric) has no real eigenvectors at all.
An observable on a real qubit
Symmetric matrices have orthogonal invariant lines.
- image of the grid
- image of the unit square
- image of the flag
- before the transformation
- invariant line
Along the way the determinant passes through 0: no continuous motion turns the flag into its mirror image without flattening it at some moment.
The columns of A are the images of e₁ = (1, 0) and e₂ = (0, 1): Ae₁ = (0, 1), Ae₂ = (1, 0)
det A = ad − bc = −1
The unit square (area 1) becomes a parallelogram of area |det A| = 1. Since det A < 0, orientation is reversed: the flag is mirrored and the small arc turns clockwise.
Invariant lines (real eigenvectors)
- λ₁ = 1, v₁ = (1, 1)
- λ₂ = −1, v₂ = (1, −1)
Vectors on the two dashed lines are only stretched, by the factors λ₁ = 1 and λ₂ = -1; every other direction is turned. A negative eigenvalue flips the vectors on its line to the opposite side.
Exercises
1. Mathematical foundations of quantum mechanics
Warm-upHumanA qubit is in the state . Measuring , what is the probability of the outcome ?
2. Mathematical foundations of quantum mechanics
Warm-upHumanA three-level system has an observable with orthonormal eigenvectors and eigenvalues . In the state , what is the expectation ?
3. Mathematical foundations of quantum mechanics
CoreHumanIn the state (spin up along ), compare with , using .
4. Mathematical foundations of quantum mechanics
CoreHumanOn let with domain . Which statement is true?
5. Mathematical foundations of quantum mechanics
CoreHumanThe proof of the Hellinger–Toeplitz theorem shows that the graph of an everywhere-defined symmetric operator is closed. Which theorem then gives that is bounded?
6. Mathematical foundations of quantum mechanics
CoreHumanWith , and , compute .
7. Mathematical foundations of quantum mechanics
CoreFormalWhich Lean statement correctly formalises no complex matrices satisfy with (and is provable)?
8. Mathematical foundations of quantum mechanics
StretchHumanIn Wielandt's proof that () is impossible for bounded operators, one needs for every . Why does no power of vanish?
9. Mathematical foundations of quantum mechanics
StretchHumanWhich normalised states satisfy exactly? Select all that apply.
10. Mathematical foundations of quantum mechanics
CoreComputationalWrite expectation(A, psi) returning for a square matrix A (list of rows) and a vector psi (list of complex numbers), and std_dev(A, psi) returning for a normalised psi and Hermitian A. The tests check Robertson's inequality for Pauli matrices.
Common misconceptions
Misconception
"Unbounded operators can be treated like matrices." Formal manipulations ignore domains at their peril. A symmetric operator need not be self-adjoint (momentum with Dirichlet conditions on an interval has spectrum ), different self-adjoint extensions describe different physics, and identities such as or Robertson's inequality hold only on suitable domains — the angle–angular momentum example violates the naive uncertainty relation. No symmetric operator defined everywhere is unbounded (Hellinger–Toeplitz), and the commutation relation has no bounded solution (Wintner–Wielandt).
Misconception
"The uncertainty principle is about clumsy measurements disturbing the system." Robertson's inequality is a statement about a single state: the spreads of the probability distributions of and of in that state, each obtainable by measuring many identically prepared copies, cannot both be small. It is a property of non-commuting operators — like the fact that a function and its Fourier transform cannot both be sharply concentrated — not of instruments. Error–disturbance relations exist, but they are different theorems.
Misconception
"A state is a vector." A state is a ray: and give identical predictions. The state space of a qubit is the sphere , not the unit sphere . Relative phases between components are physical, which is why interference exists.
Misconception
"The wave function is the probability density." The density is ; itself is a complex amplitude, and amplitudes — not probabilities — add when alternatives are not distinguished. The double-slit pattern is the cross term.
Misconception
"The lowest energy of an oscillator is zero." It is : a state with energy would need , which the uncertainty relation forbids. Zero-point energy has measurable consequences, from the stability of liquid helium at absolute zero to the Casimir effect.
Many ways of seeing
Analysis— Fourier duality and Hermite functions
Position and momentum are exchanged by the Fourier transform, , and the uncertainty relation is a theorem of harmonic analysis: for with , with the normalisation — a function and its Fourier transform cannot both be concentrated. The Hermite functions diagonalise the Fourier transform: (with the unitary normalisation ), because commutes with . So the fractional powers are the time evolution of the oscillator: the quantum oscillator rotates phase space, and its evolution over a quarter period is the Fourier transform, up to a phase. See harmonic analysis and functional analysis.
Algebra— The Heisenberg group and the Stone–von Neumann theorem
The commutation relations define the Heisenberg Lie algebra, spanned by with ; exponentiating gives the Weyl relations between bounded unitary operators, which avoid domain problems. The Stone–von Neumann theorem (Stone 1930, von Neumann 1931) says that every irreducible strongly continuous unitary representation of the Weyl relations with is unitarily equivalent to the Schrödinger representation on : matrix mechanics and wave mechanics had to agree. In infinitely many degrees of freedom (quantum field theory) uniqueness fails, and inequivalent representations describe different phases of matter. Abstractly, observables form a C*-algebra and states are positive normalised functionals on it; the Gelfand–Naimark–Segal construction recovers a Hilbert space from each state. See representation theory.
Geometry— Projective Hilbert space and the Bloch sphere
Pure states form the projective space , a Kähler manifold with the Fubini–Study metric, and transition probabilities are geometric: , where is the Fubini–Study distance. For a qubit, is the Riemann sphere, isometric (up to scale) to the Bloch sphere , and unitary evolution acts by rotations: acting on descends to acting on . Schrödinger evolution is a Hamiltonian flow on for the symplectic form of the Fubini–Study metric, with the expectation as Hamiltonian function, and a state transported around a closed loop returns with a geometric phase equal to a symplectic area — the Berry phase (1984). The classical limit, and the passage from classical to quantum observables, is the subject of geometric quantisation on symplectic manifolds.
Probability— Born's rule and non-commutative probability
For a single observable and state , the spectral theorem produces an ordinary probability measure on , and becomes a random variable. For commuting observables, a joint spectral measure gives a joint distribution. For non-commuting ones there is in general no joint distribution reproducing all their statistics: the Kochen–Specker theorem (1967) rules out non-contextual hidden variables in dimension , and Bell's theorem (1964) shows that the correlations of entangled pairs violate inequalities that any local probabilistic model must satisfy (the CHSH bound is exceeded up to , Tsirelson's bound). Quantum theory is a genuinely non-commutative probability theory, whose "random variables" are self-adjoint operators and whose "expectation" is the state . See measure-theoretic probability.
Topology— Spin and the double cover of the rotation group
Physical rotations form , whose fundamental group is : a rotation by about an axis is a loop that cannot be contracted, though going around it twice can. Because states are rays, a symmetry need only act projectively, and Wigner's theorem plus Bargmann's analysis show that the projective representations of are exactly the representations of its universal (double) cover . Those that do not descend to are the half-integer spins: rotating an electron's state by multiplies it by , an effect observed in neutron interferometry (1975). The topology of the rotation group is therefore visible in the classification of particles into bosons and fermions. See the fundamental group and Lie groups.
History and context
- Max Planck (1900) quantised the energy of radiation oscillators; Albert Einstein (1905) the light itself; Niels Bohr (1913) the atom, with the frequency rule. Satyendra Nath Bose (1924) found the statistics of photons and Louis de Broglie (1924) proposed matter waves.
- Werner Heisenberg (1925) founded matrix mechanics, developed with Max Born and Pascual Jordan, who found the commutation relation; Paul Dirac (1925–1930) gave its algebraic form and the transformation theory; Erwin Schrödinger (1926) found wave mechanics and showed its equivalence with matrix mechanics; Born (1926) gave the probability interpretation.
- Heisenberg (1927) stated the uncertainty principle; Earle Kennard (1927) proved ; Hermann Weyl (1927–1928) introduced the Weyl relations and group-theoretic methods; Howard Percy Robertson (1929) proved the general inequality.
- John von Neumann (Mathematische Grundlagen der Quantenmechanik, 1932) created the theory of unbounded self-adjoint operators and their spectral theorem for this purpose; Marshall Stone (1930, 1932) proved his theorem on unitary groups and, with von Neumann, the uniqueness theorem. Ernst Hellinger and Otto Toeplitz (1910), Aurel Wintner (1947) and Helmut Wielandt (1949) proved the theorems on unboundedness; Israel Gelfand, Mark Naimark (1943) and Irving Segal (1947) founded the C*-algebraic approach.
- Tosio Kato (1951) proved the self-adjointness of atomic Hamiltonians, putting the hydrogen atom and heavier atoms on rigorous ground; John Bell (1964) and Simon Kochen and Ernst Specker (1967) proved the no-go theorems that underlie today's quantum information science.
Further reading
- Brian C. Hall, Quantum Theory for Mathematicians (2013) — the closest match to this lesson: unbounded operators, the spectral theorem, Stone's theorem, the oscillator, with full proofs.
- Leon A. Takhtajan, Quantum Mechanics for Mathematicians (2008) — from classical mechanics to quantisation, path integrals and more.
- Michael Reed and Barry Simon, Methods of Modern Mathematical Physics I: Functional Analysis (1972) and II: Fourier Analysis, Self-Adjointness (1975) — the standard reference for the operator theory.
- Gerald Teschl, Mathematical Methods in Quantum Mechanics (2nd ed., 2014) — concise, rigorous, freely available from the author.
- John von Neumann, Mathematical Foundations of Quantum Mechanics (1932; English translation 1955) — the founding text.
- P. A. M. Dirac, The Principles of Quantum Mechanics (4th ed., 1958) — the physicist's classic, for intuition and notation.