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 路 馃搫 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 (梅40) 31.8鈥疢B (-48%)
ind-models 馃憤 63鈥痬s (脳2.2) 105.4鈥疢B (+72%)
official-nightly 馃憤 29鈥痬s (+1%) 63.3鈥疢B (+3%)
evmlean 馃毇 1.4鈥痵 135.5鈥疢B
nanoda 馃憤 1鈥痬s (梅34) 3.2鈥疢B (梅19)
mini 馃憤 37鈥痬s (+27%) 74.0鈥疢B (+21%)
lean4lean 馃憤 29鈥痬s (+1%) 91.9鈥疢B (+50%)
sokonanoda 馃憤 1鈥痬s (梅40) 31.8鈥疢B (-48%)
zignodamus 馃憤 1鈥痬s (梅46) 4.9鈥疢B (梅13)
nanoclo 馃憤 1鈥痬s (梅28) 45.5鈥疢B (-26%)
nanobruijn 馃憤 1鈥痬s (梅22) 11.7鈥疢B (梅5.2)
kiota 馃憤 3鈥痬s (梅11) 11.0鈥疢B (梅5.6)
official 馃憤 29鈥痬s (0%) 61.4鈥疢B (0%)
vow-lean-kernel 馃憤 128鈥痬s (脳4.5) 11.0鈥疢B (梅5.6)
rpylean 馃憤 1鈥痬s (梅32) 8.8鈥疢B (梅7.0)
official-v4.28.0 馃憤 35鈥痬s (+23%) 72.4鈥疢B (+18%)
still-nanoda 馃憤 1鈥痬s (梅34) 3.0鈥疢B (梅21)
nyaya 馃憤 3鈥痬s (梅8.3) 10.7鈥疢B (梅5.7)
parse-only 馃憤 28鈥痬s (-2%) 61.5鈥疢B (0%)