The Göttingen Threads
Between 1850 and 1930, a small university town in Lower Saxony became the mathematical capital of the world. Bernhard Riemann (1826–1866) arrived as Gauss's shy doctoral student and, in a life cut short at thirty-nine, redrew the maps of analysis, geometry, and number theory. David Hilbert (1862–1943) arrived a generation later from Königsberg and made Göttingen the engine of modern axiomatic mathematics — while championing, extending, and finally institutionalizing Riemann's boldest ideas.
The Visionary of Concepts
Son of a poor Lutheran pastor from Breselenz. Painfully shy, chronically ill, and almost supernaturally original. He published little — roughly a dozen papers — but nearly every one founded a field: Riemann surfaces, Riemannian geometry, the Riemann integral, the zeta function's analytic theory. He believed mathematics should proceed from ideas rather than calculation: "through the concepts, not the formulas."
The Architect of Foundations
Königsberg-born, supremely confident, and organizationally brilliant. He conquered invariant theory, re-axiomatized Euclid, invented (with his school) the abstract theory of infinite-dimensional spaces that bears his name, and in 1900 handed the twentieth century its agenda: twenty-three problems. His credo, carved on his tombstone: Wir müssen wissen — wir werden wissen. We must know — we will know.
A shared timeline
Riemann born in Breselenz, Kingdom of Hanover.
Doctoral thesis under Gauss: foundations of complex function theory and Riemann surfaces. Gauss — famously stingy with praise — calls it work of "a gloriously fertile originality."
Habilitation lecture Über die Hypothesen, welche der Geometrie zu Grunde liegen — the birth of Riemannian geometry, delivered to a mostly uncomprehending audience with one crucial exception: Gauss.
Elected to the Berlin Academy; submits his only number-theory paper, eight pages that contain the Riemann Hypothesis.
Hilbert born in Königsberg, Prussia.
Riemann dies of tuberculosis at Selasca, Italy, aged 39.
Hilbert's Basis Theorem and Nullstellensatz demolish and rebuild invariant theory. Gordan: "This is not mathematics. This is theology."
Grundlagen der Geometrie: Euclid re-founded on 20 rigorous axioms.
The Paris address: 23 problems for the new century. Problem 8 is Riemann's Hypothesis.
Integral equations and spectral theory — the seed of Hilbert space, later made axiomatic by von Neumann for quantum mechanics.
Hilbert derives the field equations of general relativity from a variational principle — written in the language Riemann invented in 1854.
Hilbert's Program: secure all mathematics by finitary consistency proofs. Gödel (1931) shows the dream, as stated, is impossible.
Hilbert dies in wartime Göttingen, his school scattered by the Nazi purges of 1933.
If I were to awaken after having slept for a thousand years, my first question would be: Has the Riemann Hypothesis been proven?— attributed to David Hilbert
That quotation — probably apocryphal, endlessly repeated because it ought to be true — captures the relationship this guide explores. Hilbert did not merely admire Riemann; he wove Riemann's threads into the fabric of twentieth-century mathematics. We follow four of those threads: complex analysis, geometry, the zeta function, and the idea of space itself — ending where they braid together in spectral theory and the Hilbert–Pólya dream.
Functions of a Complex Variable
Riemann's 1851 doctoral thesis asked a deceptively simple question: what does it mean for a function of a complex variable \(z = x + iy\) to be differentiable? The answer turned out to be one of the most restrictive — and therefore most powerful — conditions in all of analysis.
For a real function, differentiability is a mild, local smoothness condition. But in the complex plane, the limit \(\lim_{h\to 0} \frac{f(z+h)-f(z)}{h}\) must give the same value no matter which direction \(h\) approaches zero from — along the real axis, the imaginary axis, or any spiral in between. Writing \(f(z) = u(x,y) + i\,v(x,y)\) and comparing the horizontal and vertical approaches forces the celebrated system:
Functions satisfying these — holomorphic functions — are astonishingly rigid. Differentiable once, they are automatically differentiable infinitely often, and equal to their own Taylor series. Both \(u\) and \(v\) are harmonic, \(\nabla^2 u = \nabla^2 v = 0\), tying complex analysis to potential theory, fluid flow, and electrostatics — physical intuitions Riemann used freely. His Dirichlet principle asserted that a harmonic function with given boundary values always exists because it minimizes the energy integral
Weierstrass pointed out that minimizers need not exist in general, and for forty years Riemann's beautiful existence arguments hung under a cloud. It was Hilbert, in 1900–1904, who rehabilitated the Dirichlet principle with a rigorous direct method of the calculus of variations — the first great instance of Hilbert repairing a Riemann bridge rather than demolishing it. The direct method he invented became a cornerstone of modern PDE theory and, not coincidentally, one of the roads into Hilbert space.
Every simply connected open set \(\Omega \subsetneq \mathbb{C}\) can be mapped one-to-one and holomorphically onto the open unit disk. Any two such regions — a half-plane, a square, the interior of a snowflake curve — are conformally identical. Geometry of shape dissolves; only topology and analysis remain.
Conformal maps preserve angles: an infinitesimal grid of perpendicular lines is carried to a grid of perpendicular curves. The widget below applies famous conformal maps to a Cartesian grid so you can watch angles survive while shapes distort.
Octave Lab 1 · Verifying Cauchy–Riemann numerically Riemann
GNU Octave has native complex arithmetic, which makes checking holomorphy a three-line experiment. We test \(f(z)=z^2\) (holomorphic) against \(g(z)=\bar z\) (famously not).
% Cauchy-Riemann residuals on a grid: holomorphic vs anti-holomorphic % f(z) = z.^2 satisfies CR; g(z) = conj(z) violates it everywhere. h = 1e-6; [x, y] = meshgrid(linspace(-2, 2, 41)); z = x + 1i*y; function R = cr_residual(f, z, h) % partial derivatives of u,v by central differences ux = real(f(z+h) - f(z-h)) / (2*h); vx = imag(f(z+h) - f(z-h)) / (2*h); uy = real(f(z+1i*h) - f(z-1i*h)) / (2*h); vy = imag(f(z+1i*h) - f(z-1i*h)) / (2*h); R = abs(ux - vy) + abs(uy + vx); % zero iff CR holds endfunction Rf = cr_residual(@(z) z.^2, z, h); Rg = cr_residual(@(z) conj(z), z, h); printf("max CR residual, f=z^2 : %.3e\n", max(Rf(:))); printf("max CR residual, g=conj z: %.3e\n", max(Rg(:))); % visualize |f'(z)| as the local grid-stretch factor fp = (z+h).^2; % cheap forward map for the picture figure; imagesc(linspace(-2,2,41), linspace(-2,2,41), abs(2*z)); axis xy equal tight; colorbar; title("|f'(z)| = |2z| : conformal stretch factor of w = z^2");
Riemann Surfaces & Multivalued Functions
What is \(\sqrt{z}\)? For \(z = 4\) it might be \(2\) or \(-2\); circle once around the origin and the two answers trade places. Rather than banning such functions, Riemann built them a better home: a new surface on which they become honest, single-valued citizens.
Write \(z = re^{i\theta}\), so \(\sqrt{z} = \sqrt{r}\,e^{i\theta/2}\). Increase \(\theta\) by a full turn \(2\pi\), and the square root picks up a factor \(e^{i\pi} = -1\): the function has monodromy. Riemann's move — made in his 1851 thesis and developed in his 1857 masterpiece on Abelian functions — was to take two copies of the complex plane, slit each along the negative real axis, and glue the top edge of each slit to the bottom edge of the other. On the resulting two-sheeted Riemann surface, walking around the origin carries you smoothly from sheet one to sheet two and back, and \(\sqrt{z}\) never contradicts itself.
Before Riemann: a function is a formula living on a fixed plane, and multivaluedness is a pathology. After Riemann: the natural domain of an analytic function is a surface determined by the function itself — its branch points, its sheets, its topology. Analysis becomes geometry.
The topology of that surface carries hard analytic content. For an algebraic curve, the genus \(g\) — the number of "handles" — governs everything, culminating in the Riemann–Roch theorem relating zeros and poles a function can have:
Below, a domain-coloring view of multivalued behavior: hue encodes the argument \(\arg f(z)\), brightness encodes \(|f(z)|\). For \(\sqrt{z}\) and \(\log z\), watch the hue tear along the branch cut — the seam where Riemann glued his sheets.
Octave Lab 2 · Walking around a branch point Riemann
We trace \(\sqrt{z}\) continuously along a circle around the origin — choosing the continuous branch by hand, as if walking on the surface — and watch it return with the opposite sign.
% Monodromy of sqrt(z): analytic continuation around the origin. % We DO NOT call sqrt() blindly (it would snap to the principal branch); % we integrate the phase continuously, as motion on the Riemann surface. N = 400; theta = linspace(0, 2*pi, N); % one full loop z = exp(1i*theta); % unit circle, r = 1 w = exp(1i*theta/2); % continuous branch of sqrt(z) printf("start : sqrt(1) chosen as %+.4f%+.4fi\n", real(w(1)), imag(w(1))); printf("finish: after one loop %+.4f%+.4fi\n", real(w(end)), imag(w(end))); printf("monodromy factor: %+.4f (should be -1)\n", real(w(end)/w(1))); % Two loops restore the original value: the surface has exactly 2 sheets. theta2 = linspace(0, 4*pi, 2*N); w2 = exp(1i*theta2/2); printf("after two loops : %+.4f (back to +1)\n", real(w2(end))); % Render the surface: Re(sqrt) as height over the plane, both sheets [r, t] = meshgrid(linspace(0.02,1.5,40), linspace(0,4*pi,160)); X = r.*cos(t); Y = r.*sin(t); W = sqrt(r).*exp(1i*t/2); figure; surf(X, Y, real(W), imag(W), "EdgeColor", "none"); title("Riemann surface of sqrt(z): 2 sheets, glued along a cut"); xlabel("Re z"); ylabel("Im z"); zlabel("Re sqrt(z)"); view(40, 24);
The Riemann Integral
Buried inside Riemann's 1854 habilitation paper on trigonometric series is a question no one had asked with full seriousness: which functions can be integrated at all? His answer gave integration its first rigorous definition — the one every calculus student still learns first.
Partition \([a,b]\) into subintervals \(a = x_0 < x_1 < \cdots < x_n = b\), pick sample points \(\xi_i \in [x_{i-1}, x_i]\), and form the Riemann sum:
The definition's genius is what it does not require: no formula, no continuity everywhere, no antiderivative. Riemann immediately exhibited a function discontinuous on a dense set that is nonetheless integrable — detaching integrability from continuity and opening the door that Lebesgue would walk through in 1902. The precise criterion (proved later): \(f\) is Riemann-integrable iff it is bounded and continuous almost everywhere.
Octave Lab 3 · Convergence rates of quadrature rules Riemann
Different sampling rules converge at different speeds. Midpoint and trapezoid err as \(O(n^{-2})\); left/right endpoints only \(O(n^{-1})\). One loop in Octave shows the exponents falling out of a log–log slope.
% Convergence of Riemann sums for I = integral of e^(-x^2), x in [0,2] f = @(x) exp(-x.^2); a = 0; b = 2; I_true = sqrt(pi)/2 * erf(2); % exact value Ns = round(logspace(1, 4, 12)); err = zeros(numel(Ns), 3); % [left, midpoint, trapezoid] for k = 1:numel(Ns) n = Ns(k); dx = (b-a)/n; xl = a + (0:n-1)*dx; % left endpoints xm = xl + dx/2; % midpoints err(k,1) = abs(sum(f(xl))*dx - I_true); err(k,2) = abs(sum(f(xm))*dx - I_true); err(k,3) = abs((sum(f(xl)) - f(a)/2 + f(b)/2)*dx - I_true); endfor % empirical order = -slope of log(err) vs log(n) p = zeros(1,3); for j = 1:3 c = polyfit(log(Ns), log(err(:,j))', 1); p(j) = -c(1); endfor printf("empirical orders: left %.2f midpoint %.2f trapezoid %.2f\n", p); loglog(Ns, err, "-o"); grid on; legend("left O(1/n)", "midpoint O(1/n^2)", "trapezoid O(1/n^2)"); xlabel("n subintervals"); ylabel("|error|"); title("Riemann sums: convergence orders on a log-log plot");
On the Hypotheses Which Lie at the Bases of Geometry
On June 10, 1854, to qualify as a lecturer, Riemann delivered a talk with almost no formulas — Gauss had chosen, from his three proposed topics, the one Riemann had prepared least. In under an hour he dissolved two thousand years of assumptions about what space is, and supplied the mathematics Einstein would need sixty-one years later.
Riemann's radical proposal: geometry is not given in advance. A space — he coined the term Mannigfaltigkeit, manifold — is an \(n\)-dimensional continuum of points, and its geometry is an additional structure laid on top: a rule for measuring infinitesimal distance that may vary from point to point. That rule is the metric tensor:
From the metric alone flow all geometric notions: lengths of curves, angles, volumes, geodesics (paths that locally minimize length, satisfying \(\ddot x^k + \Gamma^k_{ij}\dot x^i \dot x^j = 0\)), and above all curvature. Riemann generalized Gauss's curvature of surfaces to any dimension via what we now call the Riemann curvature tensor \(R^{\,l}_{\;ijk}\) — the exact obstruction to a space being flat. On a surface, one number survives: the Gaussian curvature \(K\), and it controls how geodesic triangles behave:
Elliptic geometry
Geodesics (great circles) reconverge; triangles are fat, angle sums exceed 180°; space closes on itself with finite volume and no boundary — Riemann's proposed cosmology, decades before relativity.
Hyperbolic geometry
Geodesics diverge exponentially; triangles are thin, angle sums fall below 180°; through a point, infinitely many "parallels" miss a given line. Consistent, complete, and fatal to Euclid's monopoly.
The lecture's closing sentences are its most prophetic. Riemann speculates that in the very small, the metric relations of space might not follow the assumptions of geometry, and that the "reason for the metric relations" must then be sought in binding forces acting upon it — that is, in physics. When Hilbert and Einstein raced to the field equations of general relativity in November 1915, the arena was exactly Riemann's: a 4-dimensional manifold whose metric \(g_{\mu\nu}\) is dynamical. Hilbert derived the equations from the elegantly minimal Einstein–Hilbert action,
Octave Lab 4 · Geodesics on a curved surface Riemann
We integrate the geodesic equation on the unit sphere in coordinates \((\theta,\phi)\), where the metric is \(ds^2 = d\theta^2 + \sin^2\!\theta \, d\phi^2\), and confirm the two signatures of positive curvature: geodesics are great circles, and triangle angle sums exceed \(\pi\).
% Geodesics on S^2 with metric ds^2 = dth^2 + sin(th)^2 dph^2 % Nonzero Christoffels: G^th_(ph,ph) = -sin th cos th, G^ph_(th,ph) = cot th function dy = geo_rhs(t, y) th = y(1); ph = y(2); dth = y(3); dph = y(4); dy = [ dth; dph; sin(th)*cos(th)*dph^2; % theta'' -2*cot(th)*dth*dph ]; % phi'' endfunction % launch from the equator, 40 degrees north of due east th0 = pi/2; ph0 = 0; alpha = 40*pi/180; y0 = [th0; ph0; -sin(alpha); cos(alpha)/sin(th0)]; % unit speed [t, Y] = ode45(@geo_rhs, [0 2*pi], y0); % a geodesic on the unit sphere is a great circle: verify it lies on a % plane through the origin => smallest singular value of XYZ is ~ 0 X = sin(Y(:,1)).*cos(Y(:,2)); Yc= sin(Y(:,1)).*sin(Y(:,2)); Z = cos(Y(:,1)); s = svd([X Yc Z]); printf("planarity residual (min singular value): %.2e\n", s(end)); % spherical triangle: three right angles => angle sum = 270 deg % area = excess = 3*(pi/2) - pi = pi/2, exactly 1/8 of the sphere (4*pi) excess = 3*(pi/2) - pi; printf("octant triangle: angle sum = %.1f deg, excess = pi/%g = area\n", ... 270, pi/excess); plot3(X, Yc, Z, "linewidth", 2); hold on; [sx,sy,sz] = sphere(40); surf(0.99*sx,0.99*sy,0.99*sz, "FaceAlpha",0.15, "EdgeColor","none"); axis equal; title("A geodesic of S^2 is a great circle");
The Zeta Function & the Hypothesis
In 1859, newly elected to the Berlin Academy, Riemann submitted the customary research report: eight pages, On the Number of Primes Less Than a Given Magnitude. It was his only paper on number theory. It created analytic number theory whole, and left behind the most famous unsolved problem in mathematics.
Euler had studied \(\zeta(s) = \sum n^{-s}\) for real \(s\), discovering the product formula that encodes unique factorization:
Riemann's decisive move was to let \(s\) be complex and to continue \(\zeta\) analytically to the whole plane (except a simple pole at \(s=1\)). The continued function obeys a stunning symmetry, the functional equation, pairing \(s\) with \(1-s\):
The zeros of \(\zeta\) in the critical strip \(0 < \operatorname{Re}(s) < 1\) turn out to control the primes: Riemann's explicit formula expresses the prime-counting function exactly as a smooth main term corrected by one oscillating wave per zero. Each nontrivial zero \(\rho = \beta + i\gamma\) contributes a "music of the primes" harmonic of the form \(x^{\beta}\cos(\gamma \log x)\); the real part \(\beta\) sets the wave's amplitude growth. And then, almost in passing, Riemann remarks that it is "very probable" that all the zeros lie on the mirror line itself:
Every nontrivial zero of \(\zeta(s)\) has real part exactly \(\tfrac{1}{2}\). Equivalently, the primes are distributed as regularly as they possibly can be: \(\pi(x) = \operatorname{Li}(x) + O(\sqrt{x}\log x)\). Riemann adds that after "some fleeting futile attempts" he set the proof aside, "as it appears unnecessary for the next objective of my investigation." It has now been open for 167 years.
The hero animation at the top of this page is the partial-sum path \(\sum_{n\le N} n^{-(1/2+it)}\) unwinding in the complex plane. Here is the instrument version: explore \(|\zeta|\) along the critical line and watch it strike zero at the famous heights \(t \approx 14.135,\ 21.022,\ 25.011,\ldots\)
Riemann's paper also compared \(\pi(x)\) with the logarithmic integral \(\operatorname{Li}(x) = \int_2^x \frac{dt}{\log t}\), a far better approximation than Gauss's \(x/\log x\). The Prime Number Theorem — proved in 1896 by Hadamard and de la Vallée Poussin, both walking Riemann's road — says \(\pi(x) \sim \operatorname{Li}(x)\); the Hypothesis would pin the error to square-root size.
Octave Lab 5 · ζ on the critical line, and finding its first zeros Riemann
The plain series diverges on the critical line, but the alternating Dirichlet eta series converges for \(\operatorname{Re}(s)>0\) and gives \(\zeta(s) = \eta(s)/(1 - 2^{1-s})\). With Euler acceleration it is accurate enough to hunt zeros.
% zeta(s) via eta(s)/(1-2^(1-s)) with Euler-accelerated alternating series function z = zeta_eta(s, N) if nargin < 2, N = 60; endif % Euler transform coefficients e_k (binomial tail sums) e = zeros(1, N); c = 0; for j = N:-1:1 c = c + nchoosek(N, j); e(j) = c; endfor n1 = 1:N; n2 = N+1:2*N; eta = sum((-1).^(n1-1) .* n1.^(-s)) + ... (-1)^N/2^N * sum((-1).^(n2-1) .* e .* n2.^(-s)); z = eta / (1 - 2^(1-s)); endfunction % sanity checks against exact values printf("zeta(2) = %.12f (pi^2/6 = %.12f)\n", real(zeta_eta(2)), pi^2/6); printf("zeta(-1) = %.12f (should be -1/12)\n", real(zeta_eta(-1))); % scan |zeta(1/2 + it)| and locate sign-change minima t = linspace(0.1, 50, 2500); az = arrayfun(@(tt) abs(zeta_eta(0.5 + 1i*tt)), t); % dips below a threshold bracket the zeros; refine with fminbnd zero_t = []; for k = 2:numel(t)-1 if az(k) < az(k-1) && az(k) < az(k+1) && az(k) < 0.1 g = @(tt) abs(zeta_eta(0.5 + 1i*tt)); zero_t(end+1) = fminbnd(g, t(k-1), t(k+1)); endif endfor printf("first zeros on the critical line:\n"); printf(" t = %.6f\n", zero_t(1:6)); plot(t, az, "linewidth", 1.4); grid on; ylim([0 4]); xlabel("t"); ylabel("|zeta(1/2 + it)|"); title("The critical line: every touch of zero is a Riemann zero");
Octave Lab 6 · π(x) against Li(x) and x/ln x Riemann
% Prime counting: sieve pi(x), compare with Li(x) and x/log(x) X = 100000; isp = true(1, X); isp(1) = false; for p = 2:floor(sqrt(X)) if isp(p), isp(p*p:p:X) = false; endif endfor pix = cumsum(isp); % pi(1..X) in one stroke x = 10:10:X; Li = arrayfun(@(u) quad(@(t) 1./log(t), 2, u), x); % Li from 2 gau = x ./ log(x); printf(" x pi(x) Li(x) x/ln x pi-Li\n"); for u = 10.^(2:5) L = quad(@(t) 1./log(t), 2, u); printf("%7d %9d %9.1f %9.1f %7.1f\n", u, pix(u), L, u/log(u), pix(u)-L); endfor plot(x, pix(x), "-", x, Li, "--", x, gau, ":", "linewidth", 1.6); legend("pi(x)", "Li(x)", "x/ln x", "location", "northwest"); grid on; title("Riemann 1859: Li(x) hugs pi(x); RH bounds the gap by sqrt(x) log x");
Grundlagen der Geometrie: The Axiomatic Turn
Euclid's Elements ruled for twenty-two centuries, but its proofs quietly borrow from pictures — facts about betweenness and continuity that the axioms never state. In 1899 Hilbert rebuilt geometry so that every assumption is explicit, and in doing so redefined what a mathematical theory is.
Hilbert's Grundlagen rests on undefined primitives — point, line, plane — and three undefined relations — incidence, betweenness, congruence — governed by twenty axioms in five groups:
| Group | Axioms of… | What they secure |
|---|---|---|
| I (1–8) | Incidence | Which points lie on which lines and planes; two points determine a line. |
| II (1–4) | Order | Betweenness — the notion Euclid used constantly and never defined. Includes Pasch's axiom: a line entering a triangle must leave it. |
| III (1–6) | Congruence | Comparison of segments and angles; the engine of triangle theorems. |
| IV | Parallels | Playfair's form of Euclid's fifth postulate — isolated, so its negation can be studied. |
| V (1–2) | Continuity | Archimedes' axiom plus completeness — connecting the line to the real numbers. |
The philosophical payload outweighed the axioms themselves. Hilbert insisted the primitives have no intrinsic meaning: any interpretation satisfying the axioms is geometry. His famous quip — one must always be able to replace "points, lines, planes" by "tables, chairs, beer mugs" — announced the modern conception: a theory is defined by its deductive structure, not its subject matter. He then proved independence and relative consistency results by building models, reducing geometry's consistency to arithmetic's — and thereby raising the question that would haunt him: what secures arithmetic?
By treating axiom systems as objects to be studied — Is this axiom independent? Is the system consistent? Is it complete? — Hilbert invented a new discipline whose theorems are about theories. Model theory, proof theory, and mathematical logic as we know them descend from the Grundlagen.
Mathematics is a game played according to certain simple rules with meaningless marks on paper.— paraphrase commonly attached to Hilbert's formalism (his actual position was subtler)
Paris, 1900: The Twenty-Three Problems
At the International Congress of Mathematicians, Hilbert did something no one had attempted: he set the agenda for an entire century. "Who of us would not be glad to lift the veil behind which the future lies hidden?" A selection of the problems, and their fates:
| # | Problem | Status | Resolution |
|---|---|---|---|
| 1 | The Continuum Hypothesis | independent | Gödel (1940) + Cohen (1963): undecidable from ZFC — an answer Hilbert never imagined possible. |
| 2 | Consistency of arithmetic | transformed | Gödel's 2nd incompleteness theorem (1931) blocks finitary proofs; Gentzen (1936) proved it with transfinite induction. |
| 3 | Equidecomposability of polyhedra | solved | Dehn, within months — the first problem to fall. The Dehn invariant obstructs scissors congruence. |
| 7 | Transcendence of 2^√2 | solved | Gelfond–Schneider (1934): \(a^b\) is transcendental for algebraic \(a \ne 0,1\) and irrational algebraic \(b\). |
| 8 | The Riemann Hypothesis (with Goldbach & twin primes) | open | Riemann's ghost at the feast. Also a Clay Millennium Problem ($1,000,000) since 2000. |
| 10 | Algorithm for Diophantine equations | solved (no) | Matiyasevich–Robinson–Davis–Putnam (1970): no such algorithm exists. |
| 17 | Nonnegative polynomials as sums of squares | solved | Artin (1927): yes, as sums of squares of rational functions. |
| 18 | Sphere packing & crystallographic groups | solved | Kepler conjecture: Hales (1998; formally verified 2014). |
| 19–20 | Regularity & existence in the calculus of variations | solved | De Giorgi & Nash (1957) — descendants of Hilbert's own rescue of Dirichlet's principle. |
| 23 | Develop the calculus of variations | program | Less a problem than a commission — carried out by the entire 20th century. |
Hilbert Space: Geometry Made Infinite
Between 1904 and 1912, working on integral equations, Hilbert discovered that infinite sequences and functions could be treated as vectors — with lengths, angles, and perpendicularity — in a space of infinitely many dimensions. Von Neumann axiomatized the idea in 1929, named it after Hilbert, and made it the stage on which quantum mechanics is performed.
A Hilbert space \(\mathcal{H}\) is a vector space with an inner product \(\langle f, g\rangle\), complete in the induced norm \(\|f\| = \sqrt{\langle f,f\rangle}\). The two archetypes, which Riesz and Fischer proved are secretly the same space:
Hilbert's original
All sequences \((a_1, a_2, \ldots)\) with \(\sum |a_n|^2 < \infty\), and \(\langle a,b\rangle = \sum a_n \overline{b_n}\). Pythagoras in infinitely many perpendicular directions.
Lebesgue's home
Square-integrable functions on \([a,b]\), with \(\langle f,g\rangle = \int_a^b f\,\overline{g}\,dx\). A function is a vector; orthogonality means \(\int f\bar g = 0\).
Given an orthonormal basis \(\{e_n\}\), every vector has coordinates \(c_n = \langle f, e_n\rangle\), and geometry gives analysis for free. For \(L^2(-\pi,\pi)\) with the trigonometric basis, "coordinates" are Fourier coefficients, and Pythagoras becomes Parseval:
The deepest consequence is the projection theorem: the best approximation to \(f\) within any closed subspace is its orthogonal shadow. Truncating a Fourier series at \(N\) terms is not merely convenient — it is provably optimal in the \(L^2\) sense among all trigonometric polynomials of degree \(N\). Watch optimal approximation converge:
Hilbert also began spectral theory: symmetric (self-adjoint) operators on \(\mathcal H\) generalize symmetric matrices, with real eigenvalues and orthogonal eigenvectors. When quantum mechanics arrived in 1925–26 with Heisenberg's matrices and Schrödinger's waves apparently at war, von Neumann showed both were the same self-adjoint operator theory on the same Hilbert space — observables are operators, states are unit vectors, and measured values are spectra. Hilbert reportedly marveled that physics had moved into a house he had built for entirely different tenants.
Octave Lab 7 · Fourier coordinates, Parseval, and optimal projection Hilbert
% L2(-pi,pi): the square wave as a vector; Fourier series as coordinates. x = linspace(-pi, pi, 4001); f = sign(sin(x)); % the target vector % coordinates c_n = <f, e_n> ; square wave is odd => sine terms only N = 25; bn = zeros(1, N); for n = 1:N bn(n) = trapz(x, f .* sin(n*x)) / pi; % = 4/(pi n), n odd; 0 even endfor printf("b1..b7 : "); printf("%8.5f", bn(1:7)); printf("\n"); printf("theory : "); printf("%8.5f", (4/pi)./(1:7).*mod(1:7,2)); printf("\n"); % Parseval: ||f||^2/pi = sum b_n^2 ; here ||f||^2 = 2*pi, so sum = 2 % (equivalently: sum over odd n of (4/(pi n))^2 = 2 => sum 1/odd^2 = pi^2/8) S = cumsum(bn.^2); printf("Parseval partial sums -> 2 : N=5: %.5f N=15: %.5f N=25: %.5f\n", ... S(5), S(15), S(25)); % projection theorem: the N-term Fourier sum beats ANY other choice % of coefficients. Perturb the optimal ones and watch the L2 error rise. proj = bn(1:7) * sin((1:7)'.*x); % optimal 7-term approx pert = (bn(1:7) + 0.05*randn(1,7)) * sin((1:7)'.*x); e_opt = sqrt(trapz(x, (f - proj).^2)); e_prt = sqrt(trapz(x, (f - pert).^2)); printf("L2 error: optimal %.5f < perturbed %.5f (always)\n", e_opt, e_prt); plot(x, f, x, proj, "linewidth", 1.5); grid on; legend("square wave", "orthogonal projection, N = 7"); title("Best L2 approximation = orthogonal shadow (projection theorem)");
trapz can nudge the last digits. Refine the grid to 40 001 points and the monotone climb is textbook-clean.Octave Lab 8 · The Hilbert matrix: beauty that bites Hilbert
Hilbert introduced the matrix \(H_{ij} = 1/(i+j-1)\) in 1894 while studying approximation. It is the classic example of an ill-conditioned system — a Gram matrix of the monomials \(1, x, x^2, \ldots\), which crowd toward each other in \(L^2[0,1]\). Octave ships it built in.
% The Hilbert matrix: H(i,j) = 1/(i+j-1). Condition number explodes ~ e^(3.5 n) printf(" n cond(hilb(n))\n"); for n = [4 6 8 10 12] printf("%2d %.3e\n", n, cond(hilb(n))); endfor % What ill-conditioning MEANS: a 1e-10 nudge to b swings x wildly n = 10; H = hilb(n); xe = ones(n, 1); % exact solution we pretend to seek b = H * xe; x1 = H \ b; x2 = H \ (b + 1e-10*randn(n,1)); printf("clean rhs : max|x-1| = %.2e\n", max(abs(x1-xe))); printf("1e-10 nudge: max|x-1| = %.2e <-- catastrophe\n", max(abs(x2-xe))); % The cure is Hilbert-space thinking: re-orthogonalize the basis. % Gram-Schmidt on 1, x, x^2,... over [-1,1] yields Legendre polynomials, % whose Gram matrix is DIAGONAL - condition number of the identity scale. x = linspace(-1, 1, 2001); V = x'.^(0:5); % monomial basis, columns Q = zeros(size(V)); for k = 1:6 v = V(:,k); for j = 1:k-1 v = v - trapz(x, v.*Q(:,j)) * Q(:,j); endfor Q(:,k) = v / sqrt(trapz(x, v.^2)); % normalize in L2 endfor G = zeros(6); for a = 1:6, for c = 1:6, G(a,c) = trapz(x, Q(:,a).*Q(:,c)); endfor, endfor printf("orthonormalized Gram matrix: cond = %.4f (vs %.1e for hilb(6))\n", ... cond(G), cond(hilb(6)));
The Hilbert Curve: A Line That Fills a Square
In 1890 Peano stunned mathematics with a continuous curve passing through every point of a square. A year later Hilbert gave the construction its definitive, geometric form — an object that seemed a pure pathology and now routes your database queries and dithers your images.
The recipe is recursive. Divide the square into four quadrants and visit them in a U shape. Then divide each quadrant into four, running a rotated copy of the U inside it, connected in sequence. Iterate. The curves \(H_1, H_2, H_3, \ldots\) converge uniformly to a continuous surjection \([0,1] \to [0,1]^2\) — a genuine space-filling curve. It is continuous everywhere, differentiable nowhere, and its image has Hausdorff dimension 2: a "one-dimensional" object of full planar dimension, exploding the naive concept of dimension and motivating the rigorous ones (topological, Hausdorff) developed soon after.
The Hilbert curve preserves nearness better than any other space-filling order: points close along the curve are close in the square (the converse fails only mildly). Hence its afterlife in computing — spatial database indexing (Hilbert R-trees), image dithering and compression, load-balancing meshes across processors, and mapping IP space. A pathology of 1891 is infrastructure in 2026.
Octave Lab 9 · Generating the Hilbert curve Hilbert
The cleanest generator is the recursive quadrant map; here is a compact vectorizable version using the standard bit-manipulation walk from index \(d\) to coordinates \((x,y)\).
% Hilbert curve of order p on a 2^p x 2^p grid: index d -> (x,y) function [x, y] = d2xy(p, d) n = 2^p; x = 0; y = 0; t = d; s = 1; while s < n rx = mod(idivide(int64(t), 2*s), 2); ry = mod(idivide(int64(t), s) + rx, 2) ; ry = mod(ry, 2); % rotate quadrant if needed if ry == 0 if rx == 1, x = s-1-x; y = s-1-y; endif tmp = x; x = y; y = tmp; endif x = x + s*double(rx); y = y + s*double(ry); t = idivide(int64(t), 4); s = 2*s; endwhile endfunction p = 6; % order: 64 x 64 grid, 4096 points n = 4^p; X = zeros(n,1); Y = zeros(n,1); for d = 0:n-1 [X(d+1), Y(d+1)] = d2xy(p, d); endfor % locality check: mean planar distance between curve-neighbors is EXACTLY 1 step = sqrt(diff(X).^2 + diff(Y).^2); printf("order %d: %d points, every step length = %g (locality!)\n", ... p, n, unique(step)); plot(X, Y, "linewidth", 0.8); axis equal off; title(sprintf("Hilbert curve, order %d - one line, dimension two", p));
The Grand Hotel
In a 1924 lecture, Hilbert dramatized Cantor's infinite arithmetic with a thought experiment so vivid it escaped mathematics entirely: a hotel with rooms numbered 1, 2, 3, … — every one occupied — that can still always say yes.
A new guest arrives at the full hotel? Ask each occupant to move from room \(n\) to room \(n+1\); room 1 opens. An infinite bus of new guests? Move each occupant from \(n\) to \(2n\); the infinitely many odd rooms open. Infinitely many infinite buses? Interleave by primes or diagonals — still room. The moral is Cantor's, staged by Hilbert: an infinite set can be put in one-to-one correspondence with a proper part of itself — indeed Dedekind took that property as the very definition of infinite. Cardinality obeys \(\aleph_0 + 1 = \aleph_0\), \(2 \cdot \aleph_0 = \aleph_0\), \(\aleph_0 \cdot \aleph_0 = \aleph_0\) — yet Cantor's diagonal shows \(2^{\aleph_0} > \aleph_0\): some infinities don't fit, and whether anything lies strictly between is exactly Hilbert's Problem 1.
Hilbert's Program & Its Beautiful Failure
The paradoxes of set theory around 1900 — Russell's above all — convinced Hilbert that mathematics needed a security proof. His plan: formalize all of mathematics as a symbolic system, then prove by elementary, finitary means that the system can never derive a contradiction. "No one shall expel us from the paradise that Cantor has created."
The program crystallized into three demands on a formal system for mathematics, plus a fourth question posed with Ackermann and made famous in 1928:
| Demand | Meaning | Verdict |
|---|---|---|
| Consistency | No statement is both provable and refutable. | unprovable internally — Gödel II (1931): a consistent system strong enough for arithmetic cannot prove its own consistency. |
| Completeness | Every true statement of the language is provable. | impossible — Gödel I (1931): any such consistent system leaves true-but-unprovable sentences. |
| Decidability (Entscheidungsproblem) | An algorithm decides, for any statement, provable or not. | refuted — Church & Turing (1936): no such algorithm; to prove it, Turing had to define "algorithm" — inventing the Turing machine. |
| Conservation of ideal methods | Infinitary detours prove no new finitary facts. | partial — survives in relativized forms; Gentzen proved arithmetic consistent using transfinite induction to ε₀. |
Calling this a failure is like calling the voyage of the Beagle a navigation error. The precise questions Hilbert insisted on asking created mathematical logic, proof theory, and — through Turing's answer to the Entscheidungsproblem — computer science itself. The machine on which you are reading this page is a by-product of Hilbert's demand for certainty. Even the dream survives in miniature: modern proof assistants (Lean, Coq, Isabelle) carry out Hilbert-style full formalization daily, and Gentzen's descendants measure exactly how much infinity each theorem costs.
Wir müssen wissen. Wir werden wissen.— Hilbert's 1930 Königsberg radio address; one day earlier, at a conference in the same city, Gödel had quietly announced incompleteness
Confluence: Riemann Through Hilbert's Hands
The two lives never overlapped in Göttingen — Riemann died when Hilbert was four — yet almost every Riemann thread runs onward through Hilbert's loom.
Dirichlet's principle
Existence by energy minimization — beautiful, and broken by Weierstrass's critique.
The direct method (1900–04)
A rigorous rescue that founded the modern calculus of variations and pointed toward Problems 19, 20, and 23.
Manifolds and the metric
Geometry as a dynamical, local structure on an n-dimensional continuum.
The Einstein–Hilbert action (1915)
Gravity derived from one variational integral of Riemann's curvature scalar; also Problem 6, the axiomatization of physics.
The Hypothesis (1859)
All nontrivial zeros on the line Re(s) = ½ — the deepest open assertion in mathematics.
Problem 8, and a spectral dream
Enshrined in the Paris list; and in the Hilbert–Pólya conjecture, a proposed mechanism for its truth.
The Hilbert–Pólya conjecture
Around 1912–14, Hilbert and Pólya independently suggested (in conversation — neither published it) an audacious explanation: perhaps the Riemann zeros \(\tfrac12 + i\gamma_n\) lie on the critical line because the numbers \(\gamma_n\) are the eigenvalues of a self-adjoint operator on some Hilbert space. Self-adjoint operators have real spectra — so RH would hold for the same structural reason a vibrating drum has real frequencies. The Hypothesis would be spectral geometry: the primes as the resonances of an unknown drum.
The dream has gathered striking evidence. Montgomery (1972) computed the pair-correlation of zeta zeros and Dyson recognized it instantly: it matched the eigenvalue statistics of random Hermitian matrices (GUE) from nuclear physics. Odlyzko's massive computations of zeros around height \(10^{20}\) fit GUE to extraordinary precision. Berry and Keating proposed that the operator resembles a quantization of the classical Hamiltonian \(H = xp\). Connes reformulated RH as a trace formula in noncommutative geometry. None of it is a proof — but the zeros of Riemann's function behave, statistically, exactly like the spectrum of Hilbert's mathematics.
Octave Lab 10 · Zeros vs random-matrix eigenvalues RiemannHilbert
A capstone experiment: generate GUE matrices, unfold their eigenvalue spacings, and compare the spacing histogram with the Wigner surmise — the same curve the (unfolded) zeta zeros follow. Repulsion at zero spacing is the fingerprint.
% GUE spacing statistics - the statistical shadow of Hilbert-Polya. % Wigner surmise for GUE: p(s) = (32/pi^2) s^2 exp(-4 s^2 / pi) M = 200; % matrix size trials = 150; sp = []; for k = 1:trials A = (randn(M) + 1i*randn(M)) / sqrt(2); H = (A + A') / 2; % Hermitian: real spectrum E = sort(real(eig(H))); E = E(round(M*0.25):round(M*0.75)); % bulk only d = diff(E); sp = [sp; d / mean(d)]; % unfold: mean spacing -> 1 endfor [cnt, ctr] = hist(sp, 40); pdf_emp = cnt / (numel(sp) * (ctr(2)-ctr(1))); s = linspace(0, 3.5, 300); wigner = (32/pi^2) * s.^2 .* exp(-4*s.^2/pi); poisson = exp(-s); % what UNcorrelated points would do printf("P(spacing < 0.2): GUE-like %.4f Poisson would give %.4f\n", ... mean(sp < 0.2), 1-exp(-0.2)); printf("=> level repulsion: near-collisions are ~ %.0fx rarer than random.\n", ... (1-exp(-0.2)) / max(mean(sp < 0.2), eps)); bar(ctr, pdf_emp, 1.0, "facecolor", [.3 .5 .7]); hold on; plot(s, wigner, "r", s, poisson, "k--", "linewidth", 2); legend("GUE eigenvalue spacings", "Wigner surmise", "Poisson (random)"); xlabel("normalized spacing s"); ylabel("density"); title("Riemann zeros obey this same law - Montgomery-Odlyzko");
Coda
Riemann worked alone, briefly, from concepts; Hilbert worked publicly, for six decades, from axioms. Riemann left mathematics a handful of inexhaustible ideas; Hilbert left it an inexhaustible method — and a to-do list. That their names now share a hyphen across mathematics — the Riemann–Hilbert problem of reconstructing differential equations from monodromy (Problem 21), the Hilbert–Pólya operator that would settle Riemann's Hypothesis — is the fitting grammar of their relationship: the visionary and the architect, permanently conjoined.
The problems of mathematics are not isolated; they form connections with the remotest branches of knowledge… As long as a branch of science offers an abundance of problems, so long is it alive.— David Hilbert, Paris, 1900