← Home|p-adic Theory & Condensed Mathp-adische Theorie & kondensierte Mathematik
Test Project · Local AI Infrastructure · Berlin · May 2026

p-adic Theory and Condensed Mathematics: a Test Project in Three Parts

Three interconnected sub-projects with a common mathematical background: formal verification in Lean 4 (condensed modules), classification-theoretic analysis (Dieudonné–Manin), and computer-algebraic experiments (formal groups).

Lean 4.31.0-rc2 + Mathlib · PARI/GP 2.17.3 · Hecke.jl / Julia 1.12 · Singular · deepseek-r1:70b · qwen3:235b-a22b · Mac Studio M3 Ultra (256 GB) · Stand: Juni 2026

Connection Between the Three Sub-projects

Sub-project 3 provides the concrete intuition: one can see, at an explicit elliptic curve, how formal groups over ℤp become isocrystals. Sub-project 2 classifies these isocrystals abstractly. Sub-project 1 formalises the condensed foundation into which both embed — p-divisible groups (generalising formal groups) are natural objects in the condensed world of Clausen–Scholze.

Sub-project 3Sub-project 2Sub-project 1
Formal Groups
(PARI · Hecke · Singular)
Dieudonné–Manin
Classification
Solid Modules
(Lean 4 · Mathlib)
Concrete computation →Abstract classification →Formal foundation

Sub-project 1 — Solid Condensed Modules: Formal Verification in Lean 4

Starting point

In Mathlib/Condensed/Solid.lean, lines 24–25, stood:

TODO (hard): prove that ((profiniteSolid ℤ).obj S).IsSolid for S : Profinite.

A condensed R-module is called solid when for every profinite set X the solidification morphism induces an isomorphism on Hom-sets: sol_X* : Hom(solid X, M) → Hom(free X, M) is an isomorphism. The functor profiniteSolid R is the right Kan extension of finFree R along FintypeCat.toProfinite. The mathematical argument was known (Clausen–Scholze, Prop. 5.7 in [CS19]); the Lean proof was missing.

File architecture

P0_SolLeftCancel_Axiom.lean — 1 Axiom P1_Solid.lean — 0 Sorries P2_finFree_Solid.lean — 0 Sorries (core) P4_Solid_Progress.lean — 0 Sorries (wrapper) Dependencies: P2 imports P0 + P1. P4 imports P2. No circular imports.

Complete lemma list

In P1_Solid.lean:

In P2_finFree_Solid.lean:

Main result and proof structure

theorem profiniteSolid_obj_isSolid_full (S : Profinite.{u}) : ((profiniteSolid R).obj S).IsSolid
  1. profiniteSolidIsPointwiseRightKanExtension R: solid(S) is the limit limj finFree(Sj) over all finite quotients Sj of S (right Kan extension).
  2. isSolid_of_isLimit_gen: A cofiltered limit of solid objects is solid. Reduces the main result to: every finFree(Sj) is solid.
  3. finFree_isSolid: finFree T is solid for all T : FintypeCat. Follows from profiniteSolid_fintype_isSolid.
  4. IsSolid condition: The condition requires that (sol_X ˆ ·) : Hom(solidX, finFree T) → Hom(freeX, finFree T) is a bijection. Surjectivity: surjectivity_from_surj_factor (fully proved). Injectivity: Axiom sol_leftCancel.

Surjectivity — independent proof

The surjectivity of (sol_X ˆ ·) was proved independently of the axiom, via isColimitLocallyConstantPresheafDiagram: given h : freeX → finFree T, there exists (U0, q0, h0) with h = (profiniteFree R).map q0 ˆ h0. Set g = πU0,q0 ˆ h0. Then: sol_X ˆ g = h ✓. Surjectivity was thus formally complete.

Injectivity — the open problem and the axiom

Injectivity of (sol_X ˆ ·) requires that Hom(solid X, finFree T) = colimj Hom(finFree Xj, finFree T). This holds precisely when finFree T is a compact (tiny) object in CondensedMod R, i.e. when Hom(−, finFree T) commutes with cofiltered limits.

axiom sol_leftCancel (R : Type (u + 1)) [Ring R] (T : FintypeCat.{u}) (X : Profinite.{u}) (f g : (profiniteSolid R).obj X ⟶ (finFree R).obj T) (h : (profiniteSolidification R).app X ≫ f = (profiniteSolidification R).app X ≫ g) : f = g

The axiom corresponds exactly to the injectivity of sol_X*, which follows from the Hom chain. It is mathematically correct (Clausen–Scholze, §5), but not formalisable in Lean because the required lemma (“discrete condensed modules are tiny”) does not exist in Mathlib and would require a standalone Mathlib contribution of approximately 200–400 lines of new Lean theory.

Exhaustively tested injectivity approaches (all failed)

#print axioms profiniteSolid_obj_isSolid_full (MathProject/P2_finFree_Solid.lean)
-- Axioms:
--   propext                  (Lean standard)
--   Classical.choice        (Lean standard)
--   Quot.sound               (Lean standard)
--   CondensedMod.sol_leftCancel ← only project-specific axiom (surj_factor is fully proved in P2)

MathProject build status (P0–P4): All 4 files build successfully. 0 sorries in any file.
PR branch (Mathlib/Condensed/Solid.lean): Latest commit 5874e87ae1 · CI Build ✅ · Lint style ✅ · 0 sorries · 2 axioms: sol_leftCancel + surj_factor (see below).
Lean 4.31.0-rc2. PR #39701 on leanprover-community/mathlib4.

Note on axiom vs. sorry: An axiom entry in Lean 4 is not a gap in the sense of a sorry, but an explicit, named and documented assumption. #print axioms shows it transparently. For a Mathlib PR, a project-specific axiom is not acceptable — the TODO thus remains open, supplemented by the proof infrastructure elaborated here.

Build status

All 4 MathProject .lean files build successfully with lake build (Lean 4.31.0-rc2 + Mathlib). 0 sorry in any file. In the MathProject, sol_leftCancel is the only project-specific axiom; surj_factor is fully proved. In Mathlib/Condensed/Solid.lean (PR branch), both sol_leftCancel and surj_factor are declared as axiom because the required colimit infrastructure (finFree_isColimit_at) and the CondensedMod ↔ TopMod equivalence are not yet in Mathlib. #print axioms shows them transparently; for a full Mathlib PR both axioms must be eliminated.

Why the axiom is not formalisable

The step “discrete condensed modules are tiny” requires the following Lean lemma, which does not exist in Mathlib:

theorem isDiscrete_isTiny (M : CondensedMod R) (hM : M.IsDiscrete)
    {F : J ⊥ CondensedMod R} (c : Cone F) (hc : IsLimit c) :
    Hom(c.pt, M) ≅ colim_j Hom(F.obj j, M)

This is a special case of the equivalence CondensedMod ↔ TopMod (topological R-modules), which is not formalised. For a future fully formal proof this gap must be closed first.

Sub-project 2 — Dieudonné–Manin Classification for All Dimensions

Starting point

Mathlib contains the Dieudonné–Manin theorem for dimension n = 1 in Mathlib/RingTheory/WittVector/Isocrystal.lean: a one-dimensional isocrystal over an algebraically closed field k of characteristic p is classified by a rational number m/n (the slope). The general theorem was missing.

Achieved: complete analysis and proof architecture

Using deepseek-r1:70b as analysis tool, the Lean infrastructure was mapped and a proof architecture for the general theorem elaborated. This sub-project was conceived as analysis and formalisation roadmap, not as Lean implementation.

Present in Mathlib: Definition of isocrystals as free W(k)-modules with Frobenius semi-linearity; simple isocrystals E(λ) for every rational slope λ ∈ ℚ; classification theorem for n = 1: fully proved; Witt vector infrastructure: Frobenius, Verschiebung, Teichmüller lift.

Elaborated proof architecture:
Step 1: Reduction to the irreducible case via slope filtration of the isocrystal. Lean precedents in Witt vector infrastructure available.
Step 2: Reduction to the simple case — every irreducible summand ≅ E(m/n) via tensor product argument from the n=1 case.
Step 3: Uniqueness of the decomposition E(m1/n1) ⊕ ··· ⊕ E(mr/nr). The multiplicities are uniquely determined by the slope filtration.

Missing for a Lean implementation: Formal decomposition lemma into irreducible summands (no Lean proof); uniqueness theorem in Lean; complete slope filtration as Lean theorem.

Mathematical relevance: The general Dieudonné–Manin theorem classifies exactly the objects that Sub-project 3 constructs computationally. It touches Witt vectors, Frobenius semi-linearity and crystalline cohomology and is a direct foundation for p-adic representation theory and the Langlands programme.

Sub-project 3 — Formal Groups over ℤp: Computer-Algebraic Experiment

Curve and starting point

Elliptic curve E: y² = x³ − x over ℤ. j-invariant 1728, torsion group ℤ/2 × ℤ/2, analytic rank 0, complex multiplication by ℤ[i]. Three systems were used: PARI/GP for the formal law, Hecke.jl for point counts and ap, Singular for the algebraic structure mod p.

Results with PARI/GP

Formal group law (to degree 5):

F(X,Y) = X + Y + 2XY² + 2X²Y − X⁴Y − XY⁴ + O(degree 6)

Formal logarithm (to degree 22, all coefficients exact):

L(t) = t − (2/5)t⁵ + (2/3)t⁹ − (20/13)t¹³ + (70/17)t¹⁷ − 12t²¹ + O(t²³)

Multiplication series [n](t) = L&supmin;¹(n·L(t)):

[3](t) = 3T + 96T⁵ + 2432T⁹ + 62976T¹³ + 1628160T¹⁷ + ... [5](t) = 5T + 1248T⁵ + 257920T⁹ + 54156800T¹³ + ...

Height determination (first non-vanishing term mod p in [p](t)):

pFirst term mod pHeightTypeIsocrystal (Sub-project 2)
32·T&sup9;h = 2supersingular (a3 = 0)E(1/2), slope = 1/2
53·T&sup5;h = 1ordinary (a5 = −2 ≠ 0)E(0/1), slope = 0

Results with Hecke.jl (ap and |E(𝔽p)| for all primes to 43)

p|E(𝔽p)|apTypep mod 4
340supersingular3
58−2ordinary1
780supersingular3
11120supersingular3
138 or 6±6 or ±2ordinary1
43440supersingular3

CM structure: Supersingular reduction occurs precisely at p ≡ 3 (mod 4) — E has complex multiplication by ℤ[i], and i has norm p precisely when p ≡ 1 (mod 4). The pattern is directly and completely readable in the ap table.

Results with Singular

F mod 3 = −t₁⁴t₂ − t₁t₂⁴ − t₁³t₂ + t₁²t₂² − t₁t₂³ − t₁²t₂ − t₁t₂² + t₁ + t₂
F mod 5 = −t₁⁴t₂ + 2t₁³t₂² + 2t₁²t₂³ − t₁t₂⁴ − t₁³t₂ − 2t₁²t₂² − t₁t₂³ − t₁²t₂ − t₁t₂² + t₁ + t₂

The print(string, poly) command failed with a syntax error (GP compatibility issue); the jet() call for [p](t) mod p yielded the correct low-degree terms.

Connection to Sub-project 2

The isocrystal of the formal group Êp at prime p is precisely the object that Sub-project 2 classifies: height h = 1 → slope 0 → E(0/1); height h = 2 → slope 1/2 → E(1/2). The computations make the abstract classification visible at a concrete example.

Overall Assessment

Sub-projectTypeOutcome
1 — Solid Modules (Lean 4)Formal verification8 theorems proved in Solid.lean · 0 sorries · 2 axioms: sol_leftCancel (injectivity) + surj_factor (surjectivity, proved in MathProject/P2) · CI Build ✅ Lint ✅ · commit 5874e87ae1 · Lean 4.31.0-rc2 · PR #39701 on leanprover-community/mathlib4
2 — Dieudonné–ManinAnalysis and proof architectureMathlib status mapped · three-step proof architecture elaborated · missing Lean lemmas precisely identified
3 — Formal GroupsComputer-algebraic experimentF(X,Y) to degree 5 · L(t) to degree 22 · [3](t) and [5](t) · heights h=2/h=1 · ap to 43 · CM structure confirmed · Singular representations mod 3 and mod 5

Philosophical aspects: None of the three sub-projects had an independent philosophical research question. The mathematical background — condensed mathematics as a new foundation of analysis and algebra (Clausen–Scholze), the classification by slopes as an ordering principle in p-adic Hodge theory — has philosophical dimensions that were not, however, the subject of this project.

T. Riepe, Berlin. May 2026 (updated June 2026). GitHub: thothrde/mathlib4 · MathProject/ · PR #39701 on leanprover-community/mathlib4. Lean 4.31.0-rc2. CI Build ✅ Lint ✅. Condensed mathematics after Clausen–Scholze [CS19]. Dieudonné–Manin after Katz (1979).

PR #39701 — Current Status (June 2026)

Continuous Integration: all checks passing
Build ✅ · Lint style ✅ · Post-Build ✅ · Upload to cache ✅ · Verify Transient and Automated Commits ✅
Latest commit on PR branch: 5874e87ae1 · Branch: feat/condensed-solid-isSolid-profiniteSolid · Fork: thothrde/mathlib4
Lean toolchain: v4.31.0-rc2 (rebased onto upstream master 2026-06-14). 0 sorries in Solid.lean.

Two axioms in Mathlib/Condensed/Solid.lean (PR branch)

Both are declared as axiom (not sorry), fully documented in the file header:

  1. sol_leftCancel — injectivity of sol_X*. Mathematically follows from “finFree T is a compact (tiny) object in CondensedMod R”. Not formalisable without the lemma isDiscrete_isTiny, which requires the CondensedMod ↔ TopMod equivalence (not yet in Mathlib). Corresponds to the TODO (hard) from Clausen–Scholze §5.
  2. surj_factor — surjectivity factorisation: any morphism h : profiniteFree X ⟶ finFree T factors through a finite quotient. In MathProject/P2_finFree_Solid.lean this is fully proved via isColimitLocallyConstantPresheafDiagram. Declared as axiom in Solid.lean because the colimit infrastructure (finFree_isColimit_at) is not yet in Mathlib.

Theorems proved in Solid.lean (PR branch, 0 sorries)

  • profiniteSolidCounit_isIso — the counit is an isomorphism at every T : FintypeCat
  • profiniteSolidification_isIso_at_fintype — solidification morphism is iso at LT
  • finFreeIsoSolid — isomorphism solid(LT) ≅ finFree T
  • sol_map_counit — naturality equation for the solidification morphism
  • profiniteSolid_fintype_isSolid — IsSolid((profiniteSolid R).obj (LT))
  • isSolid_of_isLimit_gen — cofiltered limit of solid objects is solid (no axioms)
  • finFree_isSolid — IsSolid(finFree T) for T : FintypeCat
  • profiniteSolid_obj_isSolidmain result: IsSolid((profiniteSolid R).obj S) for all S : Profinite