Lean Kernel Arena

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.