The Lean Kernel Arena presents, tests and benchmarks proof checkers for the Lean Theorem Prover.
Checkers
| Checker | Version | π | β | π« | β±οΈ | π§ |
|---|---|---|---|---|---|---|
| nanoda | master (65db01f) | 94/94 | 42/42 | 0 | 24.1β―m | 8.4β―GB |
| lean4lean | - | 90/90 | 40/40 | 6 | 1.9β―h | 11.9β―GB |
| mini | master (9deb6c1) | 86/86 | 42/42 | 8 | - | - |
| always-decline | 1.0 | 0/0 | 0/0 | 136 | - | - |
| always-reject | 1.0 | 0/94 | 42/42 | 0 | - | - |
| official-nightly | 2026-02-01 | 94/94 | 41/42 | 0 | 30.7β―m | 8.6β―GB |
| official | 4.28.0-rc1 | 94/94 | 41/42 | 0 | 39.6β―m | 9.1β―GB |
| lean-pr-10565 | 2026-01-10 | 94/94 | 41/42 | 0 | 40.0β―m | 9.5β―GB |
| rpylean | v2026.2.12 | 80/94 | 25/42 | 0 | - | - |
| parse-only | v4.27.0-rc1 | 94/94 | 6/42 | 0 | 4.9β―m | 8.1β―GB |
| always-accept | 1.0 | 94/94 | 0/42 | 0 | 1β―ms | 2.8β―MB |
Tests
| Name | Size | official | nanoda | lean4lean | official-nightly | lean-pr-10565 | rpylean |
|---|---|---|---|---|---|---|---|
| bogus1 | 11.4β―KB | β | β | π« | β | β | β |
| cedar | 728.6β―MB | 2.8β―m | -53% | +49% | -16% | -1% | β |
| constlevels | 15.3β―KB | π₯ | β | π« | π₯ | π₯ | β |
| cslib | 1.2β―GB | 4.8β―m | -53% | +92% | -13% | 0% | β |
| grind-ring-5 | 9.7β―MB | π | π | π« | π | π | β |
| init | 307.1β―MB | 1.6β―m | -55% | π« | -22% | -2% | β |
| init-prelude | 3.5β―MB | π | π | π« | π | π | β |
| mathlib | 4.9β―GB | 39.6β―m | -39% | +188% | -23% | +1% | β |
| mlir | 28.8β―MB | 5.6β―s | -59% | +25% | -10% | 0% | β |
| std | 522.7β―MB | 2.5β―m | -56% | π« | -19% | -2% | β |
| tutorial/001_basicDef | 371β―B | π | π | π | π | π | π |
| tutorial/002_badDef | 369β―B | β | β | β | β | β | β |
| tutorial/003_arrowType | 626β―B | π | π | π | π | π | π |
| tutorial/004_dependentType | 464β―B | π | π | π | π | π | π |
| tutorial/005_constType | 901β―B | π | π | π | π | π | π |
| tutorial/006_betaReduction | 1.3β―KB | π | π | π | π | π | π |
| tutorial/007_betaReduction2 | 1.4β―KB | π | π | π | π | π | π |
| tutorial/008_forallSortWhnf | 1.2β―KB | π | π | π | π | π | π |
| tutorial/009_forallSortBad | 1.2β―KB | β | β | β | β | β | β |
| tutorial/010_nonTypeType | 1.1β―KB | β | β | β | β | β | β |
| tutorial/011_nonPropThm | 428β―B | β | β | β | β | β | π |
| tutorial/012_levelComp1 | 395β―B | π | π | π | π | π | π |
| tutorial/013_levelComp2 | 413β―B | π | π | π | π | π | π |
| tutorial/014_levelComp3 | 431β―B | π | π | π | π | π | π |
| tutorial/015_levelParams | 1.4β―KB | π | π | π | π | π | π |
| tutorial/016_tut06_bad01 | 431β―B | β | β | β | β | β | β |
| tutorial/017_levelComp4 | 428β―B | π | π | π | π | π | π |
| tutorial/018_levelComp5 | 428β―B | π | π | π | π | π | π |
| tutorial/019_imax1 | 813β―B | π | π | π | π | π | π |
| tutorial/020_imax2 | 832β―B | π | π | π | π | π | π |
| tutorial/021_inferVar | 717β―B | π | π | π | π | π | π |
| tutorial/022_defEqLambda | 1.4β―KB | π | π | π | π | π | π |
| tutorial/023_peano1 | 3.6β―KB | π | π | π | π | π | π |
| tutorial/024_peano2 | 4.5β―KB | π | π | π | π | π | π |
| tutorial/025_peano3 | 4.9β―KB | π | π | π | π | π | π |
| tutorial/026_letType | 493β―B | π | π | π | π | π | π |
| tutorial/027_letTypeDep | 1.2β―KB | π | π | π | π | π | π |
| tutorial/028_letRed | 631β―B | π | π | π | π | π | π |
| tutorial/029_empty | 1.2β―KB | π | π | π | π | π | π |
| tutorial/030_boolType | 2.3β―KB | π | π | π | π | π | π |
| tutorial/031_twoBool | 4.2β―KB | π | π | π | π | π | π |
| tutorial/032_andType | 3.2β―KB | π | π | π | π | π | π |
| tutorial/033_prodType | 3.8β―KB | π | π | π | π | π | π |
| tutorial/034_pprodType | 3.8β―KB | π | π | π | π | π | π |
| tutorial/035_pUnitType | 1.8β―KB | π | π | π | π | π | π |
| tutorial/036_eqType | 3.2β―KB | π | π | π | π | π | π |
| tutorial/037_natDef | 3.3β―KB | π | π | π | π | π | π |
| tutorial/038_rbTreeDef | 15.7β―KB | π | π | π | π | π | π |
| tutorial/039_inductBadNonSort | 1.2β―KB | β | β | β | β | β | β |
| tutorial/040_inductBadNonSort2 | 602β―B | β | β | β | β | β | π |
| tutorial/041_inductLevelParam | 519β―B | β | β | β | β | β | β |
| tutorial/042_inductTooFewParams | 552β―B | β | β | β | β | β | π |
| tutorial/043_inductWrongCtorParams | 1.2β―KB | β | β | β | β | β | π |
| tutorial/044_inductWrongCtorResParams | 1.3β―KB | β | β | β | β | β | π |
| tutorial/045_inductWrongCtorResLevel | 1.4β―KB | β | β | β | β | β | π |
| tutorial/046_inductInIndex | 1.1β―KB | β | β | β | β | β | π |
| tutorial/047_indNeg | 1000β―B | β | β | β | β | β | π |
| tutorial/048_reduceCtorParam.mk | 4.1β―KB | π | π | π | π | π | π |
| tutorial/049_reduceCtorType.mk | 1.5β―KB | β | β | β | β | β | π |
| tutorial/050_indNegReducible | 1.9β―KB | β | β | β | β | β | π |
| tutorial/051_predWithTypeField | 2.0β―KB | π | π | π | π | π | π |
| tutorial/052_typeWithTypeField | 2.1β―KB | π | π | π | π | π | π |
| tutorial/053_typeWithTypeFieldPoly | 2.1β―KB | π | π | π | π | π | π |
| tutorial/054_typeWithTooHighTypeField.mk | 947β―B | β | β | β | β | β | π |
| tutorial/055_emptyRec | 1.2β―KB | π | π | π | π | π | π |
| tutorial/056_boolRec | 3.0β―KB | π | π | π | π | π | π |
| tutorial/057_twoBoolRec | 4.8β―KB | π | π | π | π | π | π |
| tutorial/058_andRec | 3.2β―KB | π | π | π | π | π | π |
| tutorial/059_prodRec | 4.0β―KB | π | π | π | π | π | π |
| tutorial/060_pprodRec | 4.0β―KB | π | π | π | π | π | π |
| tutorial/061_punitRec | 2.2β―KB | π | π | π | π | π | π |
| tutorial/062_eqRec | 3.3β―KB | π | π | π | π | π | π |
| tutorial/063_nRec | 3.3β―KB | π | π | π | π | π | π |
| tutorial/064_rbTreeRef | 16.2β―KB | π | π | π | π | π | π |
| tutorial/065_boolPropRec | 2.3β―KB | π | π | π | π | π | π |
| tutorial/066_existsRec | 3.6β―KB | π | π | π | π | π | π |
| tutorial/067_sortElimPropRec | 5.6β―KB | π | π | π | π | π | π |
| tutorial/068_sortElimProp2Rec | 6.6β―KB | π | π | π | π | π | π |
| tutorial/069_boolRecEqns | 10.8β―KB | π | π | π | π | π | π |
| tutorial/070_prodRecEqns | 10.1β―KB | π | π | π | π | π | π |
| tutorial/071_nRecReduction | 12.7β―KB | π | π | π | π | π | π |
| tutorial/072_listRecReduction | 17.5β―KB | π | π | π | π | π | π |
| tutorial/073_RBTree.id_spec | 47.9β―KB | π | π | π | π | π | π |
| tutorial/074_And.right | 4.3β―KB | π | π | π | π | π | π |
| tutorial/075_Prod.snd | 4.5β―KB | π | π | π | π | π | π |
| tutorial/076_PProd.snd | 4.5β―KB | π | π | π | π | π | π |
| tutorial/077_PSigma.snd | 5.1β―KB | π | π | π | π | π | π |
| tutorial/078_projOutOfRange | 3.8β―KB | β | β | β | β | β | β |
| tutorial/079_projNotStruct | 3.5β―KB | β | β | β | β | β | β |
| tutorial/080_projProp1 | 8.2β―KB | π | π | π | π | π | π |
| tutorial/081_projProp2 | 8.2β―KB | β | β | β | β | β | π |
| tutorial/082_projProp3 | 8.2β―KB | π | π | π | π | π | π |
| tutorial/083_projProp4 | 8.2β―KB | β | β | β | β | β | π |
| tutorial/084_projProp5 | 8.4β―KB | β | β | β | β | β | π |
| tutorial/085_projProp6 | 8.2β―KB | β | β | β | β | β | π |
| tutorial/086_projDataIndexRec | 6.8β―KB | π | π | π | π | π | π |
| tutorial/087_projIndexData | 6.8β―KB | β | β | β | β | β | β |
| tutorial/088_projIndexData2 | 6.8β―KB | β | β | β | β | β | β |
| tutorial/089_projRed | 9.9β―KB | π | π | π | π | π | π |
| tutorial/090_ruleK | 6.5β―KB | π | π | π | π | π | π |
| tutorial/091_ruleKbad | 6.5β―KB | β | β | β | β | β | β |
| tutorial/092_ruleKAcc | 12.8β―KB | β | β | β | β | β | β |
| tutorial/093_aNatLit | 3.0β―KB | π | π | π | π | π | π |
| tutorial/094_natLitEq | 6.1β―KB | π | π | π | π | π | π |
| tutorial/095_proofIrrelevance | 5.0β―KB | π | π | π | π | π | β |
| tutorial/096_unitEta1 | 6.2β―KB | π | π | π | π | π | β |
| tutorial/097_unitEta2 | 6.0β―KB | π | π | π | π | π | β |
| tutorial/098_unitEta3 | 6.0β―KB | π | π | π | π | π | β |
| tutorial/099_structEta | 12.5β―KB | π | π | π | π | π | π |
| tutorial/100_funEta | 5.2β―KB | π | π | π | π | π | π |
| tutorial/101_funEtaDep | 5.3β―KB | π | π | π | π | π | π |
| tutorial/102_funEtaBad | 4.9β―KB | β | β | β | β | β | β |
| tutorial/103_etaRuleK | 6.5β―KB | β | β | β | β | β | β |
| tutorial/104_etaCtor | 9.0β―KB | β | β | β | β | β | β |
| tutorial/105_reflOccLeft | 3.7β―KB | β | β | β | β | β | π |
| tutorial/106_reflOccInIndex | 4.0β―KB | β | β | β | β | β | π |
| tutorial/107_reduceCtorParamRefl.mk | 4.5β―KB | π | π | π | π | π | π |
| tutorial/108_reduceCtorParamRefl2.mk | 4.5β―KB | π | π | π | π | π | π |
| tutorial/109_rTreeRec | 5.5β―KB | π | π | π | π | π | π |
| tutorial/110_rtreeRecReduction | 10.8β―KB | π | π | π | π | π | π |
| tutorial/111_accRecType | 7.5β―KB | π | π | π | π | π | π |
| tutorial/112_accRecReduction | 13.4β―KB | π | π | π | π | π | π |
| tutorial/113_accRecNoEta | 13.0β―KB | β | β | β | β | β | β |
| tutorial/114_quotMkType | 6.3β―KB | π | π | π | π | π | π |
| tutorial/115_quotIndType | 6.3β―KB | π | π | π | π | π | π |
| tutorial/116_quotLiftType | 6.3β―KB | π | π | π | π | π | π |
| tutorial/117_quotSoundType | 7.2β―KB | π | π | π | π | π | π |
| tutorial/118_quotLiftReduction | 7.8β―KB | π | π | π | π | π | β |
| tutorial/119_quotIndReduction | 7.6β―KB | π | π | π | π | π | β |
| tutorial/120_dup_defs | 479β―B | β | β | β | β | β | β |
| tutorial/121_dup_ind_def | 1.7β―KB | β | β | β | β | β | β |
| tutorial/122_dup_ctor_def | 1.7β―KB | β | β | β | β | β | β |
| tutorial/123_dup_rec_def | 1.7β―KB | β | β | β | β | β | β |
| tutorial/124_dup_rec_def2 | 1.7β―KB | β | β | β | β | β | β |
| tutorial/125_dup_ctor_rec | 1.5β―KB | β | β | β | β | β | β |
| tutorial/126_DupConCon | 2.2β―KB | β | β | β | β | β | β |
Details
The data above is generated by running each checker on a suite of test inputs. Test inputs are either valid proofs that should be accepted (column π), or invalid proofs that should be rejected (column β). The checkers are scored based on their ability to correctly accept and reject these tests.
The time and space measurements refer to the mathlib test case, the largest correct test in the suite. The β±οΈ column shows virtual CPU time, calculated from instruction counts using a fixed rate of 6.0β―Ginstr/s. This provides consistent performance comparison across different hardware, though it does not reflect parallel processing capabilities that some checkers may use.
Checkers that do not implement all features may decline to process certain tests (column π«). These tests are not taken into account for correctness scoring.
For more details on the interface for external checks, and how to submit these, see the project's README.md file.
A tarball of the test suite (excluding large tests) is available for download: lean-arena-tests.tar.gz (88 good tests, 42 bad tests, 2.1β―MB). The tarball contains subdirectories good/ and bad/ based on expected results, making it easy to test your own checker implementation.
The test suite includes a set of tutorial test cases that exercise individual features of the Lean type system step by step, from basic definitions through inductives, recursors, projections, definitional equality rules, and quotient types. Each tutorial test is a small self-contained environment, making them a useful starting point for developing and debugging a new kernel checker.
We are interested in extending our test suite, in particular tests that should be rejected are a useful help for authors of new kernel checkers.