Skip to content
The Lumenary
Research pathwaysResearch orientation (smooth manifolds, differential forms and Hamiltonian mechanics assumed) 140 min

Symplectic geometry and topology

Phase space carries a geometry with no curvature and no local invariants — and yet a ball cannot be squeezed through a hole smaller than itself.

Formally verified · 19 LeanComputationally tested · 2 PythonAI-drafted · awaiting human reviewMathematically reviewed: Awaiting human review
MotivationH

What does a Hamiltonian flow remember?

The state of a mechanical system with nn degrees of freedom is a point (q,p)(q, p) of phase space: nn positions and nn momenta. Its motion is the flow of Hamilton's equations

q˙i=∂H∂pi,p˙i=−∂H∂qi,\dot q_i = \frac{\partial H}{\partial p_i}, \qquad \dot p_i = -\frac{\partial H}{\partial q_i},

where HH is the energy. In 1838 Liouville observed that this flow preserves volume: a blob of initial conditions may be stretched into a long filament, but its 2n2n-dimensional volume never changes. Statistical mechanics is built on that fact.

Is volume all that a Hamiltonian flow remembers? In 1985 Mikhail Gromov showed that it is not. Take the round ball B2n(r)B^{2n}(r) of radius rr and the cylinder Z(R)={x12+y12≤R2}⊂R2nZ(R) = \{x_1^2 + y_1^2 \le R^2\} \subset \R^{2n}, built on one pair of conjugate coordinates. If n≥2n \ge 2 the cylinder has infinite volume, so there is plenty of room, and indeed a volume-preserving linear map — (x1,y1,x2,y2)↦(εx1,εy1,x2/ε,y2/ε)(x_1, y_1, x_2, y_2) \mapsto (\varepsilon x_1, \varepsilon y_1, x_2/\varepsilon, y_2/\varepsilon) — puts the ball inside an arbitrarily thin cylinder. But no Hamiltonian flow, and no symplectic map at all, can put B2n(r)B^{2n}(r) inside Z(R)Z(R) unless r≤Rr \le R. A Hamiltonian system cannot squeeze a cloud of states through a hole in a conjugate plane smaller than the cloud's own cross-section. (The result is often called "the symplectic camel", after the camel and the eye of the needle.)

This lesson is an orientation to the geometry behind that rigidity. Its paradox is the subject in miniature: symplectic manifolds have no local invariants whatsoever (Darboux's theorem), yet they carry deep global invariants, detected by holomorphic curves and Floer homology, that see far more than volume.

IntuitionH

Area, not volume

The symplectic form of R2n\R^{2n} is

ω0=∑i=1ndxi∧dyi,xi=qi, yi=pi.\omega_0 = \sum_{i=1}^{n} dx_i \wedge dy_i, \qquad x_i = q_i,\ y_i = p_i .

Evaluated on two vectors u,vu, v it gives ω0(u,v)=∑i(uxivyi−uyivxi)\omega_0(u, v) = \sum_i (u_{x_i} v_{y_i} - u_{y_i} v_{x_i}): the sum of the signed areas of the shadows of the parallelogram spanned by uu and vv on the nn conjugate planes (xi,yi)(x_i, y_i). A map that preserves ω0\omega_0 preserves the total oriented area of every small piece of surface, measured plane by plane.

  • In dimension 22 this is just area (and orientation). There symplectic and area-preserving mean the same thing.
  • In dimension 2n≥42n \ge 4 preserving ω0\omega_0 is far stronger than preserving volume, which is ω0n/n!\omega_0^n / n!. The squeeze above preserves volume but multiplies the area of the (x1,y1)(x_1, y_1)-shadow by ε2\varepsilon^2.

Hamilton's equations say z˙=J∇H\dot z = J \nabla H with J=(0I−I0)J = \left(\begin{smallmatrix} 0 & I \\ -I & 0 \end{smallmatrix}\right) in the coordinates (q,p)(q, p): the flow moves perpendicular to the gradient of HH, rotated by a quarter turn in each conjugate plane. Moving perpendicular to ∇H\nabla H keeps HH constant; rotating by JJ is what preserves area.

B(r)volume-preservingsymplectic
Left: the ball B(r). Middle: a volume-preserving map can flatten it into a thin pancake that fits a narrow cylinder Z(R) built on the (x₁, y₁)-plane. Right: a symplectic image of the ball may be wildly distorted, but its shadow on the (x₁, y₁)-plane always contains a disc of radius r.

Analogy, not a formal construction

A symplectic map is like a perfectly incompressible fluid that must also respect a hidden "grain": you may stir it as much as you like, but you cannot thin the grain in one direction and thicken it in another to sneak it through a narrow pipe. The analogy is only suggestive — the grain is the form ω\omega, and the obstruction is a theorem, not a fluid property.

DefinitionsH

Definitions

Prerequisites are smooth manifolds, differential forms (Cartan's formula LX=dιX+ιXd\mathcal{L}_X = d\iota_X + \iota_X d in particular) and the Hamiltonian side of classical mechanics.

Definition— symplectic vector space and symplectic group

A symplectic vector space is a finite-dimensional real vector space VV with a bilinear form ω\omega that is alternating (ω(v,v)=0\omega(v, v) = 0 for all vv) and non-degenerate (ω(v,w)=0\omega(v, w) = 0 for all ww implies v=0v = 0). A linear map AA is symplectic if ω(Au,Av)=ω(u,v)\omega(Au, Av) = \omega(u, v). On (R2n,ω0)(\R^{2n}, \omega_0), with ω0(u,v)=uTJv\omega_0(u, v) = u^{\mathsf T} J v, this means ATJA=JA^{\mathsf T} J A = J; these matrices form the symplectic group Sp⁡(2n,R)\operatorname{Sp}(2n, \R), a Lie group of dimension n(2n+1)n(2n+1).

Definition— symplectic manifold

A symplectic form on a smooth manifold MM is a 22-form ω\omega that is closed (dω=0d\omega = 0) and non-degenerate at every point. The pair (M,ω)(M, \omega) is a symplectic manifold. A diffeomorphism φ:(M,ω)→(M′,ω′)\varphi : (M, \omega) \to (M', \omega') with φ∗ω′=ω\varphi^* \omega' = \omega is a symplectomorphism. A submanifold LL with ω∣L=0\omega|_L = 0 and dim⁡L=12dim⁡M\dim L = \frac12 \dim M is Lagrangian.

Definition— Hamiltonian vector field, flow and Poisson bracket

For H∈C∞(M)H \in C^\infty(M) the Hamiltonian vector field XHX_H is the unique vector field with

ιXHω=dH,that isω(XH,Y)=dH(Y) for all Y.\iota_{X_H} \omega = dH, \qquad\text{that is}\qquad \omega(X_H, Y) = dH(Y) \text{ for all } Y .

Its flow φHt\varphi^t_H is the Hamiltonian flow; time-one maps of flows of time-dependent Hamiltonians HtH_t are Hamiltonian diffeomorphisms, and they form a group Ham⁡(M,ω)\operatorname{Ham}(M, \omega). The Poisson bracket is {F,G}=ω(XF,XG)\{F, G\} = \omega(X_F, X_G); along the flow of XHX_H, F˙=dF(XH)={F,H}\dot F = dF(X_H) = \{F, H\}.

Note

Conventions differ by signs. Some authors write ιXHω=−dH\iota_{X_H}\omega = -dH, or ω0=∑dyi∧dxi\omega_0 = \sum dy_i \wedge dx_i, or {F,G}=ω(XG,XF)\{F, G\} = \omega(X_G, X_F). With the choices above, ω0=∑dqi∧dpi\omega_0 = \sum dq_i \wedge dp_i gives exactly Hamilton's equations: if XH=∑ai∂qi+bi∂piX_H = \sum a_i \partial_{q_i} + b_i \partial_{p_i}, then ιXHω0=∑(ai dpi−bi dqi)\iota_{X_H}\omega_0 = \sum (a_i\, dp_i - b_i\, dq_i), and comparing with dH=∑(∂qiH dqi+∂piH dpi)dH = \sum (\partial_{q_i}H\, dq_i + \partial_{p_i}H\, dp_i) gives ai=∂H/∂pia_i = \partial H / \partial p_i and bi=−∂H/∂qib_i = -\partial H / \partial q_i.

Worked examplesH

Examples and non-examples

Example— Phase space and cotangent bundles

(R2n,ω0)(\R^{2n}, \omega_0) is the model. More generally, for any manifold QQ (a configuration space) the cotangent bundle T∗QT^*Q carries the tautological 11-form λ=∑pi dqi\lambda = \sum p_i\, dq_i in canonical coordinates, defined invariantly by λ(q,p)(v)=p(dπ v)\lambda_{(q,p)}(v) = p(d\pi\, v), and ω=−dλ=∑dqi∧dpi\omega = -d\lambda = \sum dq_i \wedge dp_i is symplectic. Phase spaces of mechanical systems are of this kind; the zero section and the fibres are Lagrangian.

Example— Surfaces, and Archimedes' hat-box theorem

On an orientable surface every area form is symplectic: closedness is automatic for a top-degree form. On the unit sphere S2⊂R3S^2 \subset \R^3 with its area form ω\omega, the height H=zH = z generates the rotation about the zz-axis at unit angular speed (with a suitable orientation). The flow preserves the slices z=constz = \text{const}, and Archimedes' theorem — the area of the zone a≤z≤ba \le z \le b is 2π(b−a)2\pi(b - a) — says that HH pushes the area measure forward to the uniform measure on [−1,1][-1, 1]. This is the simplest case of the Duistermaat–Heckman theorem about moment maps (see "the wider landscape" below).

Example— Kähler manifolds and coadjoint orbits

Every Kähler manifold is symplectic: its Kähler form is closed and non-degenerate. So complex projective space CPn\mathbb{CP}^n with the Fubini–Study form, and every smooth complex projective variety, are symplectic manifolds (see complex and Kähler geometry). Another source is Lie theory: every coadjoint orbit O⊂g∗\mathcal{O} \subset \mathfrak{g}^* of a Lie group carries the Kirillov–Kostant–Souriau form ωξ(ad⁡X∗ξ,ad⁡Y∗ξ)=ξ([X,Y])\omega_\xi(\operatorname{ad}^*_X \xi, \operatorname{ad}^*_Y \xi) = \xi([X, Y]) (up to a sign convention). The orbits of SO(3)SO(3) on so(3)∗≅R3\mathfrak{so}(3)^* \cong \R^3 are the spheres about the origin, and on the sphere of radius ρ\rho the KKS form is the area form divided by ρ\rho.

Example— The harmonic oscillator and the pendulum

For H=12(q2+p2)H = \frac12(q^2 + p^2) on R2\R^2, XH=p ∂q−q ∂pX_H = p\, \partial_q - q\, \partial_p and the flow is the rotation (q,p)↦(qcos⁡t+psin⁡t, −qsin⁡t+pcos⁡t)(q, p) \mapsto (q \cos t + p \sin t,\ -q \sin t + p \cos t): a symplectic linear map with determinant 11. For the pendulum H=12p2−cos⁡qH = \frac12 p^2 - \cos q the flow is non-linear, but each time-tt map is still area-preserving. Explore its phase portrait in the visualisation below.

Example— A symplectic flow that is not Hamiltonian

On the torus T2=R2/Z2T^2 = \R^2 / \Z^2 with ω=dx∧dy\omega = dx \wedge dy, the translation field X=∂xX = \partial_x satisfies LXω=d(ιXω)=d(dy)=0\mathcal{L}_X \omega = d(\iota_X \omega) = d(dy) = 0, so its flow consists of symplectomorphisms. But ιXω=dy\iota_X \omega = dy is closed and not exact on T2T^2, so XX is not Hamiltonian. Its time-tt maps (for t∉Zt \notin \Z) have no fixed points — compare the Arnold conjecture below, which concerns Hamiltonian diffeomorphisms only.

Example— Non-examples

  • Odd-dimensional manifolds. A non-degenerate alternating form needs an even-dimensional space (Theorem 1).
  • The spheres S2nS^{2n} for n≥2n \ge 2, and S1×S3S^1 \times S^3. By Proposition 2 below a closed symplectic 2n2n-manifold has HdR2(M)≠0H^2_{dR}(M) \neq 0; these manifolds have H2=0H^2 = 0. (Whether S6S^6 admits a complex structure is a famous open problem; it has no symplectic one.)
  • A closed form that degenerates somewhere, such as x1 dx1∧dy1+dx2∧dy2x_1\, dx_1 \wedge dy_1 + dx_2 \wedge dy_2 on R4\R^4, which is closed but fails to be non-degenerate along x1=0x_1 = 0.
ProofH

Linear symplectic algebra

Theorem— Theorem 1 — linear Darboux theorem

Let (V,ω)(V, \omega) be a symplectic vector space. Then dim⁡V=2n\dim V = 2n is even, and VV has a basis e1,f1,…,en,fne_1, f_1, \dots, e_n, f_n with ω(ei,fj)=δij\omega(e_i, f_j) = \delta_{ij} and ω(ei,ej)=ω(fi,fj)=0\omega(e_i, e_j) = \omega(f_i, f_j) = 0. In this basis ω=∑iei∗∧fi∗\omega = \sum_i e_i^* \wedge f_i^*.

Proof

Induction on dim⁡V\dim V; there is nothing to prove if V=0V = 0. Otherwise pick e1≠0e_1 \neq 0. By non-degeneracy there is ff with ω(e1,f)≠0\omega(e_1, f) \neq 0; rescale it to f1f_1 with ω(e1,f1)=1\omega(e_1, f_1) = 1. The vectors e1,f1e_1, f_1 are independent (if f1=ce1f_1 = c e_1 then ω(e1,f1)=c ω(e1,e1)=0\omega(e_1, f_1) = c\,\omega(e_1, e_1) = 0), so W=span⁡(e1,f1)W = \operatorname{span}(e_1, f_1) is a plane on which ω\omega is non-degenerate. Let Wω={v:ω(v,w)=0 for all w∈W}W^\omega = \{v : \omega(v, w) = 0 \text{ for all } w \in W\}. For any vv, the vector

v′=v−ω(v,f1) e1+ω(v,e1) f1v' = v - \omega(v, f_1)\, e_1 + \omega(v, e_1)\, f_1

satisfies ω(v′,e1)=ω(v,e1)−ω(v,e1)=0\omega(v', e_1) = \omega(v, e_1) - \omega(v, e_1) = 0 and ω(v′,f1)=ω(v,f1)−ω(v,f1)=0\omega(v', f_1) = \omega(v, f_1) - \omega(v, f_1) = 0, so v′∈Wωv' \in W^\omega and V=W+WωV = W + W^\omega; and W∩Wω=0W \cap W^\omega = 0 because ω∣W\omega|_W is non-degenerate. Finally ω∣Wω\omega|_{W^\omega} is non-degenerate: a vector of WωW^\omega that pairs to zero with WωW^\omega also pairs to zero with WW, hence with all of VV, so it is 00. By induction WωW^\omega has a basis of the required form, and adding e1,f1e_1, f_1 finishes the proof.

∎

Evenness also has a one-line matrix proof, which is the one formalised below: the Gram matrix Ω\Omega of ω\omega is skew-symmetric, so det⁡Ω=det⁡ΩT=det⁡(−Ω)=(−1)dim⁡Vdet⁡Ω\det \Omega = \det \Omega^{\mathsf T} = \det(-\Omega) = (-1)^{\dim V} \det \Omega, and if dim⁡V\dim V is odd then det⁡Ω=0\det \Omega = 0.

In a Darboux basis ωn=n! e1∗∧f1∗∧⋯∧en∗∧fn∗≠0\omega^n = n!\, e_1^* \wedge f_1^* \wedge \dots \wedge e_n^* \wedge f_n^* \neq 0, and conversely ωn≠0\omega^n \neq 0 forces non-degeneracy. So on a symplectic manifold ωn/n!\omega^n / n! is a volume form, the Liouville volume, and every symplectic manifold is orientable.

Theorem— Proposition 2 — cohomology of closed symplectic manifolds

If (M2n,ω)(M^{2n}, \omega) is a closed symplectic manifold, then [ω]k≠0[\omega]^k \neq 0 in HdR2k(M)H^{2k}_{dR}(M) for 0≤k≤n0 \le k \le n. In particular b2k(M)≥1b_{2k}(M) \ge 1.

Proof

∫Mωn>0\int_M \omega^n > 0 because ωn\omega^n is a volume form for the induced orientation. If ωk=dβ\omega^k = d\beta for some k≤nk \le n, then, since dω=0d\omega = 0, ωn=d(β∧ωn−k)\omega^n = d(\beta \wedge \omega^{n-k}), and Stokes' theorem on the closed manifold MM gives ∫Mωn=0\int_M \omega^n = 0, a contradiction.

∎

For n=1n = 1, Sp⁡(2,R)=SL(2,R)\operatorname{Sp}(2, \R) = SL(2, \R): a 2×22 \times 2 matrix satisfies ATJA=(det⁡A) JA^{\mathsf T} J A = (\det A)\, J, so it is symplectic exactly when det⁡A=1\det A = 1. In general every symplectic matrix has determinant 11 (linear Liouville; this needs an argument, since ATJA=JA^{\mathsf T} J A = J only gives (det⁡A)2=1(\det A)^2 = 1), and Sp⁡(2n,R)∩O(2n)=U(n)\operatorname{Sp}(2n, \R) \cap O(2n) = U(n).

Theorem— Theorem 3 — linear non-squeezing

Let A∈Sp⁡(2n,R)A \in \operatorname{Sp}(2n, \R). If A(B2n(r))⊆Z(R)={x12+y12≤R2}A(B^{2n}(r)) \subseteq Z(R) = \{x_1^2 + y_1^2 \le R^2\}, then r≤Rr \le R. More precisely, the shadow of A(B2n(r))A(B^{2n}(r)) on the (x1,y1)(x_1, y_1)-plane is an ellipse of area at least πr2\pi r^2.

Proof

Let a=ATex1a = A^{\mathsf T} e_{x_1} and b=ATey1b = A^{\mathsf T} e_{y_1}, so that x1(Au)=⟨a,u⟩x_1(Au) = \langle a, u\rangle and y1(Au)=⟨b,u⟩y_1(Au) = \langle b, u \rangle; these are the first two rows of AA. The transpose of a symplectic matrix is symplectic, so

ω0(a,b)=ω0(ATex1,ATey1)=ω0(ex1,ey1)=1.\omega_0(a, b) = \omega_0(A^{\mathsf T} e_{x_1}, A^{\mathsf T} e_{y_1}) = \omega_0(e_{x_1}, e_{y_1}) = 1 .

By Cauchy–Schwarz and orthogonality of JJ, 1=ω0(a,b)=⟨a,Jb⟩≤∣a∣ ∣b∣1 = \omega_0(a, b) = \langle a, Jb\rangle \le |a|\,|b|, so ∣a∣≥1|a| \ge 1 or ∣b∣≥1|b| \ge 1; say ∣a∣≥1|a| \ge 1. The point u=ra/∣a∣u = r a / |a| lies in B2n(r)B^{2n}(r) and x1(Au)=r∣a∣≥rx_1(Au) = r|a| \ge r, so A(B2n(r))⊆Z(R)A(B^{2n}(r)) \subseteq Z(R) forces R≥rR \ge r.

For the area statement, the shadow is the ellipse {(⟨a,u⟩,⟨b,u⟩):∣u∣≤r}\{(\langle a, u\rangle, \langle b, u\rangle) : |u| \le r\}, of area πr2∣a∣2∣b∣2−⟨a,b⟩2\pi r^2 \sqrt{|a|^2 |b|^2 - \langle a, b\rangle^2}. Write b=αa∣a∣+βJa∣a∣+cb = \alpha \frac{a}{|a|} + \beta \frac{Ja}{|a|} + c with c⊥a,Jac \perp a, Ja. Then ⟨a,b⟩=α∣a∣\langle a, b\rangle = \alpha |a| and ω0(a,b)=⟨a,Jb⟩=−⟨Ja,b⟩=−β∣a∣\omega_0(a, b) = \langle a, Jb \rangle = -\langle Ja, b\rangle = -\beta |a|, so

∣a∣2∣b∣2−⟨a,b⟩2=∣a∣2(β2+∣c∣2)≥ω0(a,b)2=1.|a|^2 |b|^2 - \langle a, b\rangle^2 = |a|^2 (\beta^2 + |c|^2) \ge \omega_0(a, b)^2 = 1.

∎

The volume-preserving squeeze of the motivation fails the hypothesis: it multiplies ω0(ex1,ey1)\omega_0(e_{x_1}, e_{y_1}) by ε2\varepsilon^2. Gromov's theorem below says that Theorem 3 survives for non-linear symplectic embeddings — which is astonishing, because Darboux's theorem says there is no local obstruction of any kind.

ProofH

Hamiltonian flows: conservation and Liouville

Theorem— Theorem 4 — Hamiltonian flows preserve H, ω and volume

Let φt\varphi^t be the flow of XHX_H on (M,ω)(M, \omega). Then for all tt: (i) H∘φt=HH \circ \varphi^t = H; (ii) (φt)∗ω=ω(\varphi^t)^* \omega = \omega; (iii) (φt)∗ωn=ωn(\varphi^t)^* \omega^n = \omega^n, so φt\varphi^t preserves the Liouville volume.

Proof

(i) ddtH(φt(x))=dH(XH)=ω(XH,XH)=0\frac{d}{dt} H(\varphi^t(x)) = dH(X_H) = \omega(X_H, X_H) = 0, since ω\omega is alternating.

(ii) ddt(φt)∗ω=(φt)∗LXHω\frac{d}{dt} (\varphi^t)^* \omega = (\varphi^t)^* \mathcal{L}_{X_H} \omega, and by Cartan's formula

LXHω=d ιXHω+ιXH dω=d(dH)+0=0.\mathcal{L}_{X_H} \omega = d\, \iota_{X_H} \omega + \iota_{X_H}\, d\omega = d(dH) + 0 = 0 .

(iii) (φt)∗(ωn)=((φt)∗ω)n=ωn(\varphi^t)^*(\omega^n) = ((\varphi^t)^* \omega)^n = \omega^n.

∎

Note what each part uses: (i) only that ω\omega is alternating, (ii) that ω\omega is closed, and the existence of XHX_H that ω\omega is non-degenerate. Part (i) is formalised below in exactly this generality.

Two consequences are worth stating. Noether's theorem: {F,H}=0\{F, H\} = 0 means both that FF is conserved by the flow of HH and that HH is conserved by the flow of FF — a symmetry and a conserved quantity are the same thing. Symplectic versus Hamiltonian: a vector field XX with LXω=0\mathcal{L}_X \omega = 0 has ιXω\iota_X \omega closed; it is Hamiltonian exactly when ιXω\iota_X \omega is exact. So HdR1(M)H^1_{dR}(M) measures the difference, as the translation of T2T^2 showed.

At the linear level, a quadratic Hamiltonian H(z)=12zTSzH(z) = \frac12 z^{\mathsf T} S z (SS symmetric) has XH(z)=JSzX_H(z) = JSz, and Liouville's theorem becomes tr⁡(JS)=0\operatorname{tr}(JS) = 0: indeed tr⁡(JS)=tr⁡((JS)T)=tr⁡(STJT)=−tr⁡(SJ)=−tr⁡(JS)\operatorname{tr}(JS) = \operatorname{tr}((JS)^{\mathsf T}) = \operatorname{tr}(S^{\mathsf T} J^{\mathsf T}) = -\operatorname{tr}(SJ) = -\operatorname{tr}(JS), so det⁡etJS=ettr⁡(JS)=1\det e^{tJS} = e^{t \operatorname{tr}(JS)} = 1.

ProofH

Moser's trick and Darboux's theorem

Moser's trick (1965) turns "find a diffeomorphism pulling one form back to another" into "solve a linear equation for a vector field", which non-degeneracy makes trivial.

Theorem— Theorem 5 — Moser stability

Let MM be closed and (ωt)t∈[0,1](\omega_t)_{t \in [0,1]} a smooth family of symplectic forms whose cohomology class [ωt][\omega_t] does not depend on tt. Then there is an isotopy φt\varphi_t with φ0=id\varphi_0 = \mathrm{id} and φt∗ωt=ω0\varphi_t^* \omega_t = \omega_0 for all tt.

Proof

Since [ddtωt]=0[\frac{d}{dt}\omega_t] = 0, we can write ddtωt=dσt\frac{d}{dt} \omega_t = d\sigma_t with σt\sigma_t depending smoothly on tt (for instance σt=d∗G ddtωt\sigma_t = d^* G\, \frac{d}{dt}\omega_t using the Green operator of the Hodge Laplacian of a fixed metric). Because ωt\omega_t is non-degenerate, there is a unique time-dependent vector field XtX_t with

ιXtωt=−σt.\iota_{X_t} \omega_t = -\sigma_t .

On a closed manifold XtX_t integrates to an isotopy φt\varphi_t, and

ddt φt∗ωt=φt∗(LXtωt+dωtdt)=φt∗(d ιXtωt+ιXtdωt+dσt)=φt∗(−dσt+0+dσt)=0.\frac{d}{dt}\, \varphi_t^* \omega_t = \varphi_t^* \Big( \mathcal{L}_{X_t} \omega_t + \frac{d\omega_t}{dt} \Big) = \varphi_t^* \big( d\,\iota_{X_t}\omega_t + \iota_{X_t} d\omega_t + d\sigma_t \big) = \varphi_t^*( -d\sigma_t + 0 + d\sigma_t ) = 0 .

So φt∗ωt=φ0∗ω0=ω0\varphi_t^* \omega_t = \varphi_0^* \omega_0 = \omega_0.

∎

Theorem— Theorem 6 — Darboux (1882)

Every point of a symplectic manifold (M2n,ω)(M^{2n}, \omega) has a coordinate neighbourhood with coordinates (x1,y1,…,xn,yn)(x_1, y_1, \dots, x_n, y_n) in which ω=∑idxi∧dyi\omega = \sum_i dx_i \wedge dy_i.

Proof

Take a chart centred at pp and transport ω\omega to a form ω1\omega_1 on a ball B⊂R2nB \subset \R^{2n} around 00. By Theorem 1, after a linear change of coordinates ω1(0)\omega_1(0) equals the constant form ω0=∑dxi∧dyi\omega_0 = \sum dx_i \wedge dy_i. Put ωt=ω0+t(ω1−ω0)\omega_t = \omega_0 + t(\omega_1 - \omega_0) for t∈[0,1]t \in [0, 1]. Each ωt\omega_t is closed and equals ω0\omega_0 at the origin; non-degeneracy is an open condition and [0,1][0, 1] is compact, so after shrinking BB every ωt\omega_t is non-degenerate on BB.

The closed form ω1−ω0\omega_1 - \omega_0 is exact on the ball (Poincaré lemma): ω1−ω0=dσ\omega_1 - \omega_0 = d\sigma, where the radial homotopy formula σx(v)=∫01s (ω1−ω0)sx(x,v) ds\sigma_x(v) = \int_0^1 s\,(\omega_1 - \omega_0)_{sx}(x, v)\, ds shows σ(0)=0\sigma(0) = 0. Define XtX_t by ιXtωt=−σ\iota_{X_t} \omega_t = -\sigma. Then Xt(0)=0X_t(0) = 0 for all tt, so the origin is fixed by the flow, and by continuous dependence on initial conditions the flow φt\varphi_t of XtX_t is defined for all t∈[0,1]t \in [0, 1] on a smaller ball B′B'. Exactly the computation of Theorem 5 gives ddtφt∗ωt=φt∗(−dσ+dσ)=0\frac{d}{dt} \varphi_t^* \omega_t = \varphi_t^*(-d\sigma + d\sigma) = 0, so φ1∗ω1=ω0\varphi_1^* \omega_1 = \omega_0 on B′B'. Composing the chart with φ1\varphi_1 gives the required coordinates.

∎

No local invariants. In Riemannian geometry the curvature tensor is a local invariant: by Gauss's Theorema Egregium no piece of a round sphere is isometric to a piece of the plane (see Riemannian geometry). Darboux's theorem says every symplectic manifold of dimension 2n2n looks locally exactly like (R2n,ω0)(\R^{2n}, \omega_0): symplectic geometry is, locally, as flexible as topology. Moser's method gives global versions too: two area forms on a closed connected surface with the same total area differ by a diffeomorphism, and (Weinstein, 1971) a neighbourhood of a Lagrangian submanifold LL is symplectomorphic to a neighbourhood of the zero section in T∗LT^*L.

ExplanationH

Rigidity: non-squeezing, capacities and the Arnold conjecture

Gromov's non-squeezing theorem (1985). If B2n(r)B^{2n}(r) embeds symplectically into Z(R)=B2(R)×R2n−2Z(R) = B^2(R) \times \R^{2n-2}, then r≤Rr \le R. This is a theorem, proved with pseudo-holomorphic curves, which Gromov introduced in the same paper. Sketch: choose an almost complex structure JJ on M=S2×T2n−2M = S^2 \times T^{2n-2} (with S2S^2 of area slightly more than πR2\pi R^2, containing B2(R)B^2(R), and a large torus) that is tamed by the symplectic form and equals the push-forward of the standard complex structure on the image of the ball. Gromov proves that for every tamed JJ, through every point passes a JJ-holomorphic sphere in the class [S2×pt][S^2 \times \mathrm{pt}] — the count of such spheres is a deformation invariant equal to 11. The sphere through the image of the centre has symplectic area πR2+ε\pi R^2 + \varepsilon. Pulled back to the ball it becomes a genuine holomorphic curve through the centre, hence a minimal surface, and the monotonicity formula for minimal surfaces gives it area at least πr2\pi r^2 inside the ball. So πr2≤πR2+ε\pi r^2 \le \pi R^2 + \varepsilon for every ε>0\varepsilon > 0. What is proved in this lesson is the linear case (Theorem 3), which needs none of this machinery.

Capacities and C0C^0-rigidity. Ekeland–Hofer (1989) and Hofer–Zehnder (1990) axiomatised the invariant behind non-squeezing: a symplectic capacity assigns to each symplectic manifold of dimension 2n2n a number c(M)∈[0,∞]c(M) \in [0, \infty], monotone under symplectic embeddings, scaling like c(M,λω)=λ c(M,ω)c(M, \lambda\omega) = \lambda\, c(M, \omega) and normalised by c(B2n(1))=c(Z(1))=πc(B^{2n}(1)) = c(Z(1)) = \pi. Gromov's width sup⁡{πr2:B(r)↪M}\sup\{\pi r^2 : B(r) \hookrightarrow M\} is the smallest one. Capacities are C0C^0-robust, and they give the Eliashberg–Gromov theorem: a diffeomorphism that is a C0C^0-limit of symplectomorphisms is itself symplectic. Volume preservation would not have predicted this.

The Arnold conjecture. Let (M,ω)(M, \omega) be closed and φ∈Ham⁡(M,ω)\varphi \in \operatorname{Ham}(M, \omega) have only non-degenerate fixed points (det⁡(dφx−I)≠0\det(d\varphi_x - I) \neq 0). Arnold conjectured in the 1960s that

#Fix⁡(φ) ≥ ∑kdim⁡Hk(M;F),\#\operatorname{Fix}(\varphi) \ \ge\ \sum_k \dim H_k(M; \mathbb{F}),

the number of critical points that a Morse function on MM is forced to have by Morse theory. Compare the Lefschetz fixed-point theorem, which only bounds the signed count, by χ(M)\chi(M); for the torus T2nT^{2n}, χ=0\chi = 0 gives nothing, while the Arnold bound is 22n2^{2n}. And the Hamiltonian hypothesis is essential: translations of T2T^2 are symplectic and have no fixed points at all.

What is proved, and what is open:

  • Proved. Conley–Zehnder (1983) for the torus T2nT^{2n}; Floer (1987–89) for monotone and symplectically aspherical manifolds, with F=Z/2\mathbb{F} = \Z/2; for all closed symplectic manifolds with F=Q\mathbb{F} = \Q by Fukaya–Ono and by Liu–Tian (both 1998–99), using "virtual" counts of holomorphic curves; Abouzaid and Blumberg (2021) extended the bound to coefficients in every finite field.
  • Open in general. Arnold's original, stronger form, with the minimal number of critical points of any smooth function on MM in place of the sum of Betti numbers; and the version for degenerate fixed points (a lower bound by the cup-length plus one), which is known only in special cases such as symplectically aspherical manifolds.

Floer homology: Morse theory on the loop space. Floer's idea was to do Morse theory for the action functional on the space of contractible loops γ:S1→M\gamma : S^1 \to M,

AH(γ)=−∫Du∗ω+∫01Ht(γ(t)) dt,u∣∂D=γ\mathcal{A}_H(\gamma) = -\int_{D} u^* \omega + \int_0^1 H_t(\gamma(t))\, dt, \qquad u|_{\partial D} = \gamma

(signs vary with conventions). Its critical points are the 11-periodic orbits of XHtX_{H_t}, which correspond to fixed points of φ=φH1\varphi = \varphi^1_H. With a compatible almost complex structure JJ, its "gradient flow lines" are maps u:R×S1→Mu : \R \times S^1 \to M solving Floer's equation

∂su+J(u)(∂tu−XHt(u))=0,\partial_s u + J(u)\big( \partial_t u - X_{H_t}(u) \big) = 0,

a perturbed Cauchy–Riemann equation. The functional is not bounded and its Hessian has infinite index in both directions, so classical Morse theory fails; but solutions of finite energy behave like holomorphic curves. Counting the rigid solutions defines a differential on the vector space generated by the periodic orbits. Its homology HF∗(H)HF_*(H) does not depend on HH or JJ, and for a small time-independent Morse function it equals the Morse homology of MM, which is H∗(M)H_*(M). Since a chain complex has at least as many generators as the rank of its homology, #Fix⁡(φ)≥rank⁡H∗(M)\#\operatorname{Fix}(\varphi) \ge \operatorname{rank} H_*(M). The analytic difficulties — transversality, and the bubbling-off of holomorphic spheres in the compactness theorem — are exactly why the monotone case came first and the general case needed virtual techniques.

ExplanationH

Moment maps and the wider landscape

Moment maps. If a torus TT acts on (M,ω)(M, \omega) by symplectomorphisms generated by Hamiltonians, these assemble into a moment map μ:M→t∗\mu : M \to \mathfrak{t}^* with d⟨μ,ξ⟩=ιξMωd\langle \mu, \xi \rangle = \iota_{\xi_M} \omega for every ξ∈t\xi \in \mathfrak{t}. For the rotation of S2S^2 the moment map is the height. Established landmarks:

  • Convexity (Atiyah; Guillemin–Sternberg, 1982): for a compact connected MM, μ(M)\mu(M) is the convex hull of the images of the fixed points — a convex polytope.
  • Delzant (1988): compact symplectic 2n2n-manifolds with an effective Hamiltonian TnT^n-action (toric manifolds) are classified by their moment polytopes. CPn\mathbb{CP}^n corresponds to a simplex.
  • Symplectic reduction (Meyer, 1973; Marsden–Weinstein, 1974): μ−1(0)/T\mu^{-1}(0)/T is again symplectic when the action on μ−1(0)\mu^{-1}(0) is free. For instance CPn−1\mathbb{CP}^{n-1} is the reduction of Cn\C^n by the diagonal circle action at a regular level of 12∣z∣2\frac12 |z|^2.
  • Duistermaat–Heckman (1982): the push-forward of the Liouville measure by μ\mu is piecewise polynomial — Archimedes' hat-box theorem is the case of S2S^2.

Contact geometry, the odd-dimensional sibling, studies hyperplane fields ker⁡α\ker \alpha on a (2n−1)(2n-1)-manifold with α∧(dα)n−1≠0\alpha \wedge (d\alpha)^{n-1} \neq 0 everywhere; energy hypersurfaces of Hamiltonian systems are often contact. The Weinstein conjecture (1979) asks whether every Reeb vector field on a closed contact manifold has a periodic orbit. Taubes proved it in dimension 33 (2007), using Seiberg–Witten Floer theory; in higher dimensions it is known in many cases and open in general.

Mirror symmetry. Kontsevich's homological mirror symmetry conjecture (1994) predicts that the Fukaya category of a Calabi–Yau manifold XX — Lagrangian submanifolds, with morphisms given by Lagrangian Floer cohomology and compositions by counts of holomorphic polygons — is equivalent to the derived category of coherent sheaves on a mirror X∨X^\vee (see derived categories). It is proved in important cases: elliptic curves (Polishchuk–Zaslow, 1998), the quartic K3 surface (Seidel), and Calabi–Yau hypersurfaces in projective space (Sheridan, 2015). It is open in general.

A recent resolution. Viterbo conjectured (2000) that among convex domains in R2n\R^{2n} of a given volume the ball maximises every normalised capacity. In 2024 Haim-Kislev and Ostrover found a counterexample in R4\R^4, built from two pentagons. A single conjecture falling is a reminder that the subject is far from finished: questions as basic as "which symplectic manifolds of dimension 44 exist, and which ellipsoids embed into which?" have rich, partly unexpected answers (McDuff and Schlenk found an infinite staircase governed by Fibonacci numbers for embedding ellipsoids into balls, 2012).

Formal mathematicsF

Symplectic linear algebra in Lean and Mathlib

Mathlib has the symplectic group Matrix.symplecticGroup l R of matrices AA with AJAT=JA J A^{\mathsf T} = J, where JJ is indexed by l ⊕ l, and two non-trivial facts about it. There are no symplectic manifolds in Mathlib yet, so Darboux's theorem, Moser's trick and Gromov's theorem are not formalised here. What is formalised is the linear algebra of the lesson and the conservation law, in full.

First, Theorem 4 (i), for any alternating form on any real normed space. Note that the proof never uses non-degeneracy:

hamiltonian_energy_conservedLean 4Proved here from basic factsFormally verified
/-- **Hamiltonian flows conserve the Hamiltonian.** Let `ω` be any alternating form on a real
normed space `V` (`ω v v = 0`), `H : V → ℝ` differentiable with derivative `dH z` at `z`, and `X`
the Hamiltonian vector field, defined by `ι_{X} ω = dH`, i.e. `ω (X z) w = dH z w`. Along any
flow line `γ' = X(γ)` the value `H(γ t)` is constant. Proof: by the chain rule
`(H ∘ γ)' = dH(γ)(X(γ)) = ω(X(γ), X(γ)) = 0`. Non-degeneracy of `ω` is what makes `X` exist and
be unique; it is not needed for conservation. -/
theorem hamiltonian_energy_conserved {V : Type*} [NormedAddCommGroup V] [NormedSpace ℝ V]
    (ω : V → V → ℝ) (hω : ∀ v, ω v v = 0)
    {H : V → ℝ} {dH : V → V →L[ℝ] ℝ} (hH : ∀ z, HasFDerivAt H (dH z) z)
    {X : V → V} (hX : ∀ z w, ω (X z) w = dH z w)
    {γ : ℝ → V} (hγ : ∀ t, HasDerivAt γ (X (γ t)) t) (s t : ℝ) :
    H (γ s) = H (γ t) := by
  have hd : ∀ τ, HasDerivAt (fun τ => H (γ τ)) 0 τ := by
    intro τ
    have h := (hH (γ τ)).comp_hasDerivAt τ (hγ τ)
    have h0 : dH (γ τ) (X (γ τ)) = 0 := by rw [← hX, hω]
    rw [h0] at h
    exact h
  exact is_const_of_deriv_eq_zero (fun τ => (hd τ).differentiableAt) (fun τ => (hd τ).deriv) s t
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

In the plane, symplectic means determinant one (proved entry by entry), with the shear — the flow of a free particle — as the exercise:

J2Lean 4Formally verified
/-- The standard symplectic matrix on ℝ² = {(q, p)}: `ω₀(u, v) = uᵀ J v = u₁ v₂ - u₂ v₁`, the
signed area of the parallelogram spanned by `u` and `v`. -/
def J2 : Matrix (Fin 2) (Fin 2) ℝ := !![0, 1; -1, 0]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
transpose_mul_J2_mulLean 4Proved here from basic factsFormally verified
/-- For every real 2 × 2 matrix, `Aᵀ J A = (det A) J`: a linear map of the plane multiplies the
symplectic form, i.e. signed area, by its determinant. Proved entry by entry. -/
theorem transpose_mul_J2_mul (A : Matrix (Fin 2) (Fin 2) ℝ) :
    Aᵀ * J2 * A = A.det • J2 := by
  ext i j
  fin_cases i <;> fin_cases j <;>
    simp [J2, Matrix.mul_apply, Fin.sum_univ_two, Matrix.det_fin_two] <;> ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
symplectic_iff_det_eq_oneLean 4Proved here from basic factsFormally verified
/-- **In dimension two, symplectic means area- and orientation-preserving**: `Aᵀ J A = J` if
and only if `det A = 1`. In dimension four and higher this fails (see `squeeze`). -/
theorem symplectic_iff_det_eq_one (A : Matrix (Fin 2) (Fin 2) ℝ) :
    Aᵀ * J2 * A = J2 ↔ A.det = 1 := by
  rw [transpose_mul_J2_mul]
  constructor
  · intro h
    have := congrFun (congrFun h 0) 1
    simpa [J2] using this
  · intro h
    rw [h, one_smul]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
shear_symplecticLean 4Proved here from basic factsFormally verified
/-- A shear `(q, p) ↦ (q + t p, p)` is symplectic: its determinant is `1`. (Solution of the Lean
exercise; it also describes the exact flow of the free particle `H = p²/2` for time `t`.) -/
theorem shear_symplectic (t : ℝ) :
    (!![1, t; 0, 1] : Matrix (Fin 2) (Fin 2) ℝ)ᵀ * J2 * !![1, t; 0, 1] = J2 := by
  rw [symplectic_iff_det_eq_one, Matrix.det_fin_two_of]
  ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

Evenness of dimension and the infinitesimal Liouville theorem:

det_eq_zero_of_skew_oddLean 4Proved here from basic factsFormally verified
/-- A skew-symmetric real matrix of odd size is singular: `det A = det Aᵀ = det (-A) =
(-1)ⁿ det A = -det A`. So an alternating bilinear form on an odd-dimensional space is always
degenerate, and a symplectic vector space (or manifold) has even dimension. -/
theorem det_eq_zero_of_skew_odd {n : ℕ} (hn : Odd n) (A : Matrix (Fin n) (Fin n) ℝ)
    (hA : Aᵀ = -A) : A.det = 0 := by
  have h1 : A.det = (-A).det := by rw [← hA, det_transpose]
  rw [det_neg, Fintype.card_fin, hn.neg_one_pow] at h1
  linarith
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
trace_skew_mul_symmLean 4Proved here from basic factsFormally verified
/-- **Linear Hamiltonian vector fields are divergence-free.** For a quadratic Hamiltonian
`H(z) = ½ zᵀ S z` the Hamiltonian vector field is linear, `X(z) = J S z` with `J` skew and `S`
symmetric, and its divergence is `trace (J S)`, which vanishes:
`tr(JS) = tr((JS)ᵀ) = tr(Sᵀ Jᵀ) = -tr(S J) = -tr(J S)`. This is Liouville's theorem at the level
of vector fields: the flow `exp(t J S)` has determinant `exp(t · tr(JS)) = 1`. -/
theorem trace_skew_mul_symm {n : ℕ} (J S : Matrix (Fin n) (Fin n) ℝ)
    (hJ : Jᵀ = -J) (hS : Sᵀ = S) : (J * S).trace = 0 := by
  have h : (J * S).trace = -(J * S).trace := by
    calc (J * S).trace = (J * S)ᵀ.trace := (trace_transpose _).symm
      _ = (Sᵀ * Jᵀ).trace := by rw [transpose_mul]
      _ = (S * -J).trace := by rw [hS, hJ]
      _ = -(S * J).trace := by rw [Matrix.mul_neg, trace_neg]
      _ = -(J * S).trace := by rw [trace_mul_comm]
  linarith
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

The linear Liouville theorem — symplectic matrices have determinant 11 — is in Mathlib, with a surprisingly intricate proof (reduction to local rings). So is the fact that transposes of symplectic matrices are symplectic, used in Theorem 3:

symplectic_det_eq_oneLean 4Applies a library theoremFormally verified
/-- **Linear Liouville theorem**: every symplectic matrix (over any commutative ring) has
determinant `1`, so linear symplectic maps preserve volume. This applies Mathlib's
`SymplecticGroup.det_eq_one`, whose proof reduces to local rings and builds an invertible block
by hand; Mathlib's convention is `A * J * Aᵀ = J` with `J = !![0, -1; 1, 0]` in blocks. -/
theorem symplectic_det_eq_one {l : Type*} [DecidableEq l] [Fintype l]
    {A : Matrix (l ⊕ l) (l ⊕ l) ℝ} (hA : A ∈ symplecticGroup l ℝ) : A.det = 1 :=
  SymplecticGroup.det_eq_one hA
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
symplectic_transpose_memLean 4Applies a library theoremFormally verified
/-- The transpose of a symplectic matrix is symplectic (so `A * J * Aᵀ = J` and `Aᵀ * J * A = J`
define the same group). This applies Mathlib's `SymplecticGroup.transpose_mem`. It is why the
*rows* of a symplectic matrix pair up under `ω`, which the non-squeezing proof below uses. -/
theorem symplectic_transpose_mem {l : Type*} [DecidableEq l] [Fintype l]
    {A : Matrix (l ⊕ l) (l ⊕ l) ℝ} (hA : A ∈ symplecticGroup l ℝ) :
    Aᵀ ∈ symplecticGroup l ℝ :=
  SymplecticGroup.transpose_mem hA
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

Now Theorem 3 in R4\R^4, in coordinates (x1,y1,x2,y2)(x_1, y_1, x_2, y_2), with Mathlib's convention AJAT=JA J A^{\mathsf T} = J so that the rows of AA pair under ω0\omega_0 directly. The Wirtinger inequality is proved as a sum-of-squares identity in Plücker coordinates, and is slightly stronger than the Cauchy–Schwarz step the human proof needs:

J4Lean 4Formally verified
/-- The standard symplectic matrix on ℝ⁴ with coordinates ordered `(x₁, y₁, x₂, y₂)`, so that
`ω₀ = dx₁ ∧ dy₁ + dx₂ ∧ dy₂`. -/
def J4 : Matrix (Fin 4) (Fin 4) ℝ :=
  !![0, 1, 0, 0; -1, 0, 0, 0; 0, 0, 0, 1; 0, 0, -1, 0]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
omega4Lean 4Formally verified
/-- The standard symplectic form on ℝ⁴: the sum of the signed areas of the projections of the
parallelogram spanned by `u` and `v` to the `(x₁, y₁)`- and `(x₂, y₂)`-planes. -/
def omega4 (u v : Fin 4 → ℝ) : ℝ :=
  u 0 * v 1 - u 1 * v 0 + u 2 * v 3 - u 3 * v 2
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
mul_J4_mul_transpose_applyLean 4Proved here from basic factsFormally verified
/-- The entries of `A J Aᵀ` are the symplectic pairings of the rows of `A`:
`(A J Aᵀ)ᵢⱼ = ω₀(rowᵢ A, rowⱼ A)`. -/
theorem mul_J4_mul_transpose_apply (A : Matrix (Fin 4) (Fin 4) ℝ) (i j : Fin 4) :
    (A * J4 * Aᵀ) i j = omega4 (A i) (A j) := by
  simp [J4, omega4, Matrix.mul_apply, Fin.sum_univ_four]
  ring
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
wirtinger4Lean 4Proved here from basic factsFormally verified
/-- **A Wirtinger-type inequality in ℝ⁴**: `ω₀(a, b)² + ⟨a, b⟩² ≤ |a|² |b|²`. The symplectic area
of a parallelogram never exceeds its Euclidean area. Proof: the difference is the sum of squares
`(p₀₂ - p₁₃)² + (p₀₃ + p₁₂)²` of Plücker coordinates `pᵢⱼ = aᵢ bⱼ - aⱼ bᵢ` (an identity checked
by `ring`). -/
theorem wirtinger4 (a b : Fin 4 → ℝ) :
    omega4 a b ^ 2 + (a ⬝ᵥ b) ^ 2 ≤ (a ⬝ᵥ a) * (b ⬝ᵥ b) := by
  have key : (a ⬝ᵥ a) * (b ⬝ᵥ b) - (omega4 a b ^ 2 + (a ⬝ᵥ b) ^ 2) =
      ((a 0 * b 2 - a 2 * b 0) - (a 1 * b 3 - a 3 * b 1)) ^ 2 +
      ((a 0 * b 3 - a 3 * b 0) + (a 1 * b 2 - a 2 * b 1)) ^ 2 := by
    simp only [dotProduct, Fin.sum_univ_four, omega4]
    ring
  nlinarith [sq_nonneg ((a 0 * b 2 - a 2 * b 0) - (a 1 * b 3 - a 3 * b 1)),
    sq_nonneg ((a 0 * b 3 - a 3 * b 0) + (a 1 * b 2 - a 2 * b 1))]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
exists_long_shadowLean 4Proved here from basic factsFormally verified
/-- If `|a| ≥ 1`, the linear function `u ↦ ⟨a, u⟩` takes a value of size at least `r` on the
sphere of radius `r`: take `u = (r / |a|) a`, for which `⟨a, u⟩² = r² |a|² ≥ r²`. -/
theorem exists_long_shadow {a : Fin 4 → ℝ} (ha : 1 ≤ a ⬝ᵥ a) {r : ℝ} :
    ∃ u : Fin 4 → ℝ, u ⬝ᵥ u = r ^ 2 ∧ r ^ 2 ≤ (a ⬝ᵥ u) ^ 2 := by
  set s := Real.sqrt (a ⬝ᵥ a) with hs
  have hs2 : s ^ 2 = a ⬝ᵥ a := Real.sq_sqrt (by linarith)
  have hspos : 0 < s := Real.sqrt_pos.mpr (by linarith)
  refine ⟨(r / s) • a, ?_, ?_⟩
  · rw [smul_dotProduct, dotProduct_smul, smul_eq_mul, smul_eq_mul, ← hs2]
    field_simp
  · rw [dotProduct_smul, smul_eq_mul, mul_pow, div_pow, hs2]
    have h0 : 0 < a ⬝ᵥ a := by linarith
    rw [div_mul_eq_mul_div, le_div_iff₀ h0]
    nlinarith [mul_nonneg (sq_nonneg r) (mul_nonneg h0.le (sub_nonneg.mpr ha))]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
linear_nonsqueezingLean 4Proved here from basic factsFormally verified
/-- **Linear non-squeezing in ℝ⁴.** If a symplectic matrix `A` (here `A J Aᵀ = J`) maps the ball
`B⁴(r)` into the cylinder `Z(R) = {x₁² + y₁² ≤ R²}`, then `r ≤ R`. Proof: the first two rows
`a, b` of `A` satisfy `ω₀(a, b) = 1`, so by `wirtinger4` `|a|² |b|² ≥ 1` and one of them has
length at least `1`; `exists_long_shadow` then gives a point of `B⁴(r)` whose image lies at
distance at least `r` from the axis of the cylinder. Gromov's theorem says the same for all
symplectic *diffeomorphisms*; that needs pseudo-holomorphic curves and is not formalised. -/
theorem linear_nonsqueezing (A : Matrix (Fin 4) (Fin 4) ℝ) (hA : A * J4 * Aᵀ = J4)
    {r R : ℝ} (hR : 0 ≤ R)
    (hsub : ∀ u : Fin 4 → ℝ, u ⬝ᵥ u ≤ r ^ 2 → (A *ᵥ u) 0 ^ 2 + (A *ᵥ u) 1 ^ 2 ≤ R ^ 2) :
    r ≤ R := by
  -- the rows `a = A 0` and `b = A 1` satisfy `ω(a, b) = 1`
  have hab : omega4 (A 0) (A 1) = 1 := by
    rw [← mul_J4_mul_transpose_apply, hA]; simp [J4]
  have hw := wirtinger4 (A 0) (A 1)
  rw [hab] at hw
  have ha0 := dot_self_nonneg (A 0)
  have hb0 := dot_self_nonneg (A 1)
  -- one of the two rows has length at least one
  have hlong : 1 ≤ A 0 ⬝ᵥ A 0 ∨ 1 ≤ A 1 ⬝ᵥ A 1 := by
    rcases le_or_gt 1 (A 0 ⬝ᵥ A 0) with h | h
    · exact Or.inl h
    · rcases le_or_gt 1 (A 1 ⬝ᵥ A 1) with h' | h'
      · exact Or.inr h'
      · nlinarith [sq_nonneg (A 0 ⬝ᵥ A 1), mul_le_mul h.le h'.le hb0 zero_le_one]
  -- so some point of the ball lands at distance ≥ r from the axis
  have hr2 : r ^ 2 ≤ R ^ 2 := by
    rcases hlong with h | h
    · obtain ⟨u, hu, hshadow⟩ := exists_long_shadow h (r := r)
      have := hsub u hu.le
      simp only [mulVec] at this
      nlinarith [sq_nonneg (A 1 ⬝ᵥ u)]
    · obtain ⟨u, hu, hshadow⟩ := exists_long_shadow h (r := r)
      have := hsub u hu.le
      simp only [mulVec] at this
      nlinarith [sq_nonneg (A 0 ⬝ᵥ u)]
  nlinarith
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

Finally the contrast: a volume-preserving matrix that is not symplectic and does squeeze the unit ball into the cylinder of radius 12\frac12 — impossible for a symplectic matrix by the previous theorem.

squeezeLean 4Formally verified
/-- The squeeze `(x₁, y₁, x₂, y₂) ↦ (x₁/2, y₁/2, 2x₂, 2y₂)`: it shrinks the first symplectic
plane and stretches the second. -/
noncomputable def squeeze : Matrix (Fin 4) (Fin 4) ℝ := Matrix.diagonal ![1 / 2, 1 / 2, 2, 2]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
squeeze_detLean 4Proved here from basic factsFormally verified
/-- The squeeze preserves volume: `det = ½ · ½ · 2 · 2 = 1`. -/
theorem squeeze_det : squeeze.det = 1 := by
  simp [squeeze, Matrix.det_diagonal, Fin.prod_univ_four]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
squeeze_not_symplecticLean 4Proved here from basic factsFormally verified
/-- The squeeze is not symplectic: it multiplies `ω₀(e₁, e₂) = 1` by `¼`. -/
theorem squeeze_not_symplectic : squeeze * J4 * squeezeᵀ ≠ J4 := by
  intro h
  have := congrFun (congrFun h 0) 1
  simp [squeeze, J4, Matrix.mul_apply, Fin.sum_univ_four] at this
  norm_num at this
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor
squeeze_ballLean 4Proved here from basic factsFormally verified
/-- The squeeze maps the unit ball `B⁴(1)` into the thin cylinder `Z(1/2)`. Together with
`linear_nonsqueezing` this shows that volume preservation is far weaker than being symplectic:
no symplectic matrix can do this. -/
theorem squeeze_ball (u : Fin 4 → ℝ) (hu : u ⬝ᵥ u ≤ 1) :
    (squeeze *ᵥ u) 0 ^ 2 + (squeeze *ᵥ u) 1 ^ 2 ≤ (1 / 2) ^ 2 := by
  simp only [squeeze, mulVec_diagonal]
  simp only [dotProduct, Fin.sum_univ_four] at hu
  simp
  nlinarith [sq_nonneg (u 2), sq_nonneg (u 3)]
Axioms used: propext, Classical.choice, Quot.soundformal/Lumenary/SymplecticGeometry.leanTry it in the Lean web editor

Not formalised: symplectic manifolds and Hamiltonian vector fields on them; Theorem 1 as a basis statement (only evenness is proved); Theorem 3 in dimensions other than four; Moser's trick and Darboux's theorem; pseudo-holomorphic curves, Gromov's theorem, the Arnold conjecture and Floer homology. Formalising Floer theory is far beyond any current proof assistant library.

ComputationC

Symplectic integrators and the shadows of a ball

Numerical analysts met symplectic geometry from the other side. A one-step method for Hamilton's equations is symplectic if each step is a symplectic map. Symplectic methods do not conserve energy exactly, but backward error analysis shows that (for analytic Hamiltonians and small steps) a symplectic method agrees, up to exponentially small errors, with the exact flow of a nearby modified Hamiltonian, so the energy error stays bounded over exponentially long times instead of drifting. The first experiment integrates the pendulum with two non-symplectic methods (explicit Euler, RK4) and two symplectic ones (symplectic Euler, leapfrog), and computes exactly how one step of each changes phase-space area for the harmonic oscillator.

Symplectic integrators: energy drift and phase-space areaPythonNumerical approximationExact computationComputationally tested
"""Symplectic and non-symplectic integrators for the pendulum.

Hamilton's equations for the pendulum H(q, p) = p^2/2 - cos q are solved
numerically by four one-step methods. Explicit Euler and the classical
Runge-Kutta method (RK4) are not symplectic; symplectic Euler and the
Stormer-Verlet (leapfrog) method are. We record the energy error over a long
run, and for the harmonic oscillator H = (q^2 + p^2)/2 we compute, with exact
fractions, the determinant of one step of each method: the factor by which
the step multiplies phase-space area.

Evidence: numerical (floating-point runs of finitely many steps) and exact
(rational determinants for one step size). Neither replaces the theorems
(Liouville's theorem; backward error analysis for symplectic methods).
"""

import math
from fractions import Fraction

def energy(q, p):
    """The pendulum Hamiltonian H(q, p) = p^2/2 - cos q."""
    return p * p / 2 - math.cos(q)

def force(q):
    """-dH/dq for the pendulum."""
    return -math.sin(q)

def explicit_euler(q, p, h):
    """One explicit Euler step (not symplectic)."""
    return q + h * p, p + h * force(q)

def symplectic_euler(q, p, h):
    """Kick then drift: p <- p + h F(q), q <- q + h p (symplectic)."""
    p = p + h * force(q)
    return q + h * p, p

def leapfrog(q, p, h):
    """Stormer-Verlet: half kick, drift, half kick (symplectic, order 2)."""
    p = p + h / 2 * force(q)
    q = q + h * p
    return q, p + h / 2 * force(q)

def rk4(q, p, h):
    """Classical fourth-order Runge-Kutta step (not symplectic)."""
    def f(a, b):
        return b, force(a)
    k1 = f(q, p)
    k2 = f(q + h / 2 * k1[0], p + h / 2 * k1[1])
    k3 = f(q + h / 2 * k2[0], p + h / 2 * k2[1])
    k4 = f(q + h * k3[0], p + h * k3[1])
    q = q + h / 6 * (k1[0] + 2 * k2[0] + 2 * k3[0] + k4[0])
    p = p + h / 6 * (k1[1] + 2 * k2[1] + 2 * k3[1] + k4[1])
    return q, p

METHODS = [
    ("explicit Euler", explicit_euler),
    ("symplectic Euler", symplectic_euler),
    ("leapfrog", leapfrog),
    ("RK4", rk4),
]

def energy_errors(step, q, p, h, n, checkpoints):
    """Run n steps; return {k: max |H - H0| over the first k steps}."""
    e0 = energy(q, p)
    out, worst = {}, 0.0
    for k in range(1, n + 1):
        q, p = step(q, p, h)
        worst = max(worst, abs(energy(q, p) - e0))
        if k in checkpoints:
            out[k] = worst
    return out

def oscillator_step_matrix(name, h):
    """Exact 2x2 matrix of one step for H = (q^2 + p^2)/2, entries Fractions."""
    h = Fraction(h)
    if name == "explicit Euler":
        return [[1, h], [-h, 1]]
    if name == "symplectic Euler":
        return [[1 - h * h, h], [-h, 1]]
    if name == "leapfrog":
        return [[1 - h * h / 2, h], [-h + h ** 3 / 4, 1 - h * h / 2]]
    if name == "RK4":
        a = 1 - h ** 2 / 2 + h ** 4 / 24
        b = h - h ** 3 / 6
        return [[a, b], [-b, a]]
    raise ValueError(name)

def det2(m):
    """Determinant of a 2x2 matrix."""
    return m[0][0] * m[1][1] - m[0][1] * m[1][0]

def main():
    h, n, checks = 0.2, 40000, (100, 1000, 10000, 40000)
    print("Pendulum H = p^2/2 - cos q, start (q, p) = (2, 0), step h = 0.2")
    print("Largest energy error max|H - H0| up to time t:")
    print(f"{'method':<18}" + "".join(f"{f't = {k * h:g}':>15}"
                                      for k in checks))
    for name, step in METHODS:
        errs = energy_errors(step, 2.0, 0.0, h, n, set(checks))
        print(f"{name:<18}" + "".join(f"{errs[k]:>15.2e}" for k in checks))
    print()
    print("One step for H = (q^2 + p^2)/2 with h = 1/10: exact det of the map")
    for name, _ in METHODS:
        d = det2(oscillator_step_matrix(name, Fraction(1, 10)))
        print(f"  {name:<18} det = {str(d):<26} ~ {float(d):.12f}")
    grow = float(Fraction(101, 100) ** 1000)
    print(f"Explicit Euler multiplies area by (1.01)^1000 ~ {grow:.3g} "
          "in 1000 steps.")
    print()
    print("Epistemic status: the energy table is numerical evidence from")
    print("floating-point runs of finitely many steps; it shows bounded energy")
    print("error for the two symplectic methods and growth (fast for explicit")
    print("Euler, slow for RK4) for the others, but proves nothing about all")
    print("times. The determinants are exact: the symplectic steps preserve")
    print("area exactly, while Euler expands it and RK4 contracts it slightly.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.

Notice that RK4 is far more accurate than leapfrog over short times, yet its energy error grows steadily, while the symplectic methods' errors stay level. The exact determinants explain why: explicit Euler expands area by the factor 1+h21 + h^2 per step, RK4 contracts it by 1−h6/72+h8/5761 - h^6/72 + h^8/576, and the symplectic steps preserve it exactly.

The second experiment tests Theorem 3 on random matrices. It builds random symplectic matrices of R4\R^4 as products of elementary symplectic maps, and random volume-preserving matrices, and measures the area of the shadow of the unit ball on two planes: the symplectic plane (x1,y1)(x_1, y_1) and the Lagrangian plane (x1,x2)(x_1, x_2).

Shadows of a ball under symplectic and volume-preserving mapsPythonNumerical approximationExperimental evidenceComputationally tested
"""Shadows of a ball: linear non-squeezing, tested on random matrices.

Coordinates on R^4 are (x1, y1, x2, y2) and w = dx1^dy1 + dx2^dy2. For a
matrix A, the image of the unit ball projected to a coordinate plane is an
ellipse (its "shadow"). If the plane is the symplectic plane (x1, y1) and A
is symplectic, the shadow always has area at least pi (the area of a unit
disc): this is linear non-squeezing, in the strong form proved in the lesson.
Volume-preserving matrices can make the same shadow as small as we like, and
even symplectic matrices can shrink the shadow on the Lagrangian plane
(x1, x2).

Evidence: numerical. Finitely many random matrices are sampled with a fixed
seed; the inequality itself is a theorem (see the lesson and the Lean file).
"""

import math
import random

J4 = [[0, 1, 0, 0], [-1, 0, 0, 0], [0, 0, 0, 1], [0, 0, -1, 0]]

def matmul(a, b):
    """Product of two square matrices given as lists of rows."""
    n = len(a)
    return [[sum(a[i][k] * b[k][j] for k in range(n)) for j in range(n)]
            for i in range(n)]

def transpose(a):
    """Transpose of a matrix given as a list of rows."""
    return [list(r) for r in zip(*a)]

def omega(u, v):
    """The standard symplectic form on R^4 in the order (x1, y1, x2, y2)."""
    return u[0] * v[1] - u[1] * v[0] + u[2] * v[3] - u[3] * v[2]

def symplectic_defect(a):
    """Largest entry of |A J A^T - J|; zero exactly when A is symplectic."""
    m = matmul(matmul(a, J4), transpose(a))
    return max(abs(m[i][j] - J4[i][j]) for i in range(4) for j in range(4))

def det4(a):
    """Determinant by cofactor expansion along the first row."""
    def det3(m):
        return (m[0][0] * (m[1][1] * m[2][2] - m[1][2] * m[2][1])
                - m[0][1] * (m[1][0] * m[2][2] - m[1][2] * m[2][0])
                + m[0][2] * (m[1][0] * m[2][1] - m[1][1] * m[2][0]))
    total = 0.0
    for j in range(4):
        minor = [row[:j] + row[j + 1:] for row in a[1:]]
        total += (-1) ** j * a[0][j] * det3(minor)
    return total

def shadow_area(a, i, j):
    """Area of the image of the unit ball under A projected to (coord i, j).

    The shadow is the ellipse {(r_i . u, r_j . u) : |u| <= 1} for the rows
    r_i, r_j of A; its area is pi * sqrt(det G) for their Gram matrix G.
    """
    ri, rj = a[i], a[j]
    gii = sum(x * x for x in ri)
    gjj = sum(x * x for x in rj)
    gij = sum(x * y for x, y in zip(ri, rj))
    return math.pi * math.sqrt(max(gii * gjj - gij * gij, 0.0))

def elementary_symplectic(rng):
    """A random elementary symplectic map of one of three kinds."""
    kind = rng.randrange(3)
    eye = [[float(i == j) for j in range(4)] for i in range(4)]
    if kind == 0:  # an SL(2) map on one of the two symplectic planes
        a, b, c = (rng.uniform(-2, 2) for _ in range(3))
        while abs(a) < 0.2:
            a = rng.uniform(-2, 2)
        d = (1 + b * c) / a
        k = 2 * rng.randrange(2)
        eye[k][k], eye[k][k + 1], eye[k + 1][k], eye[k + 1][k + 1] = a, b, c, d
    elif kind == 1:  # y <- y + S x with S symmetric (couples the planes)
        s11, s12, s22 = (rng.uniform(-2, 2) for _ in range(3))
        eye[1][0], eye[1][2], eye[3][0], eye[3][2] = s11, s12, s12, s22
    else:  # the same rotation of (x1, x2) and of (y1, y2)
        t = rng.uniform(0, 2 * math.pi)
        c, s = math.cos(t), math.sin(t)
        eye[0][0], eye[0][2], eye[2][0], eye[2][2] = c, -s, s, c
        eye[1][1], eye[1][3], eye[3][1], eye[3][3] = c, -s, s, c
    return eye

def random_symplectic(rng, factors=6):
    """A product of several random elementary symplectic maps."""
    a = elementary_symplectic(rng)
    for _ in range(factors - 1):
        a = matmul(a, elementary_symplectic(rng))
    return a

def random_volume_preserving(rng):
    """A random matrix with determinant 1 (Gaussian entries, rescaled)."""
    while True:
        a = [[rng.gauss(0, 1) for _ in range(4)] for _ in range(4)]
        d = det4(a)
        if abs(d) > 1e-3:
            if d < 0:
                a[0] = [-x for x in a[0]]
                d = -d
            s = d ** -0.25
            return [[s * x for x in row] for row in a]

def main():
    rng = random.Random(2024)
    trials = 2000
    sym = [random_symplectic(rng) for _ in range(trials)]
    vol = [random_volume_preserving(rng) for _ in range(trials)]
    defect = max(symplectic_defect(a) for a in sym)
    w = min(omega(a[0], a[1]) for a in sym)
    print(f"{trials} random symplectic matrices: max |A J A^T - J| = "
          f"{defect:.1e}")
    print(f"  smallest w(row x1, row y1) = {w:.12f} (theory: exactly 1)")
    print(f"  smallest det A = {min(det4(a) for a in sym):.9f} (theory: 1)")
    print()
    print("Shadow of the unit ball, as a multiple of pi (unit disc = 1):")
    print(f"{'':30}{'plane (x1, y1)':>16}{'plane (x1, x2)':>16}")
    for label, mats in [("symplectic, smallest", sym),
                        ("volume-preserving, smallest", vol)]:
        s1 = min(shadow_area(a, 0, 1) for a in mats) / math.pi
        s2 = min(shadow_area(a, 0, 2) for a in mats) / math.pi
        print(f"{label:<30}{s1:>16.4f}{s2:>16.4f}")
    squeeze = [[0.5, 0, 0, 0], [0, 0.5, 0, 0], [0, 0, 2, 0], [0, 0, 0, 2]]
    print(f"{'the squeeze diag(1/2,1/2,2,2)':<30}"
          f"{shadow_area(squeeze, 0, 1) / math.pi:>16.4f}"
          f"{shadow_area(squeeze, 0, 2) / math.pi:>16.4f}")
    print()
    print("Symplectic maps never shrink the (x1, y1) shadow below a unit disc,")
    print("but they can shrink the shadow on the Lagrangian plane (x1, x2).")
    print()
    print("Epistemic status: numerical sampling of finitely many matrices with")
    print("a fixed seed. It agrees with the theorem (shadow area >= pi on a")
    print("symplectic plane, proved in the lesson and formalised in Lean for")
    print("the cylinder version) but proves nothing by itself.")

if __name__ == "__main__":
    main()
Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.

Symplectic shadows on (x1,y1)(x_1, y_1) never fall below π\pi; on the Lagrangian plane even symplectic maps shrink the shadow, because ω0\omega_0 vanishes there and imposes no constraint. Both runs are numerical evidence; Theorems 3 and 4 are the proofs.

Explore

Explore: Hamiltonian flows in the plane

The pendulum's phase plane, x=qx = q and y=py = p, with q˙=p\dot q = p and p˙=−sin⁡q\dot p = -\sin q. Start trajectories from several points. Each closed orbit is a level curve of H=12p2−cos⁡qH = \frac12 p^2 - \cos q; the separatrices through (±π,0)(\pm\pi, 0) divide oscillation from rotation. The centres are surrounded by closed orbits, never by spirals: a spiral sink would shrink area, which a Hamiltonian flow cannot do.

The pendulum: a Hamiltonian flow

Trajectories are level curves of H = p²/2 − cos q.

Examples

x′ = y, y′ = −sin(x)

darker, longer arrows = faster forward in time backward in timeequilibrium (hollow = stable or centre)

Click the plane to start a trajectory, or type a start point below.

Start point

Trajectories: 4. They are numerical approximations (fourth-order Runge–Kutta), not exact formulas.

Nonlinear system. Equilibria found numerically in this window, classified by their linearisation (Jacobian matrix):

  1. 1. (−6.283, 0): centre: closed orbits around it (λ = 0 ± 1i)
  2. 2. (−3.142, 0): saddle (unstable) (λ = −1, 1)
  3. 3. (0, 0): centre: closed orbits around it (λ = 0 ± 1i)
  4. 4. (3.142, 0): saddle (unstable) (λ = −1, 1)
  5. 5. (6.283, 0): centre: closed orbits around it (λ = 0 ± 1i)

A centre of the linearisation is inconclusive for a nonlinear system: the true orbits may close up (as for the pendulum and predator–prey) or spiral slowly.

TDD = T²/41, 3, 52, 4
Trace T and determinant D: below the T-axis, saddles; above the dashed parabola D = T²/4, spirals; between them, nodes; on the upper D-axis, centres. Left of the D-axis is stable, right is unstable.

In the plane, symplectic linear maps are exactly the matrices of determinant 11. Try the shear and the rotation presets: the unit square becomes a parallelogram of the same area and orientation. A reflection has determinant −1-1 — area-preserving but orientation-reversing, hence anti-symplectic.

Sp(2, ℝ) = SL(2, ℝ)

In dimension two, symplectic means det = 1.

Your own matrix
λ = 1Ae₁Ae₂
  • image of the grid
  • image of the unit square
  • image of the flag
  • before the transformation
  • invariant line
Entries of the matrix A
A =

The columns of A are the images of e₁ = (1, 0) and e₂ = (0, 1): Ae₁ = (1, 0), Ae₂ = (1, 1)

det A = ad − bc = 1

The unit square (area 1) becomes a parallelogram of area |det A| = 1. Since det A > 0, orientation is preserved.

Invariant lines (real eigenvectors)

λ = 1, v = (1, 0)

Only one invariant line, with eigenvalue 1: there is no second eigenvector direction.

Exercises

Exercises

1. Symplectic geometry and topology

Warm-upHuman

On R2\R^2 with ω=dq∧dp\omega = dq \wedge dp and the convention ιXHω=dH\iota_{X_H}\omega = dH, what is the Hamiltonian vector field of H=p22m+V(q)H = \frac{p^2}{2m} + V(q)?

Choose one

2. Symplectic geometry and topology

CoreHuman

Which of these closed manifolds admit a symplectic form? (Choose all that apply.)

Choose all that apply

3. Symplectic geometry and topology

Warm-upHuman

What is the dimension of the Lie group Sp⁡(4,R)\operatorname{Sp}(4, \R)? (Hint: its Lie algebra is {X:XTJ+JX=0}\{X : X^{\mathsf T} J + J X = 0\}, i.e. X=JSX = JS with SS symmetric.)

4. Symplectic geometry and topology

CoreHuman

In Moser's proof of Darboux's theorem we define a time-dependent vector field XtX_t by ιXtωt=−σ\iota_{X_t}\omega_t = -\sigma. Which property of ωt\omega_t guarantees that this equation has a (unique) solution XtX_t?

Choose one

5. Symplectic geometry and topology

CoreHuman

In coordinates (x1,y1,x2,y2)(x_1, y_1, x_2, y_2) on R4\R^4 with ω0=dx1∧dy1+dx2∧dy2\omega_0 = dx_1\wedge dy_1 + dx_2 \wedge dy_2, which diagonal linear map is volume-preserving and maps the unit ball into the cylinder {x12+y12≤14}\{x_1^2 + y_1^2 \le \frac14\} — showing that Gromov's theorem fails for volume-preserving maps?

Choose one

6. Symplectic geometry and topology

CoreHuman

Let φ\varphi be a Hamiltonian diffeomorphism of the torus T2T^2 with standard area form, all of whose fixed points are non-degenerate. What lower bound for #Fix⁡(φ)\#\operatorname{Fix}(\varphi) does the (proved) Arnold conjecture give?

7. Symplectic geometry and topology

StretchHuman

Which of the following are established theorems (not conjectures)? (Choose all that apply.)

Choose all that apply

8. Symplectic geometry and topology

CoreFormal

The Lean theorem hamiltonian_energy_conserved assumes hω : ∀ v, ω v v = 0 and hX : ∀ z w, ω (X z) w = dH z w, and concludes H (γ s) = H (γ t) for a flow line γ of X. Which modification would make the statement false?

Choose one

9. Symplectic geometry and topology

Warm-upHuman

A piece of the round sphere is never isometric to a piece of the flat plane, but any two area forms on surfaces are locally equivalent. Which theorem gives the second statement, in all dimensions?

Choose one

10. Symplectic geometry and topology

StretchComputational

For the harmonic oscillator H=12(q2+p2)H = \frac12(q^2 + p^2), one step of symplectic Euler is p′=p−hqp' = p - hq, then q′=q+hp′q' = q + hp'; one step of explicit Euler is q′=q+hpq' = q + hp, p′=p−hqp' = p - hq. Write symplectic_euler_matrix(h) and explicit_euler_matrix(h) returning the 2×22 \times 2 matrices (lists of rows, acting on the column (q,p)(q, p)), and det2(m). The tests use exact fractions.

Runs entirely in your browser, in an isolated worker. Nothing is sent to a server.
Common misconceptionsH

Common misconceptions

Misconception

"Symplectic maps are just volume-preserving maps." Only in dimension 22. In dimension 2n≥42n \ge 4 the group of symplectomorphisms is a much smaller, rigid subgroup of the volume-preserving diffeomorphisms: the squeeze (x1,y1,x2,y2)↦(εx1,εy1,x2/ε,y2/ε)(x_1, y_1, x_2, y_2) \mapsto (\varepsilon x_1, \varepsilon y_1, x_2/\varepsilon, y_2/\varepsilon) preserves volume and puts the unit ball inside a cylinder of radius ε\varepsilon, which Gromov's theorem forbids for every symplectic map.

Misconception

"Symplectic geometry has curvature invariants like Riemannian geometry." It has none: by Darboux's theorem every symplectic manifold is locally isomorphic to (R2n,ω0)(\R^{2n}, \omega_0). All symplectic invariants — capacities, Gromov–Witten invariants, Floer homology — are global.

Misconception

"Any non-degenerate 22-form will do." Closedness is essential: it is what makes Hamiltonian flows preserve ω\omega (Theorem 4 (ii)) and what makes Moser's trick and Darboux's theorem work. A non-degenerate 22-form that is not closed is an almost symplectic structure; S6S^6 has one but no symplectic form.

Misconception

"Every symplectomorphism isotopic to the identity is Hamiltonian, so it has fixed points." Translations of the torus are symplectic, isotopic to the identity and fixed-point-free. The obstruction is the flux, a class in H1(M;R)H^1(M; \R); the Arnold conjecture concerns Hamiltonian diffeomorphisms only.

Misconception

"Symplectic integrators conserve energy." They do not conserve HH exactly; they conserve a modified Hamiltonian H~=H+O(hp)\tilde H = H + O(h^p) up to exponentially small errors (for analytic HH), so the energy error oscillates without drifting over very long times. And they are not automatically more accurate than non-symplectic methods over short times — compare RK4 and leapfrog in the experiment.

ViewpointsH

Viewpoints

Topology— Fixed points, Morse theory and the loop space

The Arnold conjecture is a statement about topology forcing dynamics: the Betti numbers of MM bound the number of periodic orbits of every non-degenerate Hamiltonian system on it. Floer homology realises Arnold's insight that a Hamiltonian diffeomorphism behaves like the time-one map of the gradient flow of a function: it is the Morse homology of the action functional on the free loop space LM\mathcal{L}M, computed with holomorphic cylinders. Variants — Lagrangian Floer homology, symplectic homology, embedded contact homology — became tools far beyond symplectic geometry, for instance in Kronheimer–Mrowka's and Ozsváth–Szabó's work on 3-manifolds and knots (see low-dimensional topology).

Geometry— Compatible complex structures and the Erlangen programme

In Klein's sense, symplectic geometry on R2n\R^{2n} is the geometry of Sp⁡(2n,R)\operatorname{Sp}(2n, \R), just as Euclidean geometry is that of O(2n)O(2n) and complex geometry that of GL(n,C)GL(n, \C); the intersection of any two of these three groups is the unitary group U(n)U(n) (the "two out of three" property). On a symplectic manifold the space of almost complex structures JJ compatible with ω\omega (meaning g=ω(⋅,J⋅)g = \omega(\cdot, J\cdot) is a Riemannian metric) is non-empty and contractible, so every symplectic manifold has a canonical homotopy class of almost complex structures, hence Chern classes. Choosing JJ is the geometer's entry point: it gives a metric, and JJ-holomorphic curves, whose ω\omega-area equals their Riemannian area, are minimal surfaces. When JJ is integrable and ω\omega compatible, MM is Kähler.

Analysis— Elliptic PDE and compactness

Gromov's and Floer's theories are analysis. The Cauchy–Riemann operator ∂ˉJu=12(du+J du j)\bar\partial_J u = \frac12(du + J\, du\, j) is a non-linear elliptic operator; its linearisation is Fredholm, with index given by the Riemann–Roch theorem, so moduli spaces of holomorphic curves are finite-dimensional manifolds when transversality holds. Gromov's compactness theorem says sequences of curves with bounded energy converge after bubbling — energy can concentrate at points and split off spheres — which is the analogue of Uhlenbeck's compactness for Yang–Mills instantons (see gauge theory) and of the concentration-compactness phenomena of geometric analysis.

Algebra— Poisson algebras and quantisation

The Poisson bracket makes C∞(M)C^\infty(M) a Poisson algebra: a commutative algebra with a Lie bracket that is a derivation in each argument. Quantisation asks to deform it into a non-commutative algebra with f⋆g=fg+iℏ2{f,g}+O(ℏ2)f \star g = fg + \frac{i\hbar}{2}\{f, g\} + O(\hbar^2). On R2n\R^{2n} the Moyal product does this; De Wilde–Lecomte and Fedosov constructed such star products on every symplectic manifold, and Kontsevich (1997) on every Poisson manifold, via his formality theorem. Groenewold's theorem (1946) shows the limits: no linear map from polynomials on R2\R^2 to operators turns all Poisson brackets into commutators 1iℏ[⋅,⋅]\frac{1}{i\hbar}[\cdot, \cdot] exactly, so quantisation is genuinely a deformation, not a representation (see quantum mechanics).

Physics— Phase space, uncertainty and the camel

Symplectic geometry is the geometry of classical phase space: Hamilton's equations, Noether's theorem, Liouville's theorem and canonical transformations are its first theorems. There is a suggestive parallel between non-squeezing and the uncertainty principle: you cannot squeeze a cloud of classical states into a cylinder over a conjugate plane (q1,p1)(q_1, p_1) of area smaller than its own cross-section, just as Δq1 Δp1≥ℏ/2\Delta q_1\, \Delta p_1 \ge \hbar / 2 forbids squeezing a quantum state's spread in one conjugate pair. This is an analogy — non-squeezing is a theorem about classical maps, not a derivation of quantum mechanics. It has been made precise only in a limited setting: for Gaussian states, Maurice de Gosson (2009) rephrased the Robertson–Schrödinger uncertainty relations as a lower bound on the symplectic capacity of the covariance ellipsoid.

Category theory— The symplectic creed and the Fukaya category

Weinstein's "symplectic creed" is that everything is a Lagrangian submanifold: the graph of a symplectomorphism φ:M→N\varphi : M \to N is a Lagrangian in Mˉ×N\bar M \times N, and composition of maps becomes composition of Lagrangian correspondences. This suggests a "symplectic category" with Lagrangian correspondences as morphisms, but composition is only well behaved for transverse correspondences — a problem Wehrheim and Woodward addressed by passing to sequences of correspondences and Floer theory. The Fukaya category, an A∞A_\infty-category of Lagrangians, is the categorical heart of homological mirror symmetry.

Wonder Trails

Wonder Trails

The Kepler problem is a Hamiltonian system with more conserved quantities than degrees of freedom; its hidden symmetry is the reason all bound orbits close. This optional trail starts there.

Wonder Trail · Optional · never gradedWhy do planets move on ellipses?Planets move around the Sun on ellipses, with the Sun at one focus. Why ellipses — and not circles, egg shapes or spirals?Follow the trail
History & global context

History and global context

  • 1808–1838: the mechanics. Lagrange (1808–1810) and Poisson (1809) introduced the brackets that now bear their names while studying perturbations of planetary orbits. William Rowan Hamilton (Dublin, 1834–35) recast mechanics in the form of his canonical equations, and Joseph Liouville proved the conservation of phase-space volume (1838). Carl Gustav Jacobi developed the theory of canonical transformations.
  • 1882–1912: geometry and topology appear. Gaston Darboux proved his normal form for closed non-degenerate 22-forms (1882). Henri Poincaré, studying the three-body problem, stated his "last geometric theorem" (1912): an area-preserving twist map of an annulus has at least two fixed points. George Birkhoff proved it in 1913. It is the ancestor of the Arnold conjecture.
  • 1939: the name. Hermann Weyl coined symplectic in The Classical Groups (1939), replacing the earlier "complex group" by a Greek calque of the Latin complex ("braided together").
  • 1960s–70s: the modern subject. Jürgen Moser's stability theorem (1965); Vladimir Arnold's conjecture (Moscow, 1960s) and his Mathematical Methods of Classical Mechanics (1974); Jean-Marie Souriau's moment map and geometric mechanics (Marseille, 1970); Alexandre Kirillov's orbit method (1962) and the Kirillov–Kostant–Souriau forms; Alan Weinstein's Lagrangian neighbourhood theorem (1971) and creed; reduction by Kenneth Meyer and by Jerrold Marsden and Weinstein (1973–74).
  • 1980s: rigidity. Charles Conley and Eduard Zehnder proved the Arnold conjecture for tori (1983). Mikhail Gromov introduced pseudo-holomorphic curves and proved non-squeezing (1985). Andreas Floer created Floer homology (1987–89) before his death in 1991. Yakov Eliashberg, Dusa McDuff, Helmut Hofer and Claude Viterbo shaped symplectic topology. In Beijing, Feng Kang pioneered symplectic difference schemes for Hamiltonian systems (1984–85), independently of Ronald Ruth's work in accelerator physics (1983) — the origin of the integrators in the computation section.
  • 1990s–today. Kontsevich's homological mirror symmetry (1994); Kenji Fukaya and Kaoru Ono in Japan and Gang Liu and Gang Tian proved the rational Arnold conjecture (1998–99); Fukaya, Oh, Ohta and Ono built Lagrangian Floer theory; Paul Seidel developed Fukaya categories; Clifford Taubes proved the Weinstein conjecture in dimension three (2007). Ana Cannas da Silva's lectures and McDuff–Salamon's books made the subject teachable worldwide.
Further reading

Further reading

  • Ana Cannas da Silva, Lectures on Symplectic Geometry (2001) — the gentlest complete introduction: Darboux, Moser, moment maps, toric manifolds.
  • Dusa McDuff and Dietmar Salamon, Introduction to Symplectic Topology (1995; 3rd ed. 2017) — the standard graduate text, including capacities and non-squeezing.
  • V. I. Arnold, Mathematical Methods of Classical Mechanics (1974; English 1978) — the mechanics and the geometry together, with the conjecture in an appendix.
  • Helmut Hofer and Eduard Zehnder, Symplectic Invariants and Hamiltonian Dynamics (1994) — capacities and periodic orbits.
  • Dusa McDuff and Dietmar Salamon, J-holomorphic Curves and Symplectic Topology (2004; 2nd ed. 2012) — the analysis behind Gromov's theorem.
  • Michèle Audin and Mihai Damian, Morse Theory and Floer Homology (2014) — a complete proof of the Arnold conjecture for aspherical manifolds.
  • Leonid Polterovich, The Geometry of the Group of Symplectic Diffeomorphisms (2001).
  • Ernst Hairer, Christian Lubich and Gerhard Wanner, Geometric Numerical Integration (2002) — symplectic integrators and backward error analysis.

A reading path: Cannas da Silva Parts I–IV → McDuff–Salamon (Introduction) Ch. 1–3 and 12 → Audin–Damian for Floer theory, or Hofer–Zehnder for capacities and dynamics.