Lean Kernel Arena

The Lean Kernel Arena presents, tests and benchmarks proof checkers for the Lean Theorem Prover.

Checkers

Checker Version πŸ‘ βœ‹ 🚫 ⏱️ 🧠
sokonanoda master (f1c4b12) 96/96 48/48 0 9.7β€―m 7.3β€―GB
still-nanoda cache-study-port (06a07b7) 96/96 48/48 0 16.1β€―m 5.2β€―GB
sonanoda master (48a11bc) 96/96 48/48 0 16.9β€―m 5.2β€―GB
nanoda master (f58f2f6) 96/96 48/48 0 23.5β€―m 7.9β€―GB
nanobruijn master (8fad812) 96/96 48/48 0 27.6β€―m 5.5β€―GB
official-nightly 2026-04-11 96/96 48/48 0 32.0β€―m 9.2β€―GB
official 4.29.0 96/96 47/47 1 32.8β€―m 9.1β€―GB
official-v4.28.0 4.28.0 96/96 47/47 1 42.0β€―m 9.3β€―GB
lean4lean - 93/94 44/44 6 - -
rpylean v2026.6.4 92/96 48/48 0 - -
mini master (d548ebc) 87/88 48/48 8 - -
always-decline 1.0 0/0 0/0 144 - -
always-reject 1.0 0/96 48/48 0 - -
parse-only v4.27.0-rc1 96/96 7/48 0 5.3β€―m 8.6β€―GB
always-accept 1.0 96/96 0/48 0 1β€―ms 2.8β€―MB

Tests

Name official sokonanoda still-nanoda sonanoda nanoda nanobruijn official-nightly official-v4.28.0 lean4lean rpylean Size
bogus1 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 11.4β€―KB
cedar 2.3β€―m -51% -43% -41% -51% -48% -3% +20% +79% βœ‹ 728.6β€―MB
constlevels πŸ’₯ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ πŸ’₯ 🚫 βœ‹ 15.3β€―KB
cslib 4.1β€―m -61% -50% -49% -53% -48% -3% +16% +123% βœ‹ 1.2β€―GB
init 1.2β€―m -59% -35% -32% -50% -50% -3% +28% πŸ’₯ +158% 309.5β€―MB
init-prelude πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.5β€―MB
large-elim-param βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ 3.1β€―KB
level-imax-leq βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ 5.6β€―KB
level-imax-normalization βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 5.8β€―KB
mathlib 32.8β€―m -70% -51% -48% -28% -16% -2% +28% βœ‹ βœ‹ 5.2β€―GB
nat-rec-rules βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ 8.2β€―KB
perf/app-lam 5.4β€―s -14% -14% -10% -10% -99% 0% 0% +1% -96% 1.2β€―MB
perf/grind-ring-5 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 9.7β€―MB
perf/shift-cascade 52β€―ms -84% -84% -84% -84% +262% -3% +12% +55% -83% 256.3β€―KB
proj-of-prop βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.9β€―KB
std 2.1β€―m -62% -43% -41% -53% -50% -3% +24% πŸ’₯ βœ‹ 526.1β€―MB
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_proofIrrelevanceBad βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 4.7β€―KB
tutorial/097_proofIrrelevanceWhnf πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.6β€―KB
tutorial/098_unitEta1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.2β€―KB
tutorial/099_unitEta2 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.0β€―KB
tutorial/100_unitEta3 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.0β€―KB
tutorial/101_structEta πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 12.5β€―KB
tutorial/102_funEta πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.2β€―KB
tutorial/103_funEtaDep πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.3β€―KB
tutorial/104_funEtaBad βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 4.9β€―KB
tutorial/105_etaRuleK βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 6.5β€―KB
tutorial/106_etaCtor βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 9.0β€―KB
tutorial/107_reflOccLeft βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.7β€―KB
tutorial/108_reflOccInIndex βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 4.0β€―KB
tutorial/109_reduceCtorParamRefl.mk πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/110_reduceCtorParamRefl2.mk πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/111_rTreeRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.5β€―KB
tutorial/112_rtreeRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 10.8β€―KB
tutorial/113_accRecType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.5β€―KB
tutorial/114_accRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 13.4β€―KB
tutorial/115_accRecNoEta βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 13.0β€―KB
tutorial/116_quotMkType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/117_quotIndType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/118_quotLiftType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/119_quotSoundType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.2β€―KB
tutorial/120_quotLiftReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.8β€―KB
tutorial/121_quotIndReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.6β€―KB
tutorial/122_dup_defs βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 479β€―B
tutorial/123_dup_ind_def βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/124_dup_ctor_def βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/125_dup_rec_def βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/126_dup_rec_def2 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/127_dup_ctor_rec βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.5β€―KB
tutorial/128_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 choose to explicitly decline to process certain tests (column 🚫). These tests are not taken into account for correctness scoring. Tests that crash the checker (πŸ’₯) also considered declined.

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 tests larger than 10 MB) is available for download: lean-arena-tests.tar.gz (91 good tests, 48 bad tests, 2.3β€―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.