Skip to content

Commit 3e19009

Browse files
committed
README and capability log: post-review state and limitations
1 parent ca9e2c9 commit 3e19009

3 files changed

Lines changed: 123 additions & 56 deletions

File tree

CAPABILITY_LOG.md

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,3 +47,30 @@ Compiling: `AbsGal`, `CoeffPlace`, `Completion`, `LambdaAdicRep`, `IsCompatibleF
4747
Open: `IsCompatibleFamily` still takes an *arbitrary* `IsFrobAt` parameter rather than
4848
the concrete definition. Until that is wired up, the compatible-family definition is a
4949
faithful schema, not a statement about actual Frobenius elements.
50+
51+
## 2026-08-11 — session 2
52+
53+
### Lean work
54+
55+
- [finding] `IsArithFrobAt.mul_inv_mem_inertia` and `Ideal.inertia` exist in v4.28.0. Frobenius well-definedness at a fixed prime is therefore provable, and was proved (`toHom_eq_of_isArithFrobAt`).
56+
- [finding] Mathlib's `exists_of_isInvariant` needs `[Finite (S ⧸ Q)]`, so it does not apply at ``. Frobenius existence in the absolute Galois group is a genuine gap — a self-contained candidate for a future contribution.
57+
- [decision] Superseded declarations deleted rather than annotated. The development trajectory lives in git history and in this log; the source file shows one correct chain.
58+
59+
### Independent review
60+
61+
An earlier version was reviewed by a separate AI system with no history of this
62+
project. It found four substantive errors, all of which compiled cleanly:
63+
64+
- [error] `IsFrobeniusSystem.isConj_of` asserted that any two Frobenius elements at a place are conjugate. **False.** Two Frobenius lifts at the same prime differ by an inertia element. Had this structure ever been supplied, everything downstream would have been vacuous. Axiom deleted; the correct inertia-based argument proved instead.
65+
- [error] `charpoly_eq_of_isConj` was presented as establishing that condition (2) is well posed. It does not: the argument needs inertia, not conjugacy.
66+
- [error] The Lafforgue statement was false as written. Counterexample: a rank-one unramified character of the constant-field quotient can have Frobenius eigenvalues outside `E`. Irreducibility, finite-order determinant, and `E`-rationality added.
67+
- [error] Frobenius existence was never assumed. Defining a structure with an `exists_frob` field is not assuming it, so the compatibility condition could hold vacuously. Replaced by `FrobeniusChoice` passed as data.
68+
- [error] Minor: `n : ℕ` admitted `n = 0`; unramifiedness used `∃ Q` where `∀ Q` is wanted; `HeightOneSpectrum A` silently indexes an affine model.
69+
70+
### AI tool performance
71+
72+
- [AI] Claude — Lean/Mathlib mechanics — STRONG. Located the missing `MulSemiringAction`, wrote it correctly, found `Matrix.charpoly_units_conj`, `Ideal.under_smul`, `IsArithFrobAt.conj`, and the inertia lemma. Almost every compile failure was mechanical (arity, docstring placement, `noncomputable`) and fixed in one cycle.
73+
- [AI] Claude — mathematical faithfulness — WEAK, and this is the headline finding. Asserted a false axiom without checking it against the decomposition/inertia exact sequence; stated a main theorem missing essential hypotheses; described a lemma as establishing well-definedness when it did not; and wrote README claims that the code did not support. All four compiled. None was caught by `lake build`, by iteration, or by self-review.
74+
- [AI] Claude — self-assessment — UNRELIABLE. Proposed sanity checks that were real but insufficient (`#print axioms` confirms proofs avoid `sorry`; it says nothing about whether definitions are vacuous or statements are true).
75+
- [AI] independent review — DECISIVE. A model with no investment in the prior choices found in one pass what iteration had not. The practical lesson: for formalisation, an adversarial reader is not optional quality assurance, it is the only check on the step that type-checking cannot see — whether the formal statement means the informal one.
76+
- [AI] Aristotle — see session 1. Sandbox-side actions were narrated as if performed on the caller's repository.

LambdaAdicSlice/Basic.lean

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -364,7 +364,7 @@ Lafforgue's); and `HeightOneSpectrum A` indexes the closed points of an affine
364364
model, omitting the places at infinity of the projective curve.
365365
366366
Statement only: the proof is `sorry`. -/
367-
theorem exists_isCompatibleFamily''_of_irreducible
367+
theorem exists_isCompatibleFamily_of_irreducible
368368
(hK : FunctionField Fq K)
369369
(hn : 0 < n)
370370
(Frob : FrobeniusChoice A K Kbar)

README.md

Lines changed: 95 additions & 55 deletions
Original file line numberDiff line numberDiff line change
@@ -1,72 +1,112 @@
11
# lambda_adic_slice
22

3-
Statement-level formalisation of one definitional slice from arithmetic geometry.
4-
The point is to locate which ingredients Mathlib v4.28.0 currently supports and
5-
which are missing. The main theorem is stated, not proved; two supporting
3+
A statement-level formalisation of one definitional slice from arithmetic
4+
geometry: compatible families of λ-adic Galois representations, and the
5+
statement of Lafforgue's companion theorem for curves.
6+
7+
The purpose is to find out precisely which ingredients Mathlib v4.28.0 supports
8+
and which it does not. The main theorem is stated, not proved. Five supporting
69
results are proved.
710

811
## The slice
912

1013
Fix:
11-
- `K` a global field and `` an algebraic closure, `G_K = Gal(K̄/K)` its absolute
12-
Galois group equipped with the Krull topology;
13-
- `E` a number field (the coefficient field), `λ` ranging over finite places of `E`,
14-
with completion `E_λ` and residue characteristic `ℓ(λ)`;
15-
- `S` a finite set of finite places of `K`;
16-
- `n ≥ 1` an integer.
17-
18-
**Definition (compatible family).** A family `(ρ_λ)_λ` of continuous homomorphisms
19-
`ρ_λ : G_K → GL_n(E_λ)` is a *compatible family unramified outside `S`* if:
20-
21-
1. for every `λ`, `ρ_λ` is unramified at every finite place `v` of `K` with
22-
`v ∉ S` and `v ∤ ℓ(λ)`;
23-
2. for every such `v`, the characteristic polynomial of `ρ_λ(Frob_v)` has
24-
coefficients in `E` (via a fixed embedding `E ↪ E_λ`) and is independent of `λ`.
25-
26-
**Theorem (Deligne's conjecture, proved by L. Lafforgue).** Suppose `K` is a global
27-
function field, i.e. the function field of a smooth projective curve over a finite
28-
field, and `ℓ(λ) ≠ char K`. Then every continuous `λ`-adic representation
29-
`ρ_λ : G_K → GL_n(E_λ)` unramified outside `S` is a member of a compatible family
14+
- `K` a global field with algebraic closure ``, and `G_K = Gal(K̄/K)` its
15+
absolute Galois group with the Krull topology;
16+
- `A` a Dedekind domain with fraction field `K`, so that `HeightOneSpectrum A`
17+
indexes the finite places of an affine model;
18+
- `E` a number field (the coefficient field), `λ` ranging over its finite
19+
places, with completion `E_λ` and residue characteristic `ℓ(λ)`;
20+
- `S` a finite set of places;
21+
- `n ≥ 1`.
22+
23+
**Definition (compatible family).** Given a choice of Frobenius element at each
24+
place, a family `(ρ_λ)_λ` of continuous homomorphisms `ρ_λ : G_K → GL_n(E_λ)`
25+
is a *compatible family unramified outside `S`* if:
26+
27+
1. for every `λ`, `ρ_λ` is unramified at every `v ∉ S` with `v ∤ ℓ(λ)`;
28+
2. for every such `v`, the characteristic polynomial of `ρ_λ(Frob_v)` is the
29+
image of a polynomial `P_v ∈ E[T]` that does not depend on `λ`.
30+
31+
**Theorem (Lafforgue's companion theorem).** Let `K` be a global function field
32+
and `ℓ(λ₀) ≠ char K`. Let `ρ_{λ₀}` be continuous, irreducible, of finite-order
33+
determinant, unramified outside `S`, and with Frobenius characteristic
34+
polynomials rational over `E`. Then `ρ_{λ₀}` is a member of a compatible family
3035
unramified outside `S`.
3136

32-
## Status
33-
34-
Definitions and the Lafforgue statement compile against Mathlib v4.28.0. Two results
35-
are *proved*, not assumed:
36-
37-
- `charpoly_eq_of_isConj` — the characteristic polynomial of `ρ_λ(g)` depends only on
38-
the conjugacy class of `g`, so condition (2) is well posed;
39-
- `isFrobAt_conj` — conjugates of a Frobenius element at `v` are again Frobenius
40-
elements at `v`.
41-
42-
`IsFrobAt` is a definition, not an axiom: it is built on Mathlib's `IsArithFrobAt`
43-
via a `MulSemiringAction` of `G_K` on the integral closure of `A` in ``, which
44-
Mathlib does not provide and which is supplied here.
45-
46-
Existence of a Frobenius element at each place remains an axiom. This is not missing
47-
API: Mathlib's existence proof (`exists_of_isInvariant`) requires a finite residue
48-
field at the chosen prime, and at `` that residue field is the algebraic closure of
49-
`A/v`, hence infinite. The *definition* of arithmetic Frobenius transfers to the
50-
infinite level; the existence *proof* does not.
37+
## What is proved
38+
39+
- `charpoly_eq_of_isConj_gl`, `charpoly_eq_of_isConj` — the characteristic
40+
polynomial of `ρ(g)` depends only on the conjugacy class of `g`.
41+
- `isFrobAt_conj` — conjugates of a Frobenius element at `v` are again
42+
Frobenius elements at `v` (from `IsArithFrobAt.conj`).
43+
- `toHom_eq_of_isArithFrobAt` — if `ρ` is unramified at `v` and `g`, `g'` are
44+
Frobenius elements at the *same* prime `Q` above `v`, then `ρ g = ρ g'`. The
45+
argument runs through inertia: `IsArithFrobAt.mul_inv_mem_inertia` gives
46+
`g * g'⁻¹ ∈ inertia Q`, which `ρ` kills.
47+
- `charpoly_eq_of_isArithFrobAt` — the corresponding statement for
48+
characteristic polynomials.
49+
50+
`IsFrobAt` is a definition, not an axiom: it is built on Mathlib's
51+
`IsArithFrobAt` via a `MulSemiringAction` of `G_K` on the integral closure of
52+
`A` in ``. That instance is **not** in Mathlib and is supplied here; it turned
53+
out to be the only real obstruction, since `IsArithFrobAt` is already stated for
54+
monoid actions and needs no finiteness.
55+
56+
## Limitations
57+
58+
Stated explicitly, because a formalisation that compiles is not thereby correct.
59+
60+
- **Frobenius existence is assumed, not proved.** `FrobeniusChoice` takes it as
61+
data. Mathlib's `exists_of_isInvariant` requires a finite residue field at the
62+
chosen prime; at `` that residue field is the algebraic closure of `A/v`, so
63+
the proof does not transfer. Proving it needs surjectivity of the
64+
decomposition group onto the residue Galois group plus an inverse-limit or
65+
Zorn argument over finite subextensions. The *definition* of arithmetic
66+
Frobenius transfers to the infinite level; the existence *proof* does not.
67+
- **Frobenius independence is proved only at a fixed prime.** Comparing
68+
Frobenius elements at different primes above `v` needs transitivity of the
69+
`G_K`-action on primes above `v`, which is not available here.
70+
- **`IsIrred` is irreducibility over `E_λ`**, not absolute irreducibility. The
71+
base change to an algebraic closure of `E_λ` is not formalised.
72+
- **No coefficient-field descent.** The conclusion places the companions over
73+
`E_λ` itself. Lafforgue's theorem gives companions over finite extensions of
74+
`E_λ`; descending to a common number field is Chin's theorem and is not
75+
formalised here.
76+
- **`HeightOneSpectrum A` indexes an affine model.** For `K = 𝔽_q(t)` and
77+
`A = 𝔽_q[t]` the place at infinity is omitted, so "unramified outside `S`"
78+
permits ramification there. This is not the same as `π₁^ét(X ∖ S)` for
79+
projective `X`.
80+
- **The main theorem is `sorry`.** Formalising the proof is not in scope.
5181

5282
## Note on formulation
5383

5484
Stated via `G_K` with an unramified-outside-`S` condition rather than via
55-
`π₁^ét(X ∖ S)`. These agree for a smooth projective curve `X` with function field `K`,
56-
and the `G_K` formulation is the one Mathlib v4.28.0 can express: Galois categories
57-
and fibre functors exist abstractly (`Mathlib/CategoryTheory/Galois/`), but the finite
58-
étale site of a scheme is not instantiated as a Galois category, so there is no
59-
`π₁^ét(X)` available.
60-
61-
## Future work (currently out of scope)
62-
63-
- Deligne's conjecture for `K` the function field of a normal variety of finite type
64-
over a finite field (dimension ≥ 2), where the index set is closed points of the
65-
variety rather than places of `K` — proved by Drinfeld.
66-
- Chin + Drinfeld independence-of-`` for arithmetic monodromy groups. Requires
67-
algebraic-group infrastructure well beyond this slice.
85+
`π₁^ét(X ∖ S)`. Mathlib v4.28.0 has a complete abstract Galois-category
86+
development (`Mathlib/CategoryTheory/Galois/`), but the finite étale site of a
87+
scheme is not instantiated as a Galois category, so no `π₁^ét(X)` is available.
88+
89+
## Correctness
90+
91+
`lake build` verifies that the proofs are valid. It does not verify that the
92+
definitions say what they are intended to say. An independent review of an
93+
earlier version found four substantive errors, all of which had compiled: a
94+
false axiom asserting that Frobenius lifts at a place are conjugate (they differ
95+
by inertia); a well-definedness claim that the proved lemmas did not support; a
96+
main theorem missing the hypotheses that make it true; and a vacuity hole where
97+
Frobenius existence was never actually assumed. Those are fixed. Further review
98+
is welcome — see `CAPABILITY_LOG.md`.
99+
100+
## Future work
101+
102+
- Deligne's conjecture for function fields of normal varieties of finite type
103+
over a finite field of dimension ≥ 2, where the index set is closed points
104+
rather than places — proved by Drinfeld.
105+
- Chin + Drinfeld independence-of-`` for arithmetic monodromy groups.
106+
- Existence of Frobenius elements in the absolute Galois group — self-contained,
107+
currently missing from Mathlib, and a plausible contribution.
68108

69109
## Build
70110

71111
Lean v4.28.0, Mathlib v4.28.0 (pinned for Aristotle compatibility).
72-
`lake exe cache get && lake build`
112+
lake exe cache get && lake build

0 commit comments

Comments
 (0)