Measuring curvature from the inside
In the 1820s Carl Friedrich Gauss led a geodetic survey of the Kingdom of Hanover, triangulating the land with theodolites and measuring the angles of large triangles. Out of that work came a startling theorem: a two-dimensional creature living on a surface, measuring only lengths and angles within the surface, can determine its curvature. Gauss called it the Theorema Egregium — the remarkable theorem. A sheet of paper can be rolled into a cylinder without stretching, so the cylinder is "flat" to its inhabitants; no piece of a sphere can be flattened without distortion, which is why every map of the Earth distorts something.
Riemann turned this into a programme (1854): describe a space of any dimension by an inner product on each tangent space — a way to measure infinitesimal lengths and angles — and derive everything else from it. Sixty years later Einstein used exactly this geometry, in its Lorentzian form, to describe gravity; today the equations of general relativity are corrected for in every GPS receiver. In pure mathematics, Riemannian geometry links local information (curvature) to global information (topology): the total curvature of a closed surface is times its Euler characteristic, and a complete manifold whose Ricci curvature is bounded below by a positive constant must be compact.
This lesson assumes smooth manifolds and the classical differential geometry of curves and surfaces. For the Gauss–Bonnet theorem it uses the Poincaré–Hopf theorem from differential topology.
Straight lines and their spreading
On a curved surface there are no straight lines, but there are geodesics: curves that are "as straight as possible", along which an ant walking forward never turns left or right. On a sphere they are the great circles. Two ants that leave the north pole walking straight ahead along different meridians move apart at first, and then — because the sphere curves — come together again at the south pole. On a saddle-shaped surface nearby geodesics spread apart faster than in the plane. That rate of spreading is curvature: positive curvature focuses geodesics, negative curvature disperses them.
A second picture: carry a spear along a closed path, always keeping it "parallel to itself" — never rotating it within the surface. In the plane it returns pointing the same way. On the sphere, carry it from the north pole down a meridian to the equator, along the equator a quarter of the way round, and back up to the pole: it returns rotated by , which is the area of the triangle you walked round (it covers one eighth of a sphere of area ). Curvature is the infinitesimal rotation of parallel transport round small loops, and for geodesic triangles the total turn equals the angle excess .
Metrics, connections, geodesics and curvature
Definition— Riemannian metric
A Riemannian metric on a smooth manifold is a choice of inner product on each tangent space , depending smoothly on : in a chart, with smooth, symmetric and positive definite. The length of a piecewise smooth curve is , and the Riemannian distance is the infimum of lengths of curves from to ; it is a metric inducing the manifold topology. An isometry is a diffeomorphism preserving .
Every smooth manifold admits Riemannian metrics (glue Euclidean metrics from charts with a partition of unity); a metric is extra structure, not something the manifold has automatically.
Definition— connection, Levi-Civita connection
An (affine) connection is a map on vector fields that is -linear in , -linear in , and satisfies the Leibniz rule . It is torsion-free if , and compatible with if . The Levi-Civita connection is a torsion-free connection compatible with . In coordinates , with Christoffel symbols .
Definition— parallel transport, geodesic, exponential map
A connection differentiates vector fields along a curve : . is parallel if ; parallel transport along is a linear isometry between tangent spaces (for the Levi-Civita connection). A geodesic is a curve with , i.e.
For let be the geodesic with , ; the exponential map is , defined near .
Definition— curvature
The curvature tensor is ; it is -linear in all three arguments, so is a multilinear map on . Write . For a -plane spanned by , the sectional curvature is
independent of the basis. The Ricci curvature is for an orthonormal basis , so for a unit vector ; the scalar curvature is . On a surface all three carry the same information: the Gaussian curvature .
Definition— Jacobi field, conjugate point
A Jacobi field along a geodesic is a vector field along satisfying the Jacobi equation . Jacobi fields are exactly the variation fields of families of geodesics. A point is conjugate to if a non-zero Jacobi field vanishes at both and .
Model spaces and surfaces of revolution
Example— The three model geometries
- Euclidean space , : all , geodesics are straight lines, .
- The round sphere with the induced metric: geodesics are great circles; sectional curvature . The sphere of radius has .
- Hyperbolic space, for example the upper half-plane with . Its non-zero Christoffel symbols are , , , so the geodesic equations are
Vertical lines and semicircles centred on the real axis, such as , are unit-speed geodesics (Lean checks the semicircle below), and .
In each model space the curvature tensor is with ; then every sectional curvature is and .
Example— Surfaces of revolution and Clairaut's relation
Rotating a unit-speed profile curve , , about the -axis gives the metric . Meridians ( constant) are geodesics; a parallel () is a geodesic exactly when (the equator of a sphere, the outer and inner equators of a torus). The geodesic equation for is , which says precisely that
For a unit-speed geodesic, where is the angle with the parallel, so Clairaut's relation holds: is constant along every geodesic. A geodesic can therefore never reach the region where is smaller than this constant — it turns back at the latitude where , as the second experiment shows on a torus.
Example— A flat torus and a flat cylinder
with the metric induced from is a flat torus: , and its closed geodesics are the images of lines with rational slope. The cylinder is flat too — a rolled-up sheet of paper. The doughnut-shaped torus in is diffeomorphic to the flat torus but not isometric to it: its curvature is , positive on the outside and negative on the inside.
The fundamental theorem of Riemannian geometry
Theorem— Theorem 1 (Levi-Civita)
On every Riemannian manifold there is exactly one connection that is torsion-free and compatible with the metric. It is given by the Koszul formula
and in coordinates by .
Proof
Uniqueness. Let be torsion-free and compatible. Expand three instances of compatibility:
Use torsion-freeness in the form , and : the right-hand side becomes , which is the Koszul formula. Its right-hand side does not involve , and since the metric is non-degenerate, for all determines . So there is at most one such connection.
Existence. Define by the Koszul formula: one checks that the right-hand side is -linear in , so by non-degeneracy it defines a vector field , and then that this is a connection, torsion-free and compatible — each a direct computation with the Leibniz rule . Coordinates. For , , all brackets vanish, leaving ; multiply by the inverse matrix . ∎
∎
For the half-plane, and , which gives the Christoffel symbols listed in the examples; the first experiment computes them symbolically.
Geodesics, the exponential map and completeness
Geodesics are solutions of a second-order ODE, so for each and there is a unique maximal geodesic , and . The exponential map is smooth near with , so by the inverse function theorem it is a diffeomorphism from a ball onto a normal neighbourhood of .
Theorem— Theorem 2 (geodesics minimise locally; stated)
(Gauss lemma) Radial geodesics from meet the geodesic spheres orthogonally. Consequently, if is a diffeomorphism on , then for the radial geodesic , , is the unique shortest curve (up to reparametrisation) from to . Conversely, every length-minimising curve parametrised by arc length is a geodesic.
(Proofs: do Carmo, Chapter 3; Lee, Introduction to Riemannian Manifolds, Chapter 6.) Locally, then, geodesics are shortest paths. Globally they need not be: a great-circle arc of length greater than on the unit sphere is a geodesic, but the complementary arc is shorter. The obstruction is the conjugate point at distance (Theorem 5 below).
Theorem— Theorem 3 (Hopf–Rinow; stated)
For a connected Riemannian manifold the following are equivalent: (a) is a complete metric space; (b) every geodesic is defined for all time; (c) is defined on all of for some ; (d) closed bounded subsets of are compact. If they hold, any two points of are joined by a geodesic of length .
(Proof: do Carmo, Chapter 7.) Compact manifolds are complete. is not: the points and have distance , but no curve of length joins them.
The curvature tensor
Theorem— Theorem 4 (symmetries of the curvature tensor)
For all : (i) ; (ii) ; (iii) (first Bianchi identity); and (iv) .
Proof
(i) is clear from the definition. (ii) is metric compatibility: it suffices to show , and ; subtract the same with exchanged and to get . (iii) For coordinate fields (all brackets ) the cyclic sum is by torsion-freeness, and is tensorial. (iv) follows from (i)–(iii) alone: write the Bianchi identity (iii) for the four cyclic arrangements , , , and add them; using (i) and (ii), eight of the twelve terms cancel in pairs and the rest give . ∎
∎
Step (iv) is purely algebraic, and Lean checks it below for an arbitrary function satisfying (i)–(iii) — no linearity needed. By (i)–(iv), the quadratic form determines , so the sectional curvatures determine the curvature tensor. In particular, if all sectional curvatures at equal , then and .
Curvature of a surface from an orthonormal frame. Let be a positively oriented orthonormal frame on an open set of an oriented surface, with dual coframe , and let be its connection -form; then and .
Theorem— Lemma (structure equation)
, where is the area form.
Proof
, and . The last term is . Hence , and . ∎
∎
Example— Curvature of dt² + f(t)² dθ²
Take , , so , . From and (Cartan's first structure equations , , which encode torsion-freeness) we find . Then , so
(round sphere) gives ; (the plane in polar coordinates) gives ; (hyperbolic plane in polar coordinates) gives . For a conformal metric a similar computation gives ; for the half-plane, and .
Both formulas use only the metric, so the Gaussian curvature is intrinsic. For a surface in , Gauss's extrinsic curvature (the determinant of the shape operator) equals this : that identification is the Theorema Egregium.
Jacobi fields and conjugate points
If is a smooth family of geodesics, the variation field satisfies , the Jacobi equation. So Jacobi fields describe how nearby geodesics spread.
Example— Constant curvature
Let be a unit-speed geodesic in a space of constant curvature , a parallel unit field orthogonal to , and . Then , and the Jacobi equation is . With , :
For the Jacobi field vanishes again at : the point is conjugate to — on the sphere of radius , the antipode. For there are no conjugate points.
Theorem— Theorem 5 (Jacobi; stated)
A geodesic that contains a point conjugate to its starting point in its interior is not locally length-minimising: some nearby curve with the same endpoints is shorter.
(Proof via the index form: do Carmo, Chapter 5, or Milnor, Morse Theory, §15.) For the unit sphere this explains the failure of great-circle arcs longer than . In the other direction, Cartan–Hadamard: if is complete, simply connected and has , then is a diffeomorphism, so is diffeomorphic to .
The Gauss–Bonnet theorem
Two classical consequences of the structure equation, for a geodesic triangle (three geodesic sides, interior angles ) contained in a disc on an oriented surface:
(Sketch: by Stokes; along a unit-speed boundary curve making angle with , with on geodesic sides; and the total turning of the tangent round , plus the exterior angles , , , is by Hopf's Umlaufsatz.) The widget below measures both sides on the sphere and in the hyperbolic plane. The global theorem needs no triangulation if we use a vector field.
Theorem— Theorem 6 (Gauss–Bonnet)
For every closed oriented Riemannian -manifold ,
Proof
(Following Chern.) Choose a smooth vector field on with finitely many zeros (for example the gradient of a Morse function). On let , let complete it to a positive orthonormal frame, and let be the connection form, so on . Let be small closed geodesic discs of radius round , and . Its boundary is with the orientation opposite to that of as the boundary of . By Stokes,
each circle now traversed anticlockwise. On the disc choose any positive orthonormal frame , with connection form , smooth on all of . On write with a locally defined angle . Differentiating, , so . As we go once round , increases by times the number of turns of relative to the frame , which is . Hence
As , (a smooth form integrated over a curve of length ) and . Therefore by the Poincaré–Hopf theorem. ∎
∎
Consequences: a metric on the sphere must have positive curvature somewhere, and a metric on a surface of genus must have negative curvature somewhere; a closed orientable surface with everywhere is a sphere, and one with is a torus. The left-hand side is local geometry, the right-hand side global topology. Chern's generalisation (1944) expresses the Euler characteristic of a closed even-dimensional manifold as the integral of a polynomial in the curvature (the Pfaffian).
The Bonnet–Myers theorem
We need one more tool. For a geodesic with unit speed and a proper variation (endpoints fixed) with variation field , the energy satisfies the second variation formula (do Carmo, Chapter 9):
Theorem— Theorem 7 (Bonnet–Myers)
Let be a complete connected Riemannian -manifold () with for a constant . Then ; hence is compact, and its fundamental group is finite.
Proof
Let . By Hopf–Rinow there is a unit-speed geodesic from to with . Suppose . Choose parallel fields along that together with are orthonormal, and let , proper variation fields with . Summing the second variations,
The last integral equals , which is negative because . So some , and the variation in the direction has for small . By Cauchy–Schwarz , so is a shorter curve from to , contradicting . Hence for all .
is complete and bounded, so it is compact by Hopf–Rinow (d). Its universal cover, with the pulled-back metric, is complete and satisfies the same Ricci bound, so it is compact too; a covering of a compact space by a compact space has finitely many sheets, so is finite. ∎
∎
The bound is sharp: the unit sphere has and diameter (Cheng's theorem says it is the only case of equality). The hypothesis needs a positive lower bound: the paraboloid is complete with everywhere but at infinity, and it is not compact. Bonnet–Myers is the first of the comparison theorems — Rauch, Toponogov, Bishop–Gromov — which compare a manifold with the model space of the same curvature bound.
Riemannian geometry in Lean and Mathlib
Mathlib's Riemannian geometry is young. It has Riemannian metrics on vector bundles, the class IsRiemannianManifold I M (the distance equals the infimum of lengths of paths), the Riemannian distance riemannianEDist and its basic properties, and the theorem that an inner product space is a Riemannian manifold. We cite two of these:
open Bundle in
/-- **In Euclidean space, the Riemannian distance is the usual distance**: the infimum of the
lengths of `C¹` paths from `x` to `y` equals `‖x - y‖`, attained by the straight segment. This is
Mathlib's instance `IsRiemannianManifold 𝓘(ℝ, F) F` for an inner product space `F`. -/
theorem euclidean_riemannian_distance {F : Type*} [NormedAddCommGroup F] [InnerProductSpace ℝ F]
(x y : F) : edist x y = riemannianEDist (modelWithCornersSelf ℝ F) x y :=
IsRiemannianManifold.out x y/-- The **triangle inequality** for the Riemannian distance (the infimum of lengths of `C¹`
paths) on any manifold whose tangent spaces carry a norm — in particular an inner product:
concatenating paths adds lengths. Mathlib's `riemannianEDist_triangle`. -/
theorem riemannian_triangle {E : Type*} [NormedAddCommGroup E] [NormedSpace ℝ E]
{H : Type*} [TopologicalSpace H] {I : ModelWithCorners ℝ E H}
{M : Type*} [TopologicalSpace M] [ChartedSpace H M]
[∀ x : M, ENorm (TangentSpace I x)] [∀ x : M, ENormSMulClass ℝ (TangentSpace I x)]
(x y z : M) :
riemannianEDist I x z ≤ riemannianEDist I x y + riemannianEDist I y z :=
riemannianEDist_triangleThe Levi-Civita connection of a general metric, geodesics, curvature tensors and the global theorems are not yet in Mathlib. What we formalise instead is the algebra and analysis that the lesson's proofs reduce to at a single point or along a single geodesic. First, Theorem 4(iv): pair symmetry follows from the two antisymmetries and the Bianchi identity, for any function whatsoever:
/-- **Pair symmetry of the curvature tensor.** Any function `R(x, y, z, w)` that is antisymmetric
in `x, y`, antisymmetric in `z, w`, and satisfies the first Bianchi identity
`R(x,y,z,w) + R(y,z,x,w) + R(z,x,y,w) = 0`, also satisfies `R(x,y,z,w) = R(z,w,x,y)`.
The proof adds four instances of the Bianchi identity (the "octahedron" argument); no linearity
is needed. -/
theorem pair_symmetry {E : Type*} (R : E → E → E → E → ℝ)
(anti₁ : ∀ x y z w, R x y z w = -R y x z w)
(anti₂ : ∀ x y z w, R x y z w = -R x y w z)
(bianchi : ∀ x y z w, R x y z w + R y z x w + R z x y w = 0) (x y z w : E) :
R x y z w = R z w x y := by
have b1 := bianchi x y z w
have b2 := bianchi y z w x
have b3 := bianchi z w x y
have b4 := bianchi w x y z
linarith [anti₁ y z x w, anti₂ y z x w, anti₁ z x y w, anti₂ z x y w,
anti₁ y z w x, anti₂ y z w x, anti₁ z w y x, anti₂ z w y x, anti₁ w y z x, anti₂ w y z x,
anti₁ w x z y, anti₂ w x z y, anti₁ x z w y, anti₂ x z w y,
anti₁ w x y z, anti₂ w x y z, anti₁ x y w z, anti₂ x y w z, anti₁ y w x z, anti₂ y w x z,
anti₂ z w y x, anti₁ x z y w, anti₂ y x z w, anti₁ y x w z,
anti₂ x w z y, anti₁ w y x z, anti₂ w x z y]Next, the model curvature tensors: their symmetries, their sectional curvature in every plane, and their Ricci curvature , computed by tracing over the standard orthonormal basis of :
/-- **The curvature tensor of constant curvature `k`**:
`R(x, y, z, w) = k (⟨y, z⟩⟨x, w⟩ - ⟨x, z⟩⟨y, w⟩)`, i.e. `R(x, y)z = k(⟨y, z⟩x - ⟨x, z⟩y)` with the
convention `R(x,y,z,w) = ⟨R(x,y)z, w⟩`. It is the curvature tensor of the round sphere of radius
`1/√k` (`k > 0`), of Euclidean space (`k = 0`) and of hyperbolic space (`k < 0`). -/
def constCurv (k : ℝ) (x y z w : E) : ℝ :=
k * (inner ℝ y z * inner ℝ x w - inner ℝ x z * inner ℝ y w)/-- The constant-curvature tensor has the symmetries of a curvature tensor: antisymmetry in
each pair, and the first Bianchi identity (the six terms cancel in pairs because the inner
product is symmetric). -/
theorem constCurv_symmetries (k : ℝ) (x y z w : E) :
constCurv k x y z w = -constCurv k y x z w ∧
constCurv k x y z w = -constCurv k x y w z ∧
constCurv k x y z w + constCurv k y z x w + constCurv k z x y w = 0 := by
simp only [constCurv]
refine ⟨by ring, by ring, ?_⟩
rw [real_inner_comm x y, real_inner_comm x z, real_inner_comm y z]
ring/-- **Its sectional curvature is `k`** for every plane: `R(x, y, y, x) = k (‖x‖²‖y‖² - ⟨x,y⟩²)`,
and the sectional curvature of the plane spanned by `x, y` is `R(x,y,y,x)` divided by
`‖x‖²‖y‖² - ⟨x,y⟩²` (the squared area of the parallelogram). -/
theorem sectional_constCurv (k : ℝ) (x y : E) :
constCurv k x y y x = k * (‖x‖ ^ 2 * ‖y‖ ^ 2 - inner ℝ x y ^ 2) := by
simp only [constCurv, real_inner_self_eq_norm_sq, real_inner_comm y x]
ring/-- **Ricci curvature in constant curvature `k`** on `ℝⁿ`: tracing over an orthonormal basis,
`Ric(y, z) = Σᵢ R(eᵢ, y, z, eᵢ) = (n - 1) k ⟨y, z⟩`. The key step is Parseval's identity
`Σᵢ ⟨eᵢ, z⟩⟨y, eᵢ⟩ = ⟨y, z⟩`. This is the hypothesis `Ric ≥ (n - 1)k` of the Bonnet–Myers
theorem, with equality for the round sphere. -/
theorem ricci_constCurv (n : ℕ) (k : ℝ) (y z : EuclideanSpace ℝ (Fin n)) :
∑ i, constCurv k (EuclideanSpace.basisFun (Fin n) ℝ i) y z
(EuclideanSpace.basisFun (Fin n) ℝ i) = (n - 1) * k * inner ℝ y z := by
have hpars : ∑ i, inner ℝ (EuclideanSpace.basisFun (Fin n) ℝ i) z *
inner ℝ y (EuclideanSpace.basisFun (Fin n) ℝ i) = inner ℝ y z := by
rw [← (EuclideanSpace.basisFun (Fin n) ℝ).sum_inner_mul_inner y z]
exact Finset.sum_congr rfl fun i _ => mul_comm _ _
have hnorm : ∀ i, inner ℝ (EuclideanSpace.basisFun (Fin n) ℝ i)
(EuclideanSpace.basisFun (Fin n) ℝ i) = (1 : ℝ) := fun i => by
rw [real_inner_self_eq_norm_sq, (EuclideanSpace.basisFun (Fin n) ℝ).orthonormal.1 i]
norm_num
simp only [constCurv, hnorm, mul_one]
rw [← Finset.mul_sum, Finset.sum_sub_distrib, hpars]
simp
ringThe Jacobi equation in constant curvature , its solution , and the first conjugate point at :
/-- **Jacobi fields in constant curvature `k > 0`.** Along a unit-speed geodesic, a normal Jacobi
field `J(t) E(t)` (with `E` parallel) satisfies `J'' + kJ = 0`. The solution with `J(0) = 0`,
`J'(0) = 1` is `J(t) = sin(√k t)/√k`: we check `J' = cos(√k t)`, `(cos(√k t))' = -k J(t)`, and
that `J` vanishes again at `t = π/√k` — the first **conjugate point**, where geodesics leaving a
point meet again (the antipode, on the sphere of radius `1/√k`). -/
theorem jacobi_constant_curvature {k : ℝ} (hk : 0 < k) :
(∀ t, HasDerivAt (fun t => sin (√k * t) / √k) (cos (√k * t)) t) ∧
(∀ t, HasDerivAt (fun t => cos (√k * t)) (-k * (sin (√k * t) / √k)) t) ∧
sin (√k * 0) / √k = 0 ∧ sin (√k * (π / √k)) / √k = 0 ∧
∀ t, 0 < t → t < π / √k → 0 < sin (√k * t) / √k := by
have hs : 0 < √k := Real.sqrt_pos.mpr hk
have hsq : √k * √k = k := Real.mul_self_sqrt hk.le
refine ⟨fun t => ?_, fun t => ?_, by simp, ?_, fun t ht ht' => ?_⟩
· have h := ((hasDerivAt_id t).const_mul √k).sin.div_const √k
simp only [id, mul_one] at h
convert h using 1
field_simp
· have h := ((hasDerivAt_id t).const_mul √k).cos
simp only [id, mul_one] at h
convert h using 1
calc -k * (sin (√k * t) / √k) = -(√k * √k) * (sin (√k * t) / √k) := by rw [hsq]
_ = -sin (√k * t) * √k := by field_simp
· rw [mul_div_cancel₀ π hs.ne', sin_pi, zero_div]
· apply div_pos _ hs
apply sin_pos_of_pos_of_lt_pi (mul_pos hs ht)
calc √k * t < √k * (π / √k) := mul_lt_mul_of_pos_left ht' hs
_ = π := mul_div_cancel₀ π hs.ne'The heart of the Bonnet–Myers proof — the value of the index-form integral and its negativity for :
/-- **The index-form integral in the Bonnet–Myers theorem.** For `V(t) = sin(πt/L)`,
`∫₀ᴸ (V'(t)² - k V(t)²) dt = (L/2)((π/L)² - k)`. Summed over `n - 1` parallel orthonormal fields
along a geodesic of length `L`, with `Ric ≥ (n-1)k`, this bounds the second variation of energy. -/
theorem myers_index_form {L : ℝ} (hL : 0 < L) (k : ℝ) :
∫ t in (0 : ℝ)..L, ((π / L) ^ 2 * cos (π / L * t) ^ 2 - k * sin (π / L * t) ^ 2) =
L / 2 * ((π / L) ^ 2 - k) := by
have hc : π / L ≠ 0 := div_ne_zero pi_ne_zero hL.ne'
have hcos : ∫ t in (0 : ℝ)..L, cos (π / L * t) ^ 2 = L / 2 := by
rw [intervalIntegral.integral_comp_mul_left (fun x => cos x ^ 2) hc, mul_zero,
div_mul_cancel₀ π hL.ne', integral_cos_sq]
simp
field_simp
have hsin : ∫ t in (0 : ℝ)..L, sin (π / L * t) ^ 2 = L / 2 := by
rw [intervalIntegral.integral_comp_mul_left (fun x => sin x ^ 2) hc, mul_zero,
div_mul_cancel₀ π hL.ne', integral_sin_sq]
simp
field_simp
have hi1 : IntervalIntegrable (fun t => (π / L) ^ 2 * cos (π / L * t) ^ 2) MeasureTheory.volume
0 L := by
apply Continuous.intervalIntegrable
fun_prop
have hi2 : IntervalIntegrable (fun t => k * sin (π / L * t) ^ 2) MeasureTheory.volume 0 L := by
apply Continuous.intervalIntegrable
fun_prop
rw [intervalIntegral.integral_sub hi1 hi2, intervalIntegral.integral_const_mul,
intervalIntegral.integral_const_mul, hcos, hsin]
ring/-- **The second variation is negative on long geodesics.** If `k > 0` and the geodesic is
longer than `π/√k`, the index-form integral is negative; so a geodesic of length `> π/√k` in a
manifold with `Ric ≥ (n-1)k > 0` is not minimising. Hence the diameter is at most `π/√k`. -/
theorem myers_index_negative {L k : ℝ} (hk : 0 < k) (hL : π / √k < L) :
∫ t in (0 : ℝ)..L, ((π / L) ^ 2 * cos (π / L * t) ^ 2 - k * sin (π / L * t) ^ 2) < 0 := by
have hs : 0 < √k := Real.sqrt_pos.mpr hk
have hL0 : 0 < L := lt_trans (div_pos pi_pos hs) hL
rw [myers_index_form hL0 k]
apply mul_neg_of_pos_of_neg (by positivity)
have h1 : π / L < √k := by
rw [div_lt_iff₀ hL0]
rw [div_lt_iff₀ hs] at hL
linarith
have h2 : (π / L) ^ 2 < √k ^ 2 := by
apply pow_lt_pow_left₀ h1 (by positivity) (by norm_num)
rw [Real.sq_sqrt hk.le] at h2
linarithAnd the example of the hyperbolic plane: the semicircle lies on the unit circle, has hyperbolic speed , and satisfies both geodesic equations (we prove each derivative, then each equation):
/-- **Semicircles are geodesics of the hyperbolic plane.** In the upper half-plane with metric
`(dx² + dy²)/y²`, the geodesic equations are `x'' - (2/y) x'y' = 0` and
`y'' + (x'² - y'²)/y = 0`. The curve `x = tanh t = sinh t / cosh t`, `y = sech t = 1 / cosh t`
runs along the unit semicircle (`x² + y² = 1`) with hyperbolic speed `1`; we verify its
derivatives and both equations. -/
theorem semicircle_geodesic (t : ℝ) :
HasDerivAt (fun t => sinh t / cosh t) (1 / cosh t ^ 2) t ∧
HasDerivAt (fun t => 1 / cosh t ^ 2) (-2 * sinh t / cosh t ^ 3) t ∧
HasDerivAt (fun t => 1 / cosh t) (-sinh t / cosh t ^ 2) t ∧
HasDerivAt (fun t => -sinh t / cosh t ^ 2) ((sinh t ^ 2 - 1) / cosh t ^ 3) t ∧
(sinh t / cosh t) ^ 2 + (1 / cosh t) ^ 2 = 1 ∧
((1 / cosh t ^ 2) ^ 2 + (-sinh t / cosh t ^ 2) ^ 2) / (1 / cosh t) ^ 2 = 1 ∧
-2 * sinh t / cosh t ^ 3 - 2 / (1 / cosh t) * (1 / cosh t ^ 2) * (-sinh t / cosh t ^ 2) = 0 ∧
(sinh t ^ 2 - 1) / cosh t ^ 3 +
((1 / cosh t ^ 2) ^ 2 - (-sinh t / cosh t ^ 2) ^ 2) / (1 / cosh t) = 0 := by
have hc : cosh t ≠ 0 := (cosh_pos t).ne'
have hid : cosh t ^ 2 = sinh t ^ 2 + 1 := cosh_sq t
refine ⟨?_, ?_, ?_, ?_, ?_, ?_, ?_, ?_⟩
· convert (hasDerivAt_sinh t).div (hasDerivAt_cosh t) hc using 1
field_simp
linear_combination -hid
· convert ((hasDerivAt_cosh t).pow 2).inv (pow_ne_zero 2 hc) |>.const_mul 1 using 1
· ext s; simp [div_eq_mul_inv]
· simp only [Pi.pow_apply]
field_simp
ring
· convert (hasDerivAt_cosh t).inv hc |>.const_mul 1 using 1
· ext s; simp [div_eq_mul_inv]
· field_simp
· convert ((hasDerivAt_sinh t).neg).div ((hasDerivAt_cosh t).pow 2) (pow_ne_zero 2 hc) using 1
simp only [Pi.pow_apply, Pi.neg_apply]
field_simp
norm_num
linear_combination cosh t * hid
· field_simp
linear_combination -hid
· field_simp
linear_combination -hid
· field_simp
ring
· field_simp
ringWhat is and is not formalised. Proved here: Theorem 4(iv) (in the abstract form above), the curvature, sectional curvature and Ricci curvature of the model tensors, the constant-curvature Jacobi fields and conjugate points, the integral identity and inequality used in Theorem 7, and the geodesic equations for one hyperbolic geodesic. Cited from Mathlib: the Riemannian distance of Euclidean space and the triangle inequality. Not formalised: Theorem 1 (Mathlib has no Levi-Civita connection for a general metric yet), the geodesic flow and exponential map, Hopf–Rinow, the second variation formula, and the Gauss–Bonnet and Bonnet–Myers theorems themselves.
Curvature and geodesics, computed
The first program computes Christoffel symbols and the Gaussian curvature directly from the metric coefficients — never using an embedding in — for the round sphere, the half-plane, the Poincaré disc and a torus of revolution. It then integrates over the sphere and the torus.
"""Curvature from the metric alone, and the Gauss-Bonnet theorem.
For a surface with metric g = E du^2 + 2F du dv + G dv^2, SymPy computes the
Christoffel symbols, the curvature tensor component R_1212 and the Gaussian
curvature K = R_1212 / det g, using nothing but derivatives of E, F, G: this
is Gauss's Theorema Egregium put to work. It treats the round sphere, the
hyperbolic upper half-plane, the Poincare disc and a torus of revolution, then
integrates K dA over the sphere and the torus and compares with 2*pi*chi.
Everything is exact symbolic computation for these specific metrics.
"""
import sympy
U, V = sympy.symbols("u v", real=True)
def christoffel(g):
"""Christoffel symbols Gamma[k][i][j] of a 2x2 metric matrix in (u, v)."""
coords = (U, V)
ginv = g.inv()
gamma = [[[0, 0], [0, 0]] for _ in range(2)]
for k in range(2):
for i in range(2):
for j in range(2):
gamma[k][i][j] = sympy.simplify(sum(
ginv[k, m] * (sympy.diff(g[j, m], coords[i])
+ sympy.diff(g[i, m], coords[j])
- sympy.diff(g[i, j], coords[m])) / 2
for m in range(2)))
return gamma
def gaussian_curvature(g):
"""K = R_1212 / det g with R(d1, d2)d2 written via Christoffel symbols."""
coords = (U, V)
gam = christoffel(g)
# R_1212 = <R(d_u, d_v) d_v, d_u> = sum over m of g_{um} R^m_{vuv}.
def riem(m, i, j, k):
"""R^m_{ijk}: component of R(d_j, d_k) d_i on d_m."""
val = sympy.diff(gam[m][k][i], coords[j]) - sympy.diff(gam[m][j][i], coords[k])
val += sum(gam[m][j][p] * gam[p][k][i] - gam[m][k][p] * gam[p][j][i]
for p in range(2))
return val
r1212 = sum(g[0, m] * riem(m, 1, 0, 1) for m in range(2))
return sympy.simplify(r1212 / g.det())
def integral_of_curvature(g, u_range, v_range):
"""The integral of K dA = K sqrt(det g) du dv over a coordinate rectangle."""
density = sympy.simplify(gaussian_curvature(g) * sympy.sqrt(g.det()))
return sympy.simplify(sympy.integrate(density, (U, *u_range), (V, *v_range)))
def main():
big, small = sympy.Rational(2), sympy.Rational(1)
sphere = sympy.Matrix([[1, 0], [0, sympy.sin(U) ** 2]])
half_plane = sympy.Matrix([[1 / V**2, 0], [0, 1 / V**2]])
disc_factor = 4 / (1 - U**2 - V**2) ** 2
disc = sympy.Matrix([[disc_factor, 0], [0, disc_factor]])
torus = sympy.Matrix([[(big + small * sympy.cos(V)) ** 2, 0], [0, small**2]])
print("Gaussian curvature computed from the metric alone:")
rows = [("round sphere du^2 + sin(u)^2 dv^2", sphere),
("half-plane (du^2 + dv^2)/v^2", half_plane),
("Poincare disc 4(du^2 + dv^2)/(1-u^2-v^2)^2", disc),
("torus (2 + cos v)^2 du^2 + dv^2", torus)]
for name, g in rows:
print(f" {name:<44} K = {gaussian_curvature(g)}")
gam = christoffel(half_plane)
print("Half-plane Christoffel symbols (nonzero):")
for k in range(2):
for i in range(2):
for j in range(i, 2):
if gam[k][i][j] != 0:
print(f" Gamma^{'uv'[k]}_{'uv'[i]}{'uv'[j]} = {gam[k][i][j]}")
print()
total_sphere = integral_of_curvature(sphere, (0, sympy.pi), (0, 2 * sympy.pi))
total_torus = integral_of_curvature(torus, (0, 2 * sympy.pi),
(0, 2 * sympy.pi))
print(f"Integral of K dA over the sphere: {total_sphere} (2 pi chi = 4 pi)")
print(f"Integral of K dA over the torus: {total_torus} (2 pi chi = 0)")
print()
print("Epistemic status: exact symbolic computation for four explicit metrics")
print("and two integrals. It illustrates the Theorema Egregium and checks the")
print("Gauss-Bonnet theorem in two cases; the theorem itself is proved in the")
print("lesson.")
if __name__ == "__main__":
main()The totals and are for and . The torus integral vanishes because the positive curvature of the outer half exactly cancels the negative curvature of the inner half. This is exact computation for specific metrics, not a proof of Gauss–Bonnet.
The second program integrates the geodesic equations numerically. Two geodesics leave one point at a tiny angle ; their distance after time , divided by , tracks the Jacobi fields on the sphere and in the hyperbolic plane, refocusing at on the sphere. Then it follows a geodesic on a torus and checks Clairaut's conserved quantity.
"""Geodesics, the spreading of nearby geodesics, and Clairaut's relation.
Part 1 integrates the geodesic equations (with their Christoffel symbols) on
the unit sphere and on the hyperbolic upper half-plane, for two geodesics
leaving the same point at a small angle delta. The distance between them
after time t, divided by delta, is compared with the Jacobi-field prediction
sin t (curvature +1), t (curvature 0) and sinh t (curvature -1). On the sphere
the geodesics meet again at t = pi: the conjugate point.
Part 2 integrates a geodesic on a torus of revolution and checks Clairaut's
relation: rho^2 du/dt (rho = distance from the axis) stays constant, and the
geodesic never enters the region where rho is smaller than that constant.
Runge-Kutta integration: numerical evidence.
"""
import math
def rk4(rhs, state, dt, steps):
"""Integrate state' = rhs(state) with the classical Runge-Kutta method."""
for _ in range(steps):
k1 = rhs(state)
k2 = rhs([s + dt / 2 * k for s, k in zip(state, k1)])
k3 = rhs([s + dt / 2 * k for s, k in zip(state, k2)])
k4 = rhs([s + dt * k for s, k in zip(state, k3)])
state = [s + dt / 6 * (a + 2 * b + 2 * c + d)
for s, a, b, c, d in zip(state, k1, k2, k3, k4)]
return state
def sphere_rhs(s):
"""Geodesic equations on the sphere in (theta, phi): state (th, ph, th', ph')."""
th, ph, dth, dph = s
return [dth, dph, math.sin(th) * math.cos(th) * dph**2,
-2 * math.cos(th) / math.sin(th) * dth * dph]
def half_plane_rhs(s):
"""Geodesic equations of (dx^2 + dy^2)/y^2: x'' = 2x'y'/y, y'' = (y'^2 - x'^2)/y."""
x, y, dx, dy = s
return [dx, dy, 2 * dx * dy / y, (dy**2 - dx**2) / y]
def sphere_distance(a, b):
"""Great-circle distance between points given in (theta, phi)."""
def xyz(p):
return (math.sin(p[0]) * math.cos(p[1]), math.sin(p[0]) * math.sin(p[1]),
math.cos(p[0]))
dot = sum(u * v for u, v in zip(xyz(a), xyz(b)))
cross = math.sqrt(max(0.0, 1 - dot * dot))
return math.atan2(cross, dot)
def half_plane_distance(a, b):
"""Hyperbolic distance: cosh d = 1 + |a - b|^2 / (2 y_a y_b)."""
sq = (a[0] - b[0]) ** 2 + (a[1] - b[1]) ** 2
return math.acosh(1 + sq / (2 * a[1] * b[1]))
def spread(model, t, delta=1e-4, dt=1e-3):
"""Distance at time t between unit-speed geodesics at angle delta, / delta."""
steps = max(1, round(t / dt))
step = t / steps
# Both start points have an orthonormal coordinate frame: the equator of
# the sphere (theta = pi/2) and the point (0, 1) of the half-plane.
if model == "sphere":
rhs, dist, start = sphere_rhs, sphere_distance, (math.pi / 2, 0.0)
else:
rhs, dist, start = half_plane_rhs, half_plane_distance, (0.0, 1.0)
ends = []
for angle in (0.3, 0.3 + delta):
state = [start[0], start[1], math.cos(angle), math.sin(angle)]
ends.append(rk4(rhs, state, step, steps)[:2])
return dist(ends[0], ends[1]) / delta
def torus_rhs(big, small):
"""Geodesic equations on the torus metric (R + r cos v)^2 du^2 + r^2 dv^2."""
def rhs(s):
u, v, du, dv = s
rho = big + small * math.cos(v)
drho = -small * math.sin(v)
return [du, dv, -2 * drho / rho * du * dv, rho * drho / small**2 * du**2]
return rhs
def clairaut_run(big=2.0, small=1.0, angle=1.2, t=30.0, dt=1e-3):
"""Return (initial rho^2 u', max deviation, min rho visited) along a geodesic."""
rho0 = big + small
state = [0.0, 0.0, math.cos(angle) / rho0, math.sin(angle) / small]
rhs = torus_rhs(big, small)
c0 = rho0**2 * state[2]
worst, min_rho = 0.0, rho0
for _ in range(round(t / 0.5)):
state = rk4(rhs, state, dt, round(0.5 / dt))
rho = big + small * math.cos(state[1])
worst = max(worst, abs(rho**2 * state[2] - c0))
min_rho = min(min_rho, rho)
return c0, worst, min_rho
def main():
print("1. Two geodesics from one point at angle delta = 1e-4:")
print(" t sphere d/delta sin t half-plane d/delta sinh t")
for t in [0.5, 1.0, 1.5, 2.0, 2.5, 3.0, math.pi]:
a, b = spread("sphere", t), spread("half-plane", t)
print(f" {t:4.2f} {a:12.6f} {math.sin(t):9.6f} "
f"{b:14.6f} {math.sinh(t):9.6f}")
print(" Flat plane: d/delta = t exactly. At t = pi the sphere's geodesics")
print(" meet again at the antipode (a conjugate point).")
print()
c0, worst, min_rho = clairaut_run()
print("2. A geodesic on the torus (R = 2, r = 1) for time 30:")
print(f" Clairaut constant rho^2 u' = {c0:.10f}")
print(f" largest deviation along the geodesic: {worst:.1e}")
print(f" smallest rho visited: {min_rho:.4f} >= |constant| = {abs(c0):.4f}")
print()
print("Epistemic status: numerical integration (Runge-Kutta, step 0.001) of")
print("the geodesic equations. The agreement with sin t and sinh t is evidence")
print("for the Jacobi equation J'' + K J = 0; the conservation in part 2 is")
print("evidence for Clairaut's theorem, which the lesson proves.")
if __name__ == "__main__":
main()The smallest distance from the axis visited by the torus geodesic equals Clairaut's constant to four decimals: the geodesic oscillates between the outer equator and the latitude where , exactly as the relation predicts. Numerical integration is evidence, not proof.
Explore: angle sums and curvature
Drag the vertices of a geodesic triangle on the sphere and in the hyperbolic plane (the Poincaré disc, where geodesics are arcs meeting the boundary at right angles). The widget computes the angle sum exactly and the area independently, by numerical integration. Check that the angle excess equals : positive on the sphere (), negative in the hyperbolic plane (), zero in the plane. Try the preset triangle with three right angles: it covers one eighth of the sphere, area , excess . In the hyperbolic plane, push the vertices towards the boundary: the angles shrink to , and the area of a triangle can never exceed .
Local Gauss–Bonnet: angle excess = K × area
Compare the three geometries: K = +1, 0 and −1.
Drag a corner to move it; drag anywhere else to turn the sphere. The sides are arcs of great circles — the shortest paths on a sphere.
- ∠A90.0°
- ∠B90.0°
- ∠C90.0°
∠A + ∠B + ∠C = 270.0°
- Angle excess (sum − 180°)
- 90.0° = 1.571 rad
- Area, measured numerically
- 1.571 R²
- Share of the whole sphere (area ÷ 4πR²)
- 12.50 %
∠A + ∠B + ∠C − π = Area / R²On a sphere of radius R, the excess in radians equals the area divided by R². The area is computed separately, by numerical integration, so the match is a check rather than an assumption.
∠A + ∠B + ∠C − π = K · Area
| Flat plane | K = 0 | ∠A+∠B+∠C = 180° |
|---|---|---|
| Sphere | K = 1/R² | ∠A+∠B+∠C > 180° |
| Hyperbolic plane | K = −1 | ∠A+∠B+∠C < 180° |
This is a first glimpse of the Gauss–Bonnet theorem: for a triangle whose sides are geodesics (shortest paths), the angle sum minus π equals the total curvature inside it. Here the curvature K is the same everywhere; on other surfaces you add up (integrate) K over the area.
Exercises
1. Riemannian geometry
Warm-upHumanThe metric (for ) has the form . What is its Gaussian curvature at ?
2. Riemannian geometry
Warm-upHumanLet be a closed orientable surface of genus with any Riemannian metric. Compute .
3. Riemannian geometry
CoreHumanWhich of these curves on the unit sphere , parametrised with constant speed, are geodesics? (Choose all that apply.)
4. Riemannian geometry
CoreHumanThe paraboloid , with the metric induced from , is complete and has Gaussian curvature at every point, yet it is not compact. Which hypothesis of the Bonnet–Myers theorem fails?
5. Riemannian geometry
CoreHumanIn the proof of the fundamental theorem, the Koszul formula expresses in terms of the metric and brackets. Which property is needed to conclude that itself is determined?
6. Riemannian geometry
CoreHumanOn the unit sphere, let be the unit-speed great-circle arc of length from to . Which statement is true?
7. Riemannian geometry
CoreHumanA geodesic triangle in the hyperbolic plane (curvature ) has angles , and . What is its area?
8. Riemannian geometry
StretchFormalIn semicircle_geodesic, the curve is , , with and . Which conjunct states that it has unit speed for the hyperbolic metric ?
9. Riemannian geometry
StretchComputationalWrite excess(a, b, c) for three unit vectors (tuples) spanning a geodesic triangle on the unit sphere. Return , where the angle at is the angle between the tangent vectors and (the initial directions of the great-circle arcs from ), and similarly at and . By local Gauss–Bonnet the excess is the area.
Common misconceptions
Misconception
"Curvature needs an ambient space to bend into." Gaussian curvature is intrinsic: Theorema Egregium. It is computed from the metric alone (the first experiment never mentions ), and it makes sense for spaces that are not embedded anywhere, such as the hyperbolic plane — which, by Hilbert's theorem (1901), admits no smooth isometric immersion in as a complete surface. Conversely, a surface can look bent in and be intrinsically flat: a cylinder, or a rolled sheet of paper, has .
Misconception
"A geodesic is the shortest path between its endpoints." Only locally. On the unit sphere, a great-circle arc longer than is a geodesic but not minimising: it passes the conjugate point (the antipode of its start). On a flat cylinder, the helices through two points are all geodesics; at most one is shortest. Hopf–Rinow guarantees that some minimising geodesic exists in a complete manifold, not that every geodesic minimises.
Misconception
"Positive curvature forces compactness." Bonnet–Myers needs a uniform positive lower bound on Ricci curvature, and completeness. The paraboloid is complete and has everywhere, but at infinity and it is not compact. An open hemisphere has and is not compact, because it is not complete.
Misconception
"The exponential map is a global diffeomorphism." It is a diffeomorphism near , and globally when is complete, simply connected and (Cartan–Hadamard). On the unit sphere, maps the whole circle to the antipode: it is neither injective nor a local diffeomorphism there. The radius of the largest ball on which is a diffeomorphism is the injectivity radius at .
Misconception
"A circle of latitude is a geodesic, since it is a circle on the sphere." A parallel at latitude curves towards the nearer pole within the sphere: its geodesic curvature is (on the unit sphere). Only great circles are geodesics: flying along the parallel from Sydney to Santiago (both near S) is much longer than the great-circle route, which swings south towards Antarctica.
Many ways of seeing
Geometry— Comparison geometry and synthetic curvature
The modern geometer compares. Toponogov's theorem: in a complete manifold with sectional curvature , geodesic triangles are "fatter" than triangles with the same side lengths in the model space of curvature . This can be taken as a definition of curvature bounds for metric spaces with no smooth structure at all: Alexandrov spaces (curvature bounded below) and CAT() spaces (curvature bounded above), in which the angle comparison is imposed on geodesic triangles. Gromov's compactness theorem says that manifolds of a fixed dimension with a lower Ricci bound and bounded diameter form a precompact family for the Gromov–Hausdorff distance, whose limits are the subject of Cheeger–Colding theory. Curvature thus survives as a property of distances alone.
Topology— Curvature constrains topology
Gauss–Bonnet, Bonnet–Myers and Cartan–Hadamard are all theorems of the form a curvature condition forces a topological conclusion: total curvature is ; forces compactness and finite ; forces the universal cover to be , so all higher homotopy groups vanish. The sphere theorem (Rauch, Berger, Klingenberg; differentiable version by Brendle and Schoen, 2009) says that a complete simply connected manifold whose sectional curvatures lie strictly between and is homeomorphic — in fact diffeomorphic — to a sphere. And Hamilton's Ricci flow, completed by Perelman (2002–2003), used curvature to prove the Poincaré and geometrisation conjectures. See geometric analysis and low-dimensional topology.
Analysis— Geodesics as critical points, and the Laplacian
Geodesics are the critical points of the energy functional on the space of paths; the second variation formula is its Hessian, and Morse theory on path spaces relates conjugate points to the topology of loop spaces (Milnor, Morse Theory). A metric also has a Laplace–Beltrami operator , and curvature controls its spectrum: Lichnerowicz's theorem says that forces the first non-zero eigenvalue to be at least . Kac asked whether one can "hear the shape of a drum": the spectrum determines dimension, volume and total scalar curvature (via the heat kernel expansion), but not the metric itself (Milnor's isospectral flat tori, 1964). Ricci flow, , is a nonlinear heat equation for the metric.
Physics— Gravity is curvature
General relativity replaces the inner product by a Lorentzian metric of signature on a four-manifold. Freely falling bodies follow timelike geodesics; the Jacobi equation becomes the equation of geodesic deviation, which describes tidal forces — the relative acceleration of two nearby freely falling particles is ; and matter curves spacetime through Einstein's equations . The focusing of geodesics by positive Ricci curvature, the mechanism of Bonnet–Myers, reappears in the Raychaudhuri equation and the Penrose–Hawking singularity theorems. These are theorems about Lorentzian manifolds; their application to the universe rests on physical models and measurements. See relativity.
Algebra— Groups that see curvature
The fundamental group of a closed manifold reflects its curvature. If , Preissman's theorem says every abelian subgroup of is infinite cyclic, so — the torus cannot carry a metric of negative curvature. Milnor (1968) showed that the growth rate of is exponential when and polynomial when . Gromov abstracted negative curvature into hyperbolic groups, and the Švarc–Milnor lemma — a group acting properly and cocompactly by isometries on a space is quasi-isometric to it — makes the large-scale geometry of the universal cover a property of the group. See geometric group theory.
Probability— Brownian motion and concentration
A Riemannian manifold carries a Brownian motion, generated by ; its heat kernel is the transition density, and for small it behaves like (Varadhan's formula recovers the distance from the heat kernel). Curvature controls how random walks spread: lower Ricci bounds imply heat-kernel and isoperimetric estimates. The Lévy–Gromov theorem says that on a manifold with , Lipschitz functions are concentrated around their median at least as strongly as on the unit sphere — the geometric source of the concentration of measure phenomenon in high dimensions. Bakry–Émery and Lott–Sturm–Villani turned "Ricci curvature bounded below" into a property of optimal transport of probability measures.
History and global context
- Intrinsic geometry. Carl Friedrich Gauss, Disquisitiones generales circa superficies curvas (1827): Gaussian curvature, the Theorema Egregium and the local Gauss–Bonnet formula for geodesic triangles. Pierre Ossian Bonnet extended it to curves with geodesic curvature (1848). Non-Euclidean geometry was developed independently by Nikolai Lobachevsky in Kazan (1829) and János Bolyai in Transylvania (1832); Eugenio Beltrami (1868) gave models showing it is consistent relative to Euclidean geometry.
- Riemann and the tensor calculus. Bernhard Riemann's habilitation lecture (1854, published 1868) introduced Riemannian metrics and the curvature that bears his name. Elwin Christoffel (1869) introduced his symbols; Gregorio Ricci-Curbastro and Tullio Levi-Civita systematised the "absolute differential calculus" (1900), and Levi-Civita introduced parallel transport (1917). Albert Einstein, with the help of Marcel Grossmann, used this calculus for general relativity (1915).
- Global theorems. Heinz Hopf and Willi Rinow proved their completeness theorem (1931); Sumner Myers proved the Ricci version of Bonnet's diameter bound (1941); Jacques Hadamard (1898, surfaces) and Élie Cartan (1928) proved the Cartan–Hadamard theorem. Shiing-Shen Chern's intrinsic proof of the Gauss–Bonnet theorem in all even dimensions (1944) opened the theory of characteristic classes.
- Comparison and flows. Harry Rauch's comparison theorem (1951) and Victor Toponogov's triangle comparison (1959) founded comparison geometry, developed further by Aleksandr Alexandrov's school in Leningrad and by Mikhail Gromov. Shing-Tung Yau's solution of the Calabi conjecture (1976–78) made geometric PDE central. Richard Hamilton introduced Ricci flow (1982), and Grigori Perelman's papers of 2002–2003 used it to prove the Poincaré and geometrisation conjectures.
Further reading
- Manfredo P. do Carmo, Riemannian Geometry (1992) — the classic first course: connections, geodesics, curvature, Jacobi fields, Hopf–Rinow, variations of energy and Bonnet–Myers.
- John M. Lee, Introduction to Riemannian Manifolds (2nd edition, 2018) — careful and complete, with Gauss–Bonnet and the comparison theorems.
- Peter Petersen, Riemannian Geometry (3rd edition, 2016) — a more advanced text, through comparison geometry and convergence theory.
- Sylvestre Gallot, Dominique Hulin and Jacques Lafontaine, Riemannian Geometry (3rd edition, 2004) — includes analysis on manifolds and the Laplacian.
- Jeff Cheeger and David G. Ebin, Comparison Theorems in Riemannian Geometry (1975) — the comparison theorems in depth.
- John Milnor, Morse Theory (1963) — Part III on the calculus of variations and geodesics.