Skip to content

Commit f52019a

Browse files
committed
Session 1: capability log, README status
1 parent a1b73fd commit f52019a

2 files changed

Lines changed: 66 additions & 15 deletions

File tree

CAPABILITY_LOG.md

Lines changed: 38 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,41 @@ One line per session on where AI tools succeeded or failed, and why.
99

1010
## 2026-08-10 — session 1 (Mathlib survey, v4.28.0)
1111

12-
- [survey] `G_K` + Krull topology — EXISTS — `FieldTheory/KrullTopology.lean`, `krullTopology` instance.
13-
- [survey] Finite places, `E_λ` — EXISTS — `IsDedekindDomain.HeightOneSpectrum`, `.adicCompletion`.
14-
- [survey] `GL_n`, characteristic polynomial — EXISTS — `Matrix/GeneralLinearGroup/`, `Matrix/Charpoly/`.
15-
- [survey] Global function fields — PARTIAL — `NumberTheory/FunctionField.lean` has the predicate and valuations, no curve tie-in.
16-
- [survey] Frobenius — PARTIAL, PRINCIPAL GAP — `RingTheory/Frobenius.lean` gives `arithFrobAt` for a FINITE group acting on a ring with finite residue field. No construction of `Frob_v` in the absolute Galois group (needs the compatible system across finite levels, up to conjugacy). Must be taken as a hypothesis.
17-
- [survey] Unramified at a place — PARTIAL — `RingTheory/Unramified/`, `RamificationInertia/Unramified.lean`; no ready-made unramified-outside-`S` condition for a representation.
18-
- [survey] Char-poly coefficients descending to `E` — MISSING — no lemma; stated as a hypothesis.
19-
- [survey] `π₁^ét(X)` — MISSING — `CategoryTheory/Galois/` is abstract Galois categories only (Merten 2024); the finite étale site of a scheme is not instantiated as one, so no `π₁^ét`. Decided the slice formulation on this basis.
12+
- [survey] `G_K` + Krull topology — exists — `FieldTheory/KrullTopology.lean`, `krullTopology` instance.
13+
- [survey] Finite places, `E_λ` — exists — `IsDedekindDomain.HeightOneSpectrum`, `.adicCompletion`.
14+
- [survey] `GL_n`, characteristic polynomial — exists — `Matrix/GeneralLinearGroup/`, `Matrix/Charpoly/`.
15+
- [survey] Global function fields — partial — `NumberTheory/FunctionField.lean` has the predicate and valuations, no curve tie-in.
16+
- [survey] Frobenius — partial, principal gap — `RingTheory/Frobenius.lean` gives `arithFrobAt` for a finite group acting on a ring with finite residue field. No construction of `Frob_v` in the absolute Galois group (needs the compatible system across finite levels, up to conjugacy). Must be taken as a hypothesis.
17+
- [survey] Unramified at a place — partial — `RingTheory/Unramified/`, `RamificationInertia/Unramified.lean`; no ready-made unramified-outside-`S` condition for a representation.
18+
- [survey] Char-poly coefficients descending to `E` — missing — no lemma; stated as a hypothesis.
19+
- [survey] `π₁^ét(X)` — missing — `CategoryTheory/Galois/` is abstract Galois categories only (Merten 2024); the finite étale site of a scheme is not instantiated as one, so no `π₁^ét`. Decided the slice formulation on this basis.
20+
21+
## 2026-08-10 — session 1 (Lean work)
22+
23+
### Mathlib findings
24+
25+
- [finding] `MulSemiringAction (AbsGal K Kbar) (integralClosure A Kbar)` — missing from Mathlib v4.28.0, constructed here in ~10 lines. This was the only real obstruction to applying Mathlib's Frobenius machinery to the absolute Galois group.
26+
- [finding] Initial survey verdict ("no absolute-Galois Frobenius") was wrong and was corrected by reading the source. `AlgHom.IsArithFrobAt` / `IsArithFrobAt` are stated for a *monoid* action with `SMulCommClass` — no finiteness required. Only the choice function `arithFrobAt` needs `[Finite (S ⧸ Q)]`. Consequence: `IsFrobAt` is definable, not axiomatic.
27+
- [finding] Sharper distinction, and the headline result: the *definition* of arithmetic Frobenius transfers to the infinite level (`IsArithFrobAt A g Q` reads `g x - x ^ Nat.card (A ⧸ v) ∈ Q`, and `A/v` is finite), but the *existence theorem* `exists_of_isInvariant` does not — it requires `Finite (S ⧸ Q)`, and at `` the residue field is the algebraic closure of `A/v`, hence infinite. Existence therefore remains an axiom for genuine mathematical reasons, not for want of API.
28+
- [finding] `π₁^ét(X)` — absent. `Mathlib/CategoryTheory/Galois/` (Merten 2024) is a complete abstract Galois-category development, but the finite étale site of a scheme is not instantiated as one. Determined the slice's formulation.
29+
- [finding] `Matrix.charpoly_units_conj` exists, so conjugation-invariance of the characteristic polynomial is provable rather than assumed.
30+
- [finding] `Ideal.under_smul` and `Ideal.IsPrime.smul` both exist — guessed by name, correct first try.
31+
32+
### AI tool performance
33+
34+
- [AI] Aristotle — smoke test, single `sorry` (`1 + 1 = 2`) — succeeded — returned `by norm_num`, project compiled.
35+
- [AI] Aristotle — returning results — reported "The change is committed and pushed" when it had touched only its own server-side sandbox; the local working tree was unchanged. Results reach the caller only via `--destination <archive>` with `--wait`. Failure mode: sandbox-side actions narrated as if performed on the repo.
36+
- [AI] Claude — Mathlib survey from file listings and grep — partially wrong — produced a plausible but incorrect verdict on Frobenius by inferring from `arithFrobAt`'s signature without reading `IsArithFrobAt`'s. Corrected only by reading the source directly. Failure mode: confident generalisation from an adjacent declaration.
37+
- [AI] Claude — Lean syntax — wrong twice — attached docstrings (`/-- -/`) to `variable` and to `omit ... in`, neither of which is a declaration. Cost two build cycles. Compounding factor: Lean's parser reports this as `unexpected token; expected 'lemma'`, which points nowhere near the cause.
38+
- [AI] Claude — `Matrix.charpoly_units_conj` application — wrong first try — wrapped the argument in `Units.map`, causing a `(GL n R)ˣ` type mismatch; `GL n R` is already `(Matrix n n R)ˣ`.
39+
- [AI] Claude — elaboration cost — unanticipated — proving conjugation-invariance directly inside `Completion E lam` (a `UniformSpace.Completion`) hit the default heartbeat limit. Fixed by proving the lemma over an abstract `CommRing` and specialising.
40+
41+
### Status
42+
43+
Compiling: `AbsGal`, `CoeffPlace`, `Completion`, `LambdaAdicRep`, `IsCompatibleFamily`,
44+
`IsFrobeniusSystem`, the Lafforgue statement (`sorry`), plus two proved theorems —
45+
`charpoly_eq_of_isConj` and `isFrobAt_conj` — and `IsFrobAt` as a genuine definition.
46+
47+
Open: `IsCompatibleFamily` still takes an *arbitrary* `IsFrobAt` parameter rather than
48+
the concrete definition. Until that is wired up, the compatible-family definition is a
49+
faithful schema, not a statement about actual Frobenius elements.

README.md

Lines changed: 28 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,9 @@
11
# lambda_adic_slice
22

33
Statement-level formalisation of one definitional slice from arithmetic geometry.
4-
Statements only: every proof is `sorry`. The point is to locate which ingredients
5-
Mathlib v4.28.0 currently supports and which are missing.
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
6+
results are proved.
67

78
## The slice
89

@@ -22,20 +23,40 @@ Fix:
2223
2. for every such `v`, the characteristic polynomial of `ρ_λ(Frob_v)` has
2324
coefficients in `E` (via a fixed embedding `E ↪ E_λ`) and is independent of `λ`.
2425

25-
**Theorem (Deligne's conjecture for curves; L. Lafforgue).** Suppose `K` is a global
26+
**Theorem (Deligne's conjecture, proved by L. Lafforgue).** Suppose `K` is a global
2627
function field, i.e. the function field of a smooth projective curve over a finite
2728
field, and `ℓ(λ) ≠ char K`. Then every continuous `λ`-adic representation
2829
`ρ_λ : G_K → GL_n(E_λ)` unramified outside `S` is a member of a compatible family
2930
unramified outside `S`.
3031

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.
51+
3152
## Note on formulation
3253

3354
Stated via `G_K` with an unramified-outside-`S` condition rather than via
3455
`π₁^ét(X ∖ S)`. These agree for a smooth projective curve `X` with function field `K`,
35-
and the `G_K` formulation is the one Mathlib v4.28.0 can plausibly express: Galois
36-
categories and fibre functors exist abstractly (`Mathlib/CategoryTheory/Galois/`),
37-
but the finite étale site of a scheme is not instantiated as a Galois category, so
38-
there is no `π₁^ét(X)` available.
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.
3960

4061
## Future work (currently out of scope)
4162

0 commit comments

Comments
 (0)