Lean Kernel Arena

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

Checkers

Checker Version πŸ‘ βœ‹ 🚫 ⏱️ 🧠
still-nanoda cache-study-port (06a07b7) 96/96 46/46 0 16.1β€―m 5.2β€―GB
sonanoda master (48a11bc) 96/96 46/46 0 16.9β€―m 5.2β€―GB
nanoda master (8d68231) 96/96 46/46 0 23.4β€―m 7.9β€―GB
nanobruijn master (8fad812) 96/96 46/46 0 27.6β€―m 5.5β€―GB
official-nightly 2026-04-11 96/96 46/46 0 31.9β€―m 9.2β€―GB
official 4.29.0 96/96 45/45 1 32.8β€―m 9.1β€―GB
official-v4.28.0 4.28.0 96/96 45/45 1 42.0β€―m 9.3β€―GB
lean4lean - 93/94 43/43 5 - -
rpylean v2026.5.5 89/96 46/46 0 - -
mini master (9deb6c1) 87/87 46/46 9 - -
always-decline 1.0 0/0 0/0 142 - -
always-reject 1.0 0/96 46/46 0 - -
parse-only v4.27.0-rc1 96/96 6/46 0 5.3β€―m 8.6β€―GB
always-accept 1.0 96/96 0/46 0 1β€―ms 2.8β€―MB

Tests

Name official still-nanoda sonanoda nanoda nanobruijn official-nightly official-v4.28.0 lean4lean rpylean Size
bogus1 βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 11.4β€―KB
cedar 2.3β€―m -43% -41% -51% -48% -3% +20% +79% βœ‹ 728.6β€―MB
constlevels πŸ’₯ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ πŸ’₯ 🚫 βœ‹ 15.3β€―KB
cslib 4.1β€―m -50% -48% -53% -48% -3% +16% +123% βœ‹ 1.2β€―GB
init 1.2β€―m -35% -32% -50% -50% -3% +28% πŸ’₯ βœ‹ 309.5β€―MB
init-prelude πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ 3.5β€―MB
level-imax-leq βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ 5.6β€―KB
level-imax-normalization βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 5.8β€―KB
mathlib 32.8β€―m -51% -48% -29% -16% -3% +28% βœ‹ βœ‹ 5.2β€―GB
mlir 5.0β€―s -60% -58% -60% -48% -3% +12% +40% βœ‹ 28.8β€―MB
nat-rec-rules βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 🚫 βœ‹ 8.2β€―KB
perf/app-lam 5.4β€―s -14% -10% -10% -99% 0% 0% +1% -97% 1.2β€―MB
perf/grind-ring-5 πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ πŸ‘ βœ‹ 9.7β€―MB
perf/shift-cascade 52β€―ms -84% -84% -84% +262% -3% +11% +55% -85% 256.3β€―KB
proj-of-prop βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ βœ‹ 3.9β€―KB
std 2.1β€―m -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_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 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 (90 good tests, 46 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.