Lean Kernel Arena

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

Checkers

Checker Version πŸ‘ βœ‹ 🚫 ⏱️ 🧠
nanoda master (f58f2f6) 100/100 43/43 9 22.6β€―m 8.0β€―GB
nanobruijn master (5a42fcc) 102/102 50/50 0 26.6β€―m 5.5β€―GB
official-nightly 2026-04-11 102/102 50/50 0 31.7β€―m 9.2β€―GB
official 4.29.0 102/102 49/49 1 32.5β€―m 9.1β€―GB
official-v4.28.0 4.28.0 102/102 49/49 1 41.6β€―m 9.3β€―GB
lean4lean - 102/102 49/49 1 1.6β€―h 10.4β€―GB
mini master (ad8ebe0) 94/94 50/50 8 - -
vow-lean-kernel 0.1.0 95/95 49/49 8 - -
evmlean 0.1.0 93/93 50/50 9 - -
always-decline 1.0 0/0 0/0 152 - -
sokonanoda master (d245a52) 101/102 50/50 0 8.6β€―m 8.3β€―GB
rpylean v2026.7.4 101/102 50/50 0 - -
still-nanoda cache-study-port (06a07b7) 100/102 50/50 0 15.7β€―m 5.2β€―GB
always-reject 1.0 0/102 50/50 0 - -
parse-only v4.27.0-rc1 102/102 6/50 0 5.2β€―m 8.6β€―GB
always-accept 1.0 102/102 0/50 0 1β€―ms 2.9β€―MB

Tests

Name official nanoda nanobruijn official-nightly official-v4.28.0 lean4lean vow-lean-kernel evmlean sokonanoda rpylean still-nanoda Size
bogus1 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 11.4β€―KB
cedar 2.6β€―m -53% -51% -3% +20% +58% πŸ’₯ 🚫 βœ‹ +80% -45% 790.9β€―MB
constlevels πŸ’₯ βœ‹ βœ‹ βœ‹ πŸ’₯ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 15.3β€―KB
cslib 4.6β€―m -55% -51% -3% +16% +110% πŸ’₯ 🚫 -64% +823% -51% 1.3β€―GB
init 1.2β€―m -52% -51% -3% +28% +39% πŸ’₯ 🚫 -63% +119% -36% 309.5β€―MB
init-prelude πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 🚫 πŸ‘ πŸ‘ πŸ‘ 3.5β€―MB
k-rec-conv βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 13.0β€―KB
large-elim-param βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.1β€―KB
level-imax-leq βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 5.6β€―KB
level-imax-normalization βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 5.8β€―KB
level-index-out-of-order πŸ‘ 🚫 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ βœ‹ 328β€―B
mathlib 32.5β€―m -30% -18% -3% +28% +193% πŸ’₯ 🚫 -73% βœ‹ -52% 5.2β€―GB
nat-rec-rules βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 8.1β€―KB
perf/app-lam 5.4β€―s -14% -99% 0% 0% +1% πŸ’₯ 🚫 -23% -97% -14% 1.2β€―MB
perf/grind-ring-5 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ’₯ 🚫 πŸ‘ πŸ‘ πŸ‘ 9.7β€―MB
perf/shift-cascade 52β€―ms -85% +244% -3% +12% +53% +520% 🚫 -85% -84% -85% 256.3β€―KB
proj-of-prop βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ 3.9β€―KB
sparse-name-index πŸ‘ 🚫 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ βœ‹ 292β€―B
std 2.1β€―m -54% -51% -3% +23% +39% πŸ’₯ 🚫 -65% +1683% -44% 526.1β€―MB
tutorial/001_basicDef πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 367β€―B
tutorial/002_badDef βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 365β€―B
tutorial/003_arrowType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 622β€―B
tutorial/004_dependentType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 460β€―B
tutorial/005_constType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 897β€―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 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 424β€―B
tutorial/012_levelComp1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 391β€―B
tutorial/013_levelComp2 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 409β€―B
tutorial/014_levelComp3 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 427β€―B
tutorial/015_levelParams πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.4β€―KB
tutorial/016_tut06_bad01 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 427β€―B
tutorial/017_levelComp4 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 424β€―B
tutorial/018_levelComp5 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 424β€―B
tutorial/019_imax1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 809β€―B
tutorial/020_imax2 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 828β€―B
tutorial/021_levelMaxComm πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 524β€―B
tutorial/022_levelMaxAssoc πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 623β€―B
tutorial/023_levelMaxIdem πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 447β€―B
tutorial/024_levelMaxAbsorb πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 526β€―B
tutorial/025_inferVar πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 713β€―B
tutorial/026_defEqLambda πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.4β€―KB
tutorial/027_peano1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.6β€―KB
tutorial/028_peano2 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/029_peano3 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.9β€―KB
tutorial/030_letType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 489β€―B
tutorial/031_letTypeDep πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.2β€―KB
tutorial/032_letRed πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 627β€―B
tutorial/033_empty πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.2β€―KB
tutorial/034_boolType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.3β€―KB
tutorial/035_twoBool πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.2β€―KB
tutorial/036_andType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.2β€―KB
tutorial/037_prodType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.8β€―KB
tutorial/038_pprodType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.8β€―KB
tutorial/039_pUnitType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.8β€―KB
tutorial/040_eqType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.2β€―KB
tutorial/041_natDef πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.3β€―KB
tutorial/042_rbTreeDef πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 15.7β€―KB
tutorial/043_inductBadNonSort βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.2β€―KB
tutorial/044_inductBadNonSort2 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 598β€―B
tutorial/045_inductLevelParam βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 515β€―B
tutorial/046_inductTooFewParams βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 548β€―B
tutorial/047_inductWrongCtorParams βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.2β€―KB
tutorial/048_inductWrongCtorResParams βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.3β€―KB
tutorial/049_inductWrongCtorResLevel βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.4β€―KB
tutorial/050_inductInIndex βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.1β€―KB
tutorial/051_indNeg βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 996β€―B
tutorial/052_reduceCtorParam.mk πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.1β€―KB
tutorial/053_reduceCtorType.mk βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.5β€―KB
tutorial/054_indNegReducible βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.9β€―KB
tutorial/055_predWithTypeField πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.0β€―KB
tutorial/056_typeWithTypeField πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.1β€―KB
tutorial/057_typeWithTypeFieldPoly πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.1β€―KB
tutorial/058_typeWithTooHighTypeField.mk βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 943β€―B
tutorial/059_emptyRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 1.2β€―KB
tutorial/060_boolRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.0β€―KB
tutorial/061_twoBoolRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.8β€―KB
tutorial/062_andRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.2β€―KB
tutorial/063_prodRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.0β€―KB
tutorial/064_pprodRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.0β€―KB
tutorial/065_punitRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.2β€―KB
tutorial/066_eqRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.3β€―KB
tutorial/067_nRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.3β€―KB
tutorial/068_rbTreeRef πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 16.2β€―KB
tutorial/069_boolPropRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 2.3β€―KB
tutorial/070_existsRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.6β€―KB
tutorial/071_sortElimPropRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.6β€―KB
tutorial/072_sortElimProp2Rec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.6β€―KB
tutorial/073_boolRecEqns πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 10.8β€―KB
tutorial/074_prodRecEqns πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 10.1β€―KB
tutorial/075_nRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 12.7β€―KB
tutorial/076_listRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 17.5β€―KB
tutorial/077_RBTree.id_spec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 47.9β€―KB
tutorial/078_And.right πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.3β€―KB
tutorial/079_Prod.snd πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/080_PProd.snd πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/081_PSigma.snd πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.1β€―KB
tutorial/082_projOutOfRange βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.8β€―KB
tutorial/083_projNotStruct βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.5β€―KB
tutorial/084_projProp1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 8.2β€―KB
tutorial/085_projProp2 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 8.2β€―KB
tutorial/086_projProp3 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 8.2β€―KB
tutorial/087_projProp4 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 8.2β€―KB
tutorial/088_projProp5 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 8.4β€―KB
tutorial/089_projProp6 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 8.2β€―KB
tutorial/090_projDataIndexRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.8β€―KB
tutorial/091_projIndexData βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 6.8β€―KB
tutorial/092_projIndexData2 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 6.8β€―KB
tutorial/093_projRed πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 9.9β€―KB
tutorial/094_ruleK πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.5β€―KB
tutorial/095_ruleKbad βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 6.5β€―KB
tutorial/096_ruleKAcc βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 12.8β€―KB
tutorial/097_aNatLit πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.0β€―KB
tutorial/098_natLitEq πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.1β€―KB
tutorial/099_proofIrrelevance πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.0β€―KB
tutorial/100_proofIrrelevanceBad βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 4.7β€―KB
tutorial/101_proofIrrelevanceWhnf πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.6β€―KB
tutorial/102_unitEta1 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.2β€―KB
tutorial/103_unitEta2 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.9β€―KB
tutorial/104_unitEta3 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.0β€―KB
tutorial/105_structEta πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 12.5β€―KB
tutorial/106_funEta πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.2β€―KB
tutorial/107_funEtaDep πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.3β€―KB
tutorial/108_funEtaBad βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 4.9β€―KB
tutorial/109_etaRuleK βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 6.5β€―KB
tutorial/110_etaCtor βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 9.0β€―KB
tutorial/111_reflOccLeft βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.7β€―KB
tutorial/112_reflOccInIndex βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.9β€―KB
tutorial/113_reduceCtorParamRefl.mk πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/114_reduceCtorParamRefl2.mk πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 4.5β€―KB
tutorial/115_rTreeRec πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 5.5β€―KB
tutorial/116_rtreeRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 10.8β€―KB
tutorial/117_accRecType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.5β€―KB
tutorial/118_accRecReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 13.4β€―KB
tutorial/119_accRecNoEta βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 13.0β€―KB
tutorial/120_quotMkType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/121_quotIndType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/122_quotLiftType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 6.3β€―KB
tutorial/123_quotSoundType πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.2β€―KB
tutorial/124_quotLiftReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.8β€―KB
tutorial/125_quotIndReduction πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 7.6β€―KB
tutorial/126_dup_defs βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 475β€―B
tutorial/127_dup_ind_def βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/128_dup_ctor_def βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/129_dup_rec_def βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/130_misnamed_rec_user βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 2.0β€―KB
tutorial/131_dup_rec_def2 βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.7β€―KB
tutorial/132_dup_ctor_rec βœ‹ 🚫 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 1.5β€―KB
tutorial/133_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 (97 good tests, 50 bad tests, 2.4β€―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.