Lean Kernel Arena / perf/irrelevance-before-evaluation

Test "perf/irrelevance-before-evaluation"

Expected: 馃憤 accept 路 Size: 17.5鈥疜B 路 Lines: 389 路 lean4export: 3.1.0 路 Lean: 4.29.1 路 Timeout: 50.0鈥痵 路 馃搫 Declaration 路 馃敆 Source

The declaration to check is

slowTriv (count #n) = True.intro

proved by Eq.refl, where slowTriv m : True recurses over m, so forcing it to a constructor evaluates the numeral in 螛(n虏) reductions.

Checking compares the two proofs as arguments of Eq, whose head is rigid: nothing can be unfolded instead. Proof irrelevance settles the proofs by their type for 螛(1); evaluating the left one to a constructor costs 螛(n虏) and yields the answer irrelevance already gave. The test asks whether a checker consults proof irrelevance before it reduces.

N=200 in the Lean source.

Checker Result 鈴憋笍 馃
mathgraph 馃憤 1鈥痬s (梅37) 37.9鈥疢B (-43%)
sokonanoda 馃憤 1鈥痬s (梅37) 31.6鈥疢B (梅2.1)
nanoclo 馃憤 1鈥痬s (梅28) 51.6鈥疢B (-22%)
con-ron 馃憤 23鈥痬s (-18%) 58.9鈥疢B (-11%)
lazylean 馃憤 1鈥痬s (梅20) 21.3鈥疢B (梅3.1)
nanoda 馃憤 1鈥痬s (梅33) 3.0鈥疢B (梅22)
nanobruijn 馃憤 1鈥痬s (梅21) 10.6鈥疢B (梅6.2)
con-leche 馃憤 4鈥痬s (梅6.5) 26.0鈥疢B (梅2.5)
eink0rn 馃憤 2鈥痬s (梅15) 12.3鈥疢B (梅5.4)
ind-models 馃憤 63鈥痬s (脳2.2) 107.6鈥疢B (+63%)
official 馃憤 29鈥痬s (0%) 65.9鈥疢B (0%)
lean4lean 馃憤 29鈥痬s (+1%) 97.1鈥疢B (+47%)
tenet 馃憤 133鈥痬s (脳4.6) 43.9鈥疢B (-33%)
nanoclo-fortran 馃憤 2鈥痬s (梅17) 4.8鈥疢B (梅14)
lean4cobol 馃憤 10鈥痬s (梅2.9) 14.3鈥疢B (梅4.6)
evmlean 馃毇 1.4鈥痵 134.6鈥疢B
mini 馃憤 37鈥痬s (+28%) 74.5鈥疢B (+13%)
overfull 馃憤 51.9鈥痵 (脳1810) 47.7鈥疢B (-28%)
kiota 馃憤 1鈥痬s (梅24) 8.9鈥疢B (梅7.4)
canonical-min 馃毇 388鈥痬s 1.1鈥疓B
rpylean 馃憤 1鈥痬s (梅37) 4.8鈥疢B (梅14)
vow-lean-kernel 馃憤 128鈥痬s (脳4.5) 11.2鈥疢B (梅5.9)
official-v4.28.0 馃憤 35鈥痬s (+24%) 73.4鈥疢B (+11%)
still-nanoda 馃憤 1鈥痬s (梅34) 3.2鈥疢B (梅20)
nyaya 馃憤 3鈥痬s (梅8.3) 10.2鈥疢B (梅6.5)
parse-only 馃憤 28鈥痬s (-2%) 65.8鈥疢B (0%)