Three polynomials modulo p
Fix a polynomial with integer coefficients and ask, for each prime : how many roots does it have modulo ?
-
. For odd , it has two roots modulo when and none when . The answer depends only on .
-
. It has no roots modulo and three modulo , although — and one can show that no congruence condition, to any modulus, decides the number of roots. Yet there is a rule. Expand
Then for every prime , the number of roots of modulo is the coefficient of plus one. (The coefficient of is : no roots. The coefficient of is : three roots.)
-
, an elliptic curve. Let . Then is the coefficient of in , for every prime .
The infinite products are modular forms: holomorphic functions on the upper half-plane with an enormous group of symmetries. That arithmetic data — how polynomials factor mod , how many points a curve has mod — should be encoded in the Fourier coefficients of such symmetric functions is the heart of the Langlands programme. In a 1967 letter to André Weil, Robert Langlands proposed that this is a universal phenomenon: arithmetic objects (Galois representations) correspond to analytic objects (automorphic representations), with matching -functions, and that the analytic objects for different groups are related by a principle of functoriality.
This lesson is a map. It builds on algebraic number theory, analytic number theory and representation theory, and on the companion lesson on elliptic curves.
Two sides of one dictionary
On the Galois side live the symmetries of algebraic numbers. The absolute Galois group is a huge profinite group; we study it through its representations . For almost every prime there is a conjugacy class in , and its characteristic polynomial under records how behaves — how a polynomial factors mod , or how many points a variety has mod .
On the automorphic side live functions with symmetry: modular forms, and more generally automorphic forms on over the adèles. They are eigenfunctions of commuting Hecke operators , one for each prime, and the eigenvalues are numbers attached to primes.
Reciprocity says that every (suitable) matches an automorphic with "Frobenius eigenvalues = Hecke eigenvalues", and conversely. Both sides make -functions, and matching means equal -functions:
For this dictionary is class field theory: one-dimensional Galois representations correspond to Dirichlet characters (and Hecke characters), and the first example above is its simplest case. For over , example 2 is an instance of Hecke's theory of theta series and example 3 of the work of Eichler and Shimura, now a special case of the modularity theorem. For most of the dictionary is conjectural.
Analogy, not a formal construction
Think of a prime as a "frequency". The Galois side tells you how an arithmetic object "vibrates" at frequency (through ); the automorphic side is a single function whose Fourier coefficients list all these vibrations at once. Reciprocity says such a function always exists. The analogy is informal: the precise statements are about traces of Frobenius and Hecke eigenvalues.
Definitions
Definition— Frobenius element
Let be a finite Galois extension and a prime unramified in . For a prime of above , the Frobenius element is the unique with for all algebraic integers of ; it generates the decomposition group of . Changing conjugates it, so determines a conjugacy class . If is the splitting field of and , the cycle type of acting on the roots of is the list of degrees of the irreducible factors of .
Definition— Galois representation
A Galois representation of a number field is a continuous homomorphism , where is a topological field — (Artin representations, which have finite image), or a finite extension of (-adic representations, such as the Tate module of an elliptic curve). Its -function is .
Definition— class field theory
Class field theory describes the abelian extensions of a number field in terms of data intrinsic to . In idelic form: there is a continuous surjective homomorphism, the Artin map, , sending a uniformiser at an unramified prime to , whose kernel is the connected component of the identity. Equivalently, finite abelian extensions of correspond to open subgroups of finite index of the idèle class group (classically: to subgroups of ray class groups).
Definition— modular forms and cusp forms
For , a modular form of weight and level is a holomorphic on the upper half-plane with
that is holomorphic at the cusps. Since lies in , has a -expansion , ; is a cusp form if it vanishes at every cusp ( at , and similarly at the other cusps). The spaces are finite-dimensional. (Weight-one forms with a character, such as , are defined in the same way with a factor .)
Definition— Hecke operators and eigenforms
For , the Hecke operator acts on by
and in general . The commute, when , and for . A normalised eigenform is a simultaneous eigenvector with ; a newform is a normalised eigenform not coming from a lower level.
Definition— automorphic representation (rough)
Let be the adèles of and . A cuspidal automorphic representation of is, roughly, an irreducible representation of occurring in the space of cusp forms on (with a fixed central character). It factors as a restricted tensor product of local representations; for almost all , is unramified and determined by a conjugacy class (its Satake parameter) in , which defines up to finitely many factors. A newform of weight gives a cuspidal automorphic representation of ; a Dirichlet character gives one of . For a general reductive group the Satake parameters live in the Langlands dual group , whose root datum is dual to that of (roots and coroots exchanged): , , .
Examples
Example— Quadratic fields: reciprocity with a conductor
An odd prime splits in exactly when is a square mod . For : when . For : when (formalised below). For : when is a square mod . In each case the condition is a congruence modulo , the discriminant of the field: this is the conductor, and it is quadratic reciprocity in action. The splitting is described by the Dirichlet character , a one-dimensional Galois representation that is also a -automorphic form.
Example— Cyclotomic fields: Frobenius is p mod n
In , the automorphism gives . For , modulo any prime above (expand in characteristic ), so : the Frobenius at is the residue class . Consequently splits into primes of degree , and splits completely iff . All of this is in Mathlib (see the formal section).
Example— A weight-one form and a non-abelian cubic
The cubic has discriminant and Galois group ; its splitting field is the Hilbert class field of , whose class group has order . The two-dimensional irreducible representation of is induced from a character of order of the class group of , and Hecke's theory of theta series makes it modular: with
a weight-one cusp form of level with character . Since , this gives the rule of the motivation. Concretely, for : three roots if (e.g. ), none if (e.g. ), and one root if . Because is not abelian, no congruence condition can separate the first two cases.
Example— Ramanujan's Δ
is a cusp form of weight for . Ramanujan (1916) conjectured that is multiplicative, that , and that . The first two were proved by Mordell (1917; Theorem 5 below), the third by Deligne (1974) as a consequence of his proof of the Weil conjectures. Deligne (1969) attached to an -adic Galois representation with , which explains congruences such as Ramanujan's : modulo the representation becomes a sum of two characters.
Example— An elliptic curve of conductor 11
and , the unique newform of that level: for all (Eichler 1954, Shimura). In representation-theoretic terms, the Galois representation on the Tate module of and the automorphic representation generated by correspond. The modularity theorem says this happens for every elliptic curve over .
Central results
Theorem— Lemma 1 (the quadratic Gauss sum)
Let be an odd prime, , and . Then . In particular .
Proof
Write , a multiplicative character of with . Then . Substitute (for fixed , runs over the non-zero residues as does) and use :
The inner sum is if and otherwise (a sum of all non-trivial -th roots of unity). Hence , and by Euler's criterion.
∎
Theorem— Theorem 2 (quadratic reciprocity, Gauss 1796)
For distinct odd primes : .
Proof
We give the proof that explains why: via Frobenius elements in . Let , a cyclic group of even order . It has a unique subgroup of index , the squares, and so has a unique quadratic subfield; by Lemma 1 it is . Now compute, for the prime (unramified in ):
- splits in is a square mod (Dedekind–Kummer: factors mod ; is odd and does not divide ).
- splits in acts trivially on is a square , because corresponds to (the cyclotomic example).
So , using Euler's criterion . Multiply by .
∎
The structure of this proof is the structure of the subject: an arithmetic question about splitting of primes (Galois side) is answered by identifying the Frobenius with an "automorphic" invariant, the residue class , which is a character of the idèle class group of . The proof also shows that lies in a cyclotomic field — the quadratic case of the next theorem.
Theorem— Theorem 3 (Kronecker–Weber; Kronecker 1853, Weber 1886, Hilbert 1896)
Every finite abelian extension of is contained in a cyclotomic field .
Kronecker stated it, Weber gave a proof with a gap, and Hilbert gave the first complete proof. Standard modern proofs reduce to local fields and analyse ramification (Washington, Introduction to Cyclotomic Fields, Ch. 14), or deduce it from class field theory. With the cyclotomic example it gives class field theory over : abelian extensions of correspond to subgroups of the groups , and Frobenius elements to residue classes. Over a general number field, Takagi (1920) and Artin (1927) proved the corresponding theorem with ray class groups replacing ; generating the abelian extensions explicitly (Hilbert's twelfth problem) is understood for and imaginary quadratic fields (complex multiplication), and Dasgupta and Kakde (2021–23) gave a -adic answer for totally real fields.
Theorem— Proposition 4 (eigenforms have multiplicative coefficients)
Let be non-zero with for every . Then for all , so . Normalising : when , and for every prime .
Proof
By the formula for with , the only divisor of is , so . But . Hence for every ; if were , all coefficients would vanish and . With we have , and the relations and between the operators become the stated relations between their eigenvalues.
∎
The same argument works at level for prime to ; to conclude one also needs the operators for , or one restricts to newforms.
Theorem— Theorem 5 (Mordell 1917)
for coprime , and .
Proof
The space is one-dimensional, spanned by (by the dimension formula for level one: , with ). Each preserves , so for every . Since , Proposition 4 applies.
∎
The proof is a template: one-dimensionality forces an eigenform, and eigenforms have Euler products, . In general has a basis of newforms and oldforms, and multiplicity one (Atkin–Lehner) identifies newforms with their Hecke eigenvalues.
Theorem— Theorem 6 (Galois representations from modular forms)
Let be a newform of weight , level and character , with coefficients in a number field . For each prime of above there is a continuous irreducible representation , unramified outside , with and for . For (Eichler–Shimura) it is cut out of the Tate module of the Jacobian of ; for (Deligne, 1969–71) from the étale cohomology of Kuga–Sato varieties; for (Deligne–Serre, 1974) it comes from a representation into with finite image.
The converse direction is the hard one.
Theorem— Theorem 7 (modularity; Wiles, Taylor–Wiles 1995; Breuil–Conrad–Diamond–Taylor 2001)
For every elliptic curve there is a newform of weight and level with for all , equivalently for all .
Related reciprocity theorems for over : Serre's modularity conjecture — every odd irreducible comes from a newform — was proved by Khare and Wintenberger (2009, with Kisin), and implies Artin's conjecture for odd two-dimensional complex representations of (earlier, Langlands (1980) and Tunnell (1981) had done the tetrahedral and octahedral cases using base change). See the elliptic-curves lesson for the consequence for Fermat's Last Theorem.
Theorem— Conjecture 8 (Langlands reciprocity, one form)
Irreducible -adic Galois representations that are unramified almost everywhere and de Rham at (the Fontaine–Mazur "geometric" ones) correspond bijectively to cuspidal automorphic representations of that are algebraic at infinity, with (suitably normalised) — that is, the characteristic polynomial of matches the Satake parameter of for almost all .
Known: (class field theory, over any number field); much of over and over totally real fields; the direction "automorphic Galois" for regular algebraic self-dual representations of over CM and totally real fields (Clozel, Harris–Taylor, Shin, Chenevier–Harris and others) and, since Harris–Lan–Taylor–Thorne (2016) and Scholze (2015), without self-duality; and many "potential" cases (Taylor and collaborators), which give the Sato–Tate theorem. Open: the general case, notably the direction "Galois automorphic" in dimension .
Theorem— Conjecture 9 (functoriality)
Let and be connected reductive groups over (say quasi-split) and an -homomorphism between their -groups. For every automorphic representation of there is an automorphic representation of whose local Satake parameters are the images under of those of at almost all places.
Functoriality for , and would give the Ramanujan conjecture and, via analytic properties of the symmetric-power -functions, the Sato–Tate law. Known cases include: Jacquet–Langlands (1970, inner forms of ); (Gelbart–Jacquet, 1978); cyclic base change for (Arthur–Clozel, 1989); (Kim–Shahidi, 2002) and (Kim, 2003); all symmetric powers of holomorphic newforms (Newton–Thorne, 2021); and endoscopic transfer from classical groups to (Arthur, 2013), which needed Ngô Bảo Châu's proof of the Fundamental Lemma (2008–10). Functoriality in general is an open conjecture.
The landscape: known, open, and parallel programmes
Local Langlands. Over a -adic field , irreducible smooth representations of correspond to -dimensional Weil–Deligne representations of the Weil group of : proved by Harris–Taylor and by Henniart (1998–2000), with a third proof by Scholze (2013). For general groups the correspondence is expected to be finite-to-one ("-packets"); Fargues and Scholze (2021) constructed the semisimplified parameters for every reductive group by "geometrising" the local correspondence on the Fargues–Fontaine curve.
Function fields. Replace by the field of rational functions of a curve over . Drinfeld proved global Langlands for (1974–), Laurent Lafforgue for (2002), and Vincent Lafforgue constructed the automorphic-to-Galois direction for every reductive group (2018), using moduli of shtukas.
Geometric Langlands. Replace the curve over by a complex algebraic curve . Galois representations become local systems (flat -bundles) on , and automorphic forms become sheaves (D-modules) on the moduli stack of -bundles. The conjecture, in the form of Beilinson–Drinfeld and Arinkin–Gaitsgory, is an equivalence of categories. A proof of the unramified global geometric Langlands conjecture in characteristic was announced in 2024 by Gaitsgory, Raskin and collaborators; it spans several long papers. This is analogous to, but logically independent of, the arithmetic conjectures: progress in one does not settle the other.
Open problems (well documented; consult recent surveys for the current state): functoriality in general; reciprocity for , , over in general; Artin's conjecture that is entire for every non-trivial irreducible Artin representation (open, for instance, for even icosahedral representations in dimension , and in general in dimension ); the Ramanujan conjecture for Maass forms, whose archimedean part is Selberg's eigenvalue conjecture for congruence subgroups (the best bound, , is due to Kim and Sarnak); the Birch and Swinnerton-Dyer conjecture and its generalisations (Beilinson–Bloch–Kato), which concern special values of the -functions this programme produces.
Reciprocity in Lean and Mathlib
Mathlib has Legendre and Jacobi symbols with quadratic reciprocity, cyclotomic fields with their Galois groups and the splitting of primes in them, Dirichlet characters and -series with Dirichlet's theorem, and modular forms for congruence subgroups including Ramanujan's . It does not have class field theory, the Kronecker–Weber theorem, automorphic representations, or the Galois representations attached to modular forms.
Quadratic reciprocity and the splitting laws for — including a proof from Fermat's little theorem that is not a square modulo , and the parity argument for sums of two squares:
/-- **Quadratic reciprocity** (Gauss, 1796): for distinct odd primes `p` and `q`,
`(q/p)(p/q) = (−1)^((p−1)/2 · (q−1)/2)`. (In Lean, `p / 2 = (p − 1)/2` for odd `p`, and
`legendreSym p a` is the Legendre symbol `(a/p)`.) This applies Mathlib's
`legendreSym.quadratic_reciprocity`. -/
theorem quadratic_reciprocity (p q : ℕ) [Fact p.Prime] [Fact q.Prime] (hp : p ≠ 2)
(hq : q ≠ 2) (hpq : p ≠ q) :
legendreSym q p * legendreSym p q = (-1) ^ (p / 2 * (q / 2)) :=
legendreSym.quadratic_reciprocity hp hq hpq/-- If `p ≡ 3 (mod 4)` then `−1` is not a square mod `p`. Proof: if `x² = −1` then, by Fermat's
little theorem, `1 = x^(p−1) = (x²)^((p−1)/2) = (−1)^((p−1)/2) = −1`, because `(p − 1)/2` is
odd; so `2 = 0` in `ℤ/pℤ`, i.e. `p ∣ 2`, which is impossible for `p ≡ 3 (mod 4)`.
So `x² + 1` has no root mod `p`: the prime `p` stays prime in `ℤ[i]`. -/
theorem neg_one_not_square (p : ℕ) [Fact p.Prime] (hp : p % 4 = 3) :
¬ IsSquare (-1 : ZMod p) := by
rintro ⟨x, hx⟩
have hx0 : x ≠ 0 := by
rintro rfl
simp at hx
have hp1 : p - 1 = 2 * ((p - 1) / 2) := by omega
have h1 : x ^ (p - 1) = -1 := by
rw [hp1, pow_mul, sq, ← hx]
exact Odd.neg_one_pow ⟨(p - 1) / 2 / 2, by omega⟩
rw [ZMod.pow_card_sub_one_eq_one hx0] at h1
have h2 : ((2 : ℕ) : ZMod p) = 0 := by
push_cast
linear_combination h1
rw [ZMod.natCast_eq_zero_iff] at h2
have := (Nat.prime_dvd_prime_iff_eq Fact.out Nat.prime_two).mp h2
omega/-- The full splitting law for `x² + 1`: `−1` is a square mod an odd prime `p` iff
`p ≢ 3 (mod 4)`. Whether `x² + 1` factors mod `p` depends only on `p mod 4` — the simplest
reciprocity law. This applies Mathlib's `ZMod.exists_sq_eq_neg_one_iff`. -/
theorem neg_one_square_iff (p : ℕ) [Fact p.Prime] :
IsSquare (-1 : ZMod p) ↔ p % 4 ≠ 3 :=
ZMod.exists_sq_eq_neg_one_iff/-- An odd prime that is a sum of two squares is `≡ 1 (mod 4)`: squares are `0` or `1` mod `4`,
so a sum of two squares is never `3` mod `4`. (A prime `p = a² + b² = (a + bi)(a − bi)` splits in
`ℤ[i]`.) -/
theorem sum_two_squares_mod_four (p a b : ℕ) (hp : p.Prime) (hp2 : p ≠ 2)
(h : a ^ 2 + b ^ 2 = p) : p % 4 = 1 := by
have hodd : p % 2 = 1 := (hp.eq_two_or_odd).resolve_left hp2
have : (a ^ 2 + b ^ 2) % 4 ≠ 3 := by
have ha := Nat.mod_lt a (by norm_num : 4 > 0)
have hb := Nat.mod_lt b (by norm_num : 4 > 0)
rw [Nat.add_mod, Nat.pow_mod, Nat.pow_mod b]
interval_cases (a % 4) <;> interval_cases (b % 4) <;> norm_num
omega/-- **Fermat's two-squares theorem** (stated by Fermat, proved by Euler): a prime `p ≢ 3 (mod 4)`
is a sum of two squares. With `sum_two_squares_mod_four`, a prime splits in `ℤ[i]` iff
`p ≡ 1 (mod 4)` (or `p = 2`, which ramifies). This applies Mathlib's `Nat.Prime.sq_add_sq`. -/
theorem fermat_two_squares (p : ℕ) [Fact p.Prime] (hp : p % 4 ≠ 3) :
∃ a b : ℕ, a ^ 2 + b ^ 2 = p :=
Nat.Prime.sq_add_sq hpA reciprocity law with conductor , derived from quadratic reciprocity — the splitting of in is decided by :
/-- **A reciprocity law with conductor 5.** For a prime `p ≠ 2, 5`: `5` is a square mod `p` iff
`p ≡ ±1 (mod 5)`. Whether `x² − 5` factors mod `p` is decided by a congruence on `p` — the
splitting law of `ℚ(√5) ⊂ ℚ(ζ₅)`. Proof: since `5 ≡ 1 (mod 4)`, quadratic reciprocity gives
`(5/p) = (p/5)`; this depends only on `p mod 5`, and the squares mod `5` are `1` and `4`. -/
theorem five_square_iff (p : ℕ) [Fact p.Prime] (hp2 : p ≠ 2) (hp5 : p ≠ 5) :
IsSquare ((5 : ℕ) : ZMod p) ↔ p % 5 = 1 ∨ p % 5 = 4 := by
have hne : ((5 : ℕ) : ZMod p) ≠ 0 := by
rw [Ne, ZMod.natCast_eq_zero_iff]
intro h
exact hp5 ((Nat.prime_dvd_prime_iff_eq Fact.out Nat.prime_five).mp h)
rw [← legendreSym.eq_one_iff' p hne]
-- reciprocity: `(5/p) = (p/5)`
have hqr : legendreSym p ((5 : ℕ) : ℤ) = legendreSym 5 (p : ℤ) := by
exact_mod_cast legendreSym.quadratic_reciprocity_one_mod_four (by norm_num : 5 % 4 = 1) hp2
rw [hqr, legendreSym.mod 5 (p : ℤ)]
have hcast : (p : ℤ) % ((5 : ℕ) : ℤ) = ((p % 5 : ℕ) : ℤ) := by push_cast; rfl
rw [hcast]
have hr : p % 5 = 1 ∨ p % 5 = 2 ∨ p % 5 = 3 ∨ p % 5 = 4 := by
have h5 : ¬ 5 ∣ p := fun h =>
hp5 ((Nat.prime_dvd_prime_iff_eq Nat.prime_five Fact.out).mp h).symm
omega
have hne' : ((p % 5 : ℕ) : ZMod 5) ≠ 0 := by
rcases hr with h | h | h | h <;> rw [h] <;> decide
rw [legendreSym.eq_one_iff' 5 hne']
-- the squares mod 5 are 1 and 4: a finite check
rcases hr with h | h | h | h <;> rw [h] <;> decideClass field theory for cyclotomic fields: Mathlib proves (X. Roblot, 2026) that the decomposition group of a prime above corresponds to the subgroup generated by — the statement "" used in the proof of Theorem 2 — and computes residue degrees and ramification:
/-- The isomorphism `Gal(ℚ(ζₙ)/ℚ) ≅ (ℤ/nℤ)ˣ`, sending `σ` to the class `a` with `σ(ζₙ) = ζₙᵃ`.
It exists because the cyclotomic polynomial `Φₙ` is irreducible over `ℚ`. This is Mathlib's
`IsCyclotomicExtension.Rat.galEquivZMod`. -/
noncomputable def cyclotomicGalois (n : ℕ) [NeZero n] (K : Type*) [Field K] [NumberField K]
[IsCyclotomicExtension {n} ℚ K] : Gal(K/ℚ) ≃* (ZMod n)ˣ :=
IsCyclotomicExtension.Rat.galEquivZMod n K/-- **Reciprocity for cyclotomic fields.** Let `p ∤ n` be prime and `P` a prime of `ℚ(ζₙ)` above
`p`. Under `Gal(ℚ(ζₙ)/ℚ) ≅ (ℤ/nℤ)ˣ`, the decomposition group of `P` is the cyclic subgroup
generated by `p mod n`: the Frobenius element at `p` "is" `p mod n`. This is class field theory
for the fields `ℚ(ζₙ)`, and by Kronecker–Weber every abelian extension of `ℚ` lies in one of
them. This applies Mathlib's `IsCyclotomicExtension.Rat.galEquivZMod_stabilizer`. -/
theorem cyclotomic_frobenius {n : ℕ} [NeZero n] (K : Type*) [Field K] [NumberField K]
[IsCyclotomicExtension {n} ℚ K] (p : ℕ) [Fact p.Prime] (P : Ideal (𝓞 K)) [P.IsMaximal]
[P.LiesOver (Ideal.span {(p : ℤ)})] (hn : p.Coprime n) :
(IsCyclotomicExtension.Rat.galEquivZMod n K).mapSubgroup (MulAction.stabilizer Gal(K/ℚ) P) =
Subgroup.zpowers (ZMod.unitOfCoprime p hn) :=
IsCyclotomicExtension.Rat.galEquivZMod_stabilizer n K p P hn/-- For a prime `p ∤ m`, the residue degree of `p` in `ℚ(ζₘ)` is the multiplicative order of
`p mod m`: `p` factors into `φ(m)/f` primes of degree `f = ord_m(p)`. This applies Mathlib's
`IsCyclotomicExtension.Rat.inertiaDegIn_eq_of_not_dvd`. -/
theorem cyclotomic_residue_degree {m : ℕ} [NeZero m] (p : ℕ) [Fact p.Prime] (K : Type*)
[Field K] [NumberField K] [IsCyclotomicExtension {m} ℚ K] (hm : ¬ p ∣ m) :
(Ideal.span {(p : ℤ)}).inertiaDegIn (𝓞 K) = orderOf (p : ZMod m) :=
IsCyclotomicExtension.Rat.inertiaDegIn_eq_of_not_dvd p K hm/-- A prime `p ∤ m` is unramified in `ℚ(ζₘ)`. This applies Mathlib's
`IsCyclotomicExtension.Rat.ramificationIdxIn_eq_of_not_dvd`. -/
theorem cyclotomic_unramified {m : ℕ} [NeZero m] (p : ℕ) [Fact p.Prime] (K : Type*)
[Field K] [NumberField K] [IsCyclotomicExtension {m} ℚ K] (hm : ¬ p ∣ m) :
(Ideal.span {(p : ℤ)}).ramificationIdxIn (𝓞 K) = 1 :=
IsCyclotomicExtension.Rat.ramificationIdxIn_eq_of_not_dvd p K hm/-- The splitting law of `ℚ(ζₘ)`: a prime `p ∤ m` (unramified by `cyclotomic_unramified`) has
residue degree `1` — it **splits completely** — iff `p ≡ 1 (mod m)`. A one-line corollary of
Mathlib's `IsCyclotomicExtension.Rat.inertiaDegIn_eq_of_not_dvd`, using that an element of a
group has order `1` iff it is the identity (`orderOf_eq_one_iff`). -/
theorem splits_completely_iff {m : ℕ} [NeZero m] (p : ℕ) [Fact p.Prime] (K : Type*) [Field K]
[NumberField K] [IsCyclotomicExtension {m} ℚ K] (hm : ¬ p ∣ m) :
(Ideal.span {(p : ℤ)}).inertiaDegIn (𝓞 K) = 1 ↔ (p : ZMod m) = 1 := by
rw [IsCyclotomicExtension.Rat.inertiaDegIn_eq_of_not_dvd p K hm, orderOf_eq_one_iff]automorphic forms over are Dirichlet characters, and the non-vanishing of their -functions at gives Dirichlet's theorem, now in Mathlib:
/-- **Dirichlet's theorem** (1837): every invertible residue class `a mod q` contains infinitely
many primes. Its proof is the non-vanishing of `L(1, χ)` for the Dirichlet characters `χ mod q`
— the automorphic forms for `GL(1)` over `ℚ`. In Galois terms, every element of
`Gal(ℚ(ζ_q)/ℚ)` is a Frobenius element infinitely often (the abelian case of Chebotarev).
This applies Mathlib's `Nat.forall_exists_prime_gt_and_eq_mod`. -/
theorem dirichlet_primes_in_ap {q : ℕ} [NeZero q] {a : ZMod q} (ha : IsUnit a) (n : ℕ) :
∃ p > n, p.Prime ∧ (p : ZMod q) = a :=
Nat.forall_exists_prime_gt_and_eq_mod ha n: the transformation law of modular forms and the normalisation of :
/-- The defining symmetry of a **modular form** of weight `k` for `SL(2, ℤ)`:
`f((az + b)/(cz + d)) = (cz + d)^k f(z)` for every `γ = (a b; c d) ∈ SL(2, ℤ)` and every `z` in
the upper half-plane (`denom γ z = cz + d`). In Mathlib a `ModularForm 𝒮ℒ k` is a holomorphic
function on `ℍ` with this symmetry and bounded at the cusp. This applies
`SlashInvariantForm.slash_action_eqn''`. -/
theorem modular_transformation {k : ℤ} (f : ModularForm 𝒮ℒ k) (γ : SL(2, ℤ))
(z : UpperHalfPlane) :
f (γ • z) = (UpperHalfPlane.denom γ z) ^ k * f z :=
SlashInvariantForm.slash_action_eqn'' f (by exact ⟨γ, rfl⟩) z/-- Ramanujan's cusp form `Δ(z) = q ∏ₙ (1 − qⁿ)²⁴ = Σ τ(n) qⁿ` (weight 12, level 1) is
normalised: its `q`-expansion starts `q + …`, i.e. `τ(1) = 1`. Mathlib defines `Δ` from the
Dedekind eta function and proves it is a cusp form. This applies
`ModularForm.discriminant_qExpansion_coeff_one`. The multiplicativity of `τ` (Mordell, 1917)
and Deligne's bound `|τ(p)| ≤ 2p^(11/2)` (1974) are not in Mathlib. -/
theorem discriminant_first_coefficient :
(PowerSeries.coeff 1) (UpperHalfPlane.qExpansion 1 ModularForm.discriminant) = 1 :=
ModularForm.discriminant_qExpansion_coeff_oneWhat is and is not formalised. Formalised: quadratic reciprocity, the splitting laws of , and , Frobenius in cyclotomic fields, Dirichlet's theorem, the definition of modular forms and of . Not formalised: Lemma 1 as stated here (Mathlib has Gauss sums, but we did not connect them), Theorem 2's Galois-theoretic proof as a whole, Kronecker–Weber, class field theory, Hecke operators on modular forms and Theorem 5, Theorems 6 and 7, and of course the conjectures. Reciprocity laws for over are within reach of Mathlib; the rest of the programme is far beyond current formal libraries.
Checking reciprocity numerically
The first experiment checks quadratic reciprocity for all pairs of odd primes below , the congruence splitting laws of and , and then the non-abelian rule of the motivation: it finds two primes in the same class mod at which behaves differently, and confirms that predicts the number of roots at every prime below . Finally it compares the frequencies of , and roots with Chebotarev's densities — the proportions of the identity, transpositions and -cycles in .
"""Reciprocity laws: when does a polynomial factor modulo p?
For a polynomial f with integer coefficients, how f factors modulo a prime p
is governed by the Frobenius element at p in the Galois group of f.
1. Quadratic reciprocity, checked for every pair of distinct odd primes below
200 with Euler's criterion.
2. Abelian splitting laws: x^2 + 1 has roots mod p exactly when p = 1 mod 4,
and x^2 - 5 exactly when p = +-1 mod 5. Congruences decide everything.
3. A non-abelian splitting law: the number of roots of x^3 - x - 1 mod p is
NOT determined by any congruence on p (we exhibit primes in the same
class mod 23 that behave differently), but it IS given by the coefficients
of the modular form eta(z) eta(23z) = q prod (1 - q^n)(1 - q^(23n)):
#roots = a_p + 1 for p != 23. This is a theorem (Hecke's theory of theta
series for Q(sqrt(-23))); here we check it for p < 2000.
4. Chebotarev statistics for x^3 - x - 1, whose Galois group is S_3: the
proportions of primes with 3, 1 and 0 roots approach 1/6, 1/2, 1/3.
"""
def primes_below(n):
"""All primes p < n."""
sieve = bytearray([1]) * max(n, 2)
sieve[0] = sieve[1] = 0
for i in range(2, int(n ** 0.5) + 1):
if sieve[i]:
sieve[i * i::i] = bytearray(len(range(i * i, n, i)))
return [i for i in range(n) if sieve[i]]
def legendre(a, p):
"""The Legendre symbol (a/p) for an odd prime p, by Euler's criterion."""
r = pow(a % p, (p - 1) // 2, p)
return -1 if r == p - 1 else r
def reciprocity_failures(primes):
"""Pairs p < q of odd primes violating (p/q)(q/p) = (-1)^((p-1)(q-1)/4)."""
odd = [p for p in primes if p > 2]
bad = []
for i, p in enumerate(odd):
for q in odd[i + 1:]:
sign = (-1) ** (((p - 1) // 2) * ((q - 1) // 2))
if legendre(p, q) * legendre(q, p) != sign:
bad.append((p, q))
return bad
def root_count(coeffs, p):
"""Number of roots mod p of the polynomial with coefficients (highest first)."""
count = 0
for x in range(p):
v = 0
for c in coeffs:
v = (v * x + c) % p
count += v == 0
return count
def eta_product_coefficients(N, levels):
"""a_1..a_N of q * prod_n prod_{m in levels} (1 - q^(m n)), as a list a[0..N]."""
c = [0] * N # c[k] = coefficient of q^k in the product (without the q)
c[0] = 1
for m in levels:
for n in range(1, N // m + 1):
step = m * n
for k in range(N - 1, step - 1, -1):
c[k] -= c[k - step]
return [0] + c # a[n] = c[n - 1]
def main():
primes = primes_below(2000)
pairs = len([p for p in primes if 2 < p < 200])
bad = reciprocity_failures([p for p in primes if p < 200])
print(f"1. Quadratic reciprocity: {pairs * (pairs - 1) // 2} pairs of odd "
f"primes < 200, {len(bad)} failures")
print()
odd = [p for p in primes if p > 5]
law1 = all((root_count([1, 0, 1], p) == 2) == (p % 4 == 1) for p in odd)
law2 = all((root_count([1, 0, -5], p) == 2) == (p % 5 in (1, 4)) for p in odd)
print(f"2. For all {len(odd)} primes 5 < p < 2000:")
print(f" x^2 + 1 has roots mod p <=> p = 1 mod 4 : {law1}")
print(f" x^2 - 5 has roots mod p <=> p = +-1 mod 5 : {law2}")
print()
cubic = [1, 0, -1, -1]
counts = {p: root_count(cubic, p) for p in primes}
seen, clash = {}, None
for p in primes:
if p != 23:
r = p % 23
if r in seen and counts[seen[r]] != counts[p] and clash is None:
clash = (seen[r], p)
seen.setdefault(r, p)
p0, p1 = clash
print("3. x^3 - x - 1 (discriminant -23):")
print(f" p = {p0} and p = {p1} are both {p0 % 23} mod 23, but have "
f"{counts[p0]} and {counts[p1]} roots:")
print(" no congruence condition decides how the cubic factors.")
a = eta_product_coefficients(2000, [1, 23])
agree = sum(1 for p in primes if p != 23 and counts[p] == a[p] + 1)
print(f" eta(z)eta(23z) = q - q^2 - q^3 + q^6 + q^8 - ...: "
f"a_p + 1 = #roots")
print(f" for {agree} of the {len(primes) - 1} primes p < 2000, p != 23")
print()
good = [p for p in primes if p != 23]
print("4. Chebotarev for Gal = S_3, primes p < 2000:")
for k, name, density in [(3, "3 roots (identity)", "1/6"),
(1, "1 root (transposition)", "1/2"),
(0, "0 roots (3-cycle)", "1/3")]:
share = sum(1 for p in good if counts[p] == k) / len(good)
print(f" {name:24s}: {share:.3f} (density {density})")
print()
print("Epistemic status: parts 1-3 are exact, exhaustive checks over finite")
print("ranges of theorems (quadratic reciprocity; the splitting laws; the")
print("modularity of the S_3 representation, a classical theorem of Hecke).")
print("They prove nothing beyond the primes tested. Part 4 is statistical:")
print("Chebotarev's theorem gives the limiting densities, not finite counts.")
if __name__ == "__main__":
main()The second experiment counts points of modulo every prime below and compares with the coefficients of ; it checks the Hecke relations of Proposition 4 for these coefficients and for Ramanujan's , Ramanujan's congruence modulo , and Deligne's bound.
"""Modularity in action: an elliptic curve, a modular form, and Ramanujan's tau.
1. The elliptic curve 11a1: y^2 + y = x^3 - x^2 - 10x - 20 has a_p = p - (number
of affine points mod p). The modular form
f = q prod_{n>=1} (1 - q^n)^2 (1 - q^(11n))^2 = sum a_n q^n
(weight 2, level 11) has the same a_p for every prime p - an instance of
the modularity theorem (here classical: Eichler and Shimura). We check
this exactly for p < 400.
2. Hecke theory predicts that the coefficients of f are multiplicative and
satisfy a_(p^2) = a_p^2 - p for p != 11. We check this for n <= 400.
3. Ramanujan's Delta = q prod (1 - q^n)^24 = sum tau(n) q^n: multiplicativity
(Mordell 1917), Ramanujan's congruence tau(n) = sigma_11(n) mod 691, and
Deligne's bound |tau(p)| <= 2 p^(11/2) (1974), checked for n <= 400.
"""
import math
N = 400
def primes_below(n):
"""All primes p < n."""
sieve = bytearray([1]) * max(n, 2)
sieve[0] = sieve[1] = 0
for i in range(2, int(n ** 0.5) + 1):
if sieve[i]:
sieve[i * i::i] = bytearray(len(range(i * i, n, i)))
return [i for i in range(n) if sieve[i]]
def series_mul(a, b, n):
"""Product of two power series (coefficient lists), truncated to degree < n."""
out = [0] * n
for i, ai in enumerate(a[:n]):
if ai:
for j, bj in enumerate(b[:n - i]):
out[i + j] += ai * bj
return out
def euler_product(n, m=1):
"""Coefficients of prod_{k>=1} (1 - q^(m k)) up to degree < n."""
c = [0] * n
c[0] = 1
for k in range(1, (n - 1) // m + 1):
step = m * k
for j in range(n - 1, step - 1, -1):
c[j] -= c[j - step]
return c
def form_11a():
"""a[0..N] for q prod (1 - q^n)^2 (1 - q^(11n))^2 (a[0] = 0)."""
e1, e11 = euler_product(N), euler_product(N, 11)
c = series_mul(series_mul(e1, e1, N), series_mul(e11, e11, N), N)
return [0] + c
def ramanujan_tau():
"""tau[0..N] for Delta = q prod (1 - q^n)^24 (tau[0] = 0)."""
e = euler_product(N)
e2 = series_mul(e, e, N)
e3 = series_mul(e2, e, N)
e6 = series_mul(e3, e3, N)
e12 = series_mul(e6, e6, N)
return [0] + series_mul(e12, e12, N)
def curve_trace(p):
"""a_p of 11a1: y^2 + y = x^3 - x^2 - 10x - 20, as p - #affine points."""
if p == 2:
affine = sum(1 for x in range(2) for y in range(2)
if (y * y + y - (x ** 3 - x * x - 10 * x - 20)) % 2 == 0)
return p - affine
# (2y + 1)^2 = 4(x^3 - x^2 - 10x - 20) + 1: count square roots
roots = [0] * p
for y in range(p):
roots[y * y % p] += 1
affine = sum(roots[(4 * (x ** 3 - x * x - 10 * x - 20) + 1) % p]
for x in range(p))
return p - affine
def multiplicativity_failures(a, n):
"""Coprime pairs (m, k) with m * k <= n and a[m k] != a[m] a[k]."""
return [(m, k) for m in range(2, n + 1) for k in range(m + 1, n // m + 1)
if math.gcd(m, k) == 1 and a[m * k] != a[m] * a[k]]
def sigma(n, k):
"""Sum of the k-th powers of the divisors of n."""
return sum(d ** k for d in range(1, n + 1) if n % d == 0)
def main():
primes = primes_below(N)
a = form_11a()
terms = " ".join(f"{a[n]:+d}q^{n}" for n in range(1, 7))
print("1. f = q prod (1 - q^n)^2 (1 - q^11n)^2")
print(" = " + terms + " ...")
match = sum(1 for p in primes if curve_trace(p) == a[p])
print(f" a_p(11a1) = a_p(f) for {match} of the {len(primes)} primes p < {N}")
print()
bad = multiplicativity_failures(a, N)
square_law = all(a[p * p] == a[p] ** 2 - p for p in primes
if p * p <= N and p != 11)
print(f"2. Hecke relations for f, n <= {N}: a_mn = a_m a_n (coprime): "
f"{len(bad)} failures;")
print(f" a_(p^2) = a_p^2 - p for p != 11: {square_law}; "
f"a_121 = a_11^2 = {a[121]}")
print()
tau = ramanujan_tau()
print(f"3. Ramanujan: tau(1..6) = {tau[1:7]}")
print(f" multiplicativity failures (n <= {N}): "
f"{len(multiplicativity_failures(tau, N))}")
cong = all((tau[n] - sigma(n, 11)) % 691 == 0 for n in range(1, N + 1))
print(f" tau(n) = sigma_11(n) mod 691 for all n <= {N}: {cong}")
ratio = max(abs(tau[p]) / (2 * p ** 5.5) for p in primes)
print(f" Deligne: max |tau(p)| / (2 p^(11/2)) over p < {N} = {ratio:.4f}")
print()
print("Epistemic status: exact integer arithmetic. Every check is a finite")
print("verification of a theorem (modularity of 11a1, Hecke theory, Mordell,")
print("Ramanujan's congruence, Deligne's bound); agreement for n <= 400")
print("illustrates these theorems but proves nothing beyond the range tested.")
if __name__ == "__main__":
main()All the checks are exact, and all are finite. They illustrate theorems (reciprocity, Hecke's and Eichler–Shimura's modularity results, Mordell's and Deligne's theorems) and could have refuted a wrong formula — the history of the subject is full of conjectures first seen in such tables — but they prove nothing beyond the range tested.
Seeing Frobenius
Primes in columns. Run the sieve on a grid with columns: every number in a column has the same residue mod . The primes (apart from ) fall into two columns: residue (the primes that split in , sums of two squares like , ) and residue (the primes that stay prime in ). The column of is its Frobenius in , and Dirichlet's theorem says both columns contain infinitely many primes. Try columns for : the primes other than spread over the four columns about equally — Chebotarev's density theorem in its abelian (Dirichlet) form.
Primes sorted by their Frobenius in Q(i)
The column of a prime is p mod 4: column 1 splits in Z[i], column 3 stays prime.
- prime
- crossed out
Step 1 of 9
Here are the numbers from 1 to 200. Press “Next step” to start sieving.
The Galois group of . The fifth roots of unity form a regular pentagon. The Galois automorphism sends for : it permutes the vertices by multiplying angles by . is complex conjugation (reflection in the real axis), and cycles . The Frobenius at a prime is .
The fifth roots of unity
Gal(Q(ζ₅)/Q) ≅ (Z/5)ˣ acts by ζ ↦ ζᵃ. Change n to see other cyclotomic fields.
Drag the points, or focus one with Tab and use the arrow keys (hold Shift for small steps).
Solutions of wⁿ = c for n = 5:
- w₀ = 1
- w₁ = 0.309 + 0.951i
- w₂ = −0.809 + 0.588i
- w₃ = −0.809 − 0.588i
- w₄ = 0.309 − 0.951i
All roots lie on the circle of radius |c|^(1/n) ≈ 1.
Neighbouring roots are 72° apart: 360° ÷ 5.
w₀ is the principal root, at the angle (arg c)/n; the others follow by equal turns.
Because c = 1, these are the roots of unity of order 5.
The roots add up to 0, so the regular polygon is balanced around the origin.
Exercises
1. The Langlands programme: an orientation
Warm-upHumanUse quadratic reciprocity to compute the Legendre symbol . Enter or .
2. The Langlands programme: an orientation
Warm-upHumanInto how many distinct prime ideals does split in the cyclotomic field , which has degree ?
3. The Langlands programme: an orientation
CoreHumanLet be the quadratic Gauss sum for . What is the integer ?
4. The Langlands programme: an orientation
CoreHumanIn the Galois-theoretic proof of quadratic reciprocity we used that is the unique quadratic subfield of . Why is that true?
5. The Langlands programme: an orientation
CoreHumanWhich statement about the number of roots of modulo a prime is true?
6. The Langlands programme: an orientation
CoreHumanBy Chebotarev's density theorem, what proportion of primes have the property that has exactly one root mod ?
7. The Langlands programme: an orientation
CoreFormalWhich of the lesson's Lean theorems is the formal version of the statement "the Frobenius element at in is the class of " used in the proof of quadratic reciprocity?
8. The Langlands programme: an orientation
StretchComputationalWrite tau_list(N) returning the list [0, τ(1), …, τ(N-1)] of coefficients of , so that tau_list(N)[n] is . Then test Mordell's theorem for coprime with .
9. The Langlands programme: an orientation
StretchHumanWhich of the following are proved theorems? Choose all that apply.
Common misconceptions
Misconception
"The Langlands programme is a single conjecture." It is a web of conjectures and theorems: reciprocity (Galois automorphic), functoriality (automorphic for automorphic for ), local versions at each prime, versions over function fields and geometric versions, and refinements (multiplicities, -packets, special values). Many cases are proved; most are open. "Proving the Langlands conjectures" is not a well-defined single event.
Misconception
"The proof of geometric Langlands settles the arithmetic Langlands conjectures." Geometric and arithmetic Langlands are analogous but distinct statements about different objects (sheaves on for a complex curve versus automorphic forms over number fields). Progress in one suggests methods and predictions for the other, but does not imply it.
Misconception
"A modular form is a function invariant under ." Only weight functions (modular functions, like the -invariant) are invariant, and those cannot be holomorphic and bounded at the cusp unless constant. A modular form of weight transforms by the factor ; that factor is what makes , of weight , possible.
Misconception
"Class field theory explicitly constructs all abelian extensions." It classifies them (by subgroups of idèle class groups) and describes their Frobenius elements. Explicit generators — Kronecker's Jugendtraum, Hilbert's twelfth problem — are known over (roots of unity) and imaginary quadratic fields (special values of elliptic functions); beyond that the problem is largely open (with recent -adic progress for totally real fields).
Misconception
"Reciprocity means congruence conditions." That is true exactly for abelian extensions. The cubic shows the non-abelian case: no congruence condition decides its splitting, but the coefficients of a modular form do. Langlands' insight is that the right generalisation of "a congruence condition" is "an automorphic representation".
Viewpoints
Number theory— How primes split
For a number theorist, reciprocity is the answer to an ancient question: given a polynomial , describe the primes modulo which it splits. The answer has three tiers. For abelian Galois groups, congruence conditions decide (class field theory). For any Galois group, Chebotarev's density theorem (1922) says each conjugacy class occurs as for a proportion of primes — statistics, but no rule. For a rule one needs the automorphic side: the trace of is a Hecke eigenvalue, read off from the -expansion of a modular form as in the motivation. See algebraic number theory.
Analysis— Harmonic analysis on locally symmetric spaces
Automorphic forms are eigenfunctions of invariant differential operators — the Laplacian on for Maass forms, the Cauchy–Riemann operator for holomorphic modular forms — on locally symmetric spaces, and automorphic representations are the irreducible pieces of . The main analytic tool is the trace formula (Selberg 1956 for ; Arthur for general groups), which equates a spectral side (sums over automorphic representations) with a geometric side (orbital integrals over conjugacy classes); comparing trace formulas of two groups proves cases of functoriality, and stabilising it required the Fundamental Lemma. The -functions themselves are studied by Rankin–Selberg integrals and the Langlands–Shahidi method. See harmonic analysis.
Geometry— Weil's Rosetta stone
In a 1940 letter to his sister Simone, André Weil described a three-column "Rosetta stone": number fields, function fields of curves over , and Riemann surfaces. The middle column is the bridge: there, the arithmetic Langlands conjectures are theorems (Drinfeld, L. Lafforgue, V. Lafforgue), proved with the geometry of moduli spaces of shtukas. In the third column the conjectures become geometric Langlands, where the Langlands dual group appears through the geometric Satake equivalence (Lusztig, Ginzburg, Mirković–Vilonen 2007): the category of perverse sheaves on the affine Grassmannian of is equivalent, as a tensor category, to . The dual group, invisible in classical terms, is a geometric object. See Lie groups and algebraic geometry.
Topology— Galois groups as fundamental groups
Grothendieck's étale fundamental group unifies Galois theory and covering spaces: , and finite extensions are finite covers. A Galois representation is then a local system, the arithmetic analogue of a representation of of a manifold — and in geometric Langlands it literally is one: a flat -bundle on a Riemann surface. The Frobenius at plays the role of a loop around a point. A more speculative dictionary, arithmetic topology (Mazur, Kapranov, Reznikov, Morishita), treats as a -manifold and primes as knots, with the Legendre symbol behaving like a linking number — quadratic reciprocity as the symmetry of linking numbers. That dictionary is an analogy, a source of conjectures rather than a theorem. See algebraic topology.
Physics— Electric–magnetic duality
In 1977 Goddard, Nuyts and Olive, studying magnetic monopoles in gauge theory, found that the magnetic charges of a theory with gauge group are governed by a dual group — Langlands' , discovered independently. The Montonen–Olive conjecture proposes that supersymmetric Yang–Mills theories with groups and are equivalent ("S-duality"), and Kapustin and Witten (2007) showed how, after compactification on a Riemann surface, S-duality predicts the geometric Langlands correspondence, with 't Hooft line operators acting as Hecke operators. This is a powerful heuristic and a source of new conjectures; the mathematical proofs proceed independently.
Category theory— An equivalence of categories
Geometric Langlands is formulated categorically: for a smooth projective complex curve , an equivalence between D-modules on the moduli stack of -bundles and (a variant of) quasi-coherent sheaves on the stack of -local systems, compatible with Hecke functors. It is a categorification of the "spectral decomposition" in the classical theory: Hecke eigensheaves correspond to skyscraper sheaves at points of . The formulation needs derived algebraic geometry and stable -categories. See categorical representation theory.
History and global context
- 1640–1801. Fermat states the two-squares theorem (Euler proves it, 1749); Euler conjectures quadratic reciprocity (1783); Legendre introduces his symbol; Carl Friedrich Gauss proves reciprocity (1796; Disquisitiones Arithmeticae, 1801), later giving several more proofs, including one by Gauss sums.
- 1837–1897. Dirichlet proves his theorem on primes in progressions with -functions; Kronecker states (1853) and Weber (1886) and Hilbert (1896) prove what is now the Kronecker–Weber theorem; Hilbert's Zahlbericht (1897) and his ninth and twelfth problems (1900) set the agenda for higher reciprocity laws.
- 1916–1937. Srinivasa Ramanujan's conjectures on (1916); Mordell's proof of multiplicativity (1917); Teiji Takagi's class field theory (1920); Chebotarev's density theorem (1922); Emil Artin's reciprocity law (1927); Erich Hecke's operators and -functions (1930s); Claude Chevalley's idèles (1936).
- 1940–1967. Weil's Rosetta-stone letter (1940); John Tate's thesis (1950) recasts Hecke's work on as harmonic analysis on adèles; Martin Eichler (1954) and Goro Shimura relate elliptic curves and modular forms; Yutaka Taniyama's problems (1955); Atle Selberg's trace formula (1956); Harish-Chandra's representation theory of real reductive groups and his "philosophy of cusp forms".
- 1967–1974. Robert Langlands' letter to Weil (January 1967) and Problems in the theory of automorphic forms (1970); Jacquet–Langlands (1970); Deligne attaches Galois representations to modular forms (1969–71) and proves the Ramanujan conjecture (1974); Deligne–Serre (weight one, 1974); Vladimir Drinfeld begins the function-field theory.
- 1977–2002. Goddard–Nuyts–Olive's dual group in physics (1977); Langlands–Tunnell (1980–81); Arthur–Clozel base change (1989); Wiles and Taylor–Wiles (1995); local Langlands for (Harris–Taylor, Henniart, 1998–2000); Laurent Lafforgue's over function fields (2002).
- 2008–present. Ngô Bảo Châu's proof of the Fundamental Lemma (2008–10); Khare–Wintenberger's proof of Serre's conjecture (2009); the Sato–Tate theorem (2008–11); Vincent Lafforgue's automorphic-to-Galois correspondence over function fields (2018); Newton–Thorne's symmetric power functoriality and Fargues–Scholze's geometrisation of local Langlands (2021); the announced proof of geometric Langlands by Gaitsgory, Raskin and collaborators (2024).
Further reading
- Edward Frenkel, Love and Math (2013) — a personal, non-technical tour of the programme, especially its geometric side.
- David A. Cox, Primes of the Form (1989; 2nd ed. 2013) — reciprocity, class field theory and complex multiplication through one beautiful question; includes .
- Stephen Gelbart, "An elementary introduction to the Langlands program", Bulletin of the AMS 10 (1984).
- Jean-Pierre Serre, "On a theorem of Jordan", Bulletin of the AMS 40 (2003) — includes the example of and .
- Fred Diamond and Jerry Shurman, A First Course in Modular Forms (2005) — modular forms, Hecke operators, Galois representations and the statement of modularity.
- Joseph Bernstein and Stephen Gelbart (eds.), An Introduction to the Langlands Program (2003) — lectures by leading experts on the parts of the programme, from classical modular forms to geometric Langlands.
- Daniel Bump, Automorphic Forms and Representations (1997) — the adelic theory for .
- Jürgen Neukirch, Algebraic Number Theory (1999) — class field theory.
- James Arthur, "The principle of functoriality", Bulletin of the AMS 40 (2003).
- Robert P. Langlands, "Problems in the theory of automorphic forms", in Lectures in Modern Analysis and Applications III, Lecture Notes in Mathematics 170 (1970).
A reading path: Cox (Chapters 1–2, 5) and Gelbart's survey for the shape of reciprocity → Diamond–Shurman for over → Neukirch or Cassels–Fröhlich for class field theory → Bump and the Bernstein–Gelbart volume for automorphic representations → Arthur's survey for functoriality, and Frenkel's survey articles for the geometric side.