Lean Kernel Arena / perf/refute-cheap-first

Test "perf/refute-cheap-first"

Expected: ✋ reject · Size: 20.7 KB · Lines: 439 · lean4export: 3.1.0 · Lean: 4.34.1 · Timeout: 50.0 s · 📄 Declaration · 🔗 Source

The declaration to check claims

(false, count #n) = (true, count #(n+1))

and must be rejected. Both sides are constructor applications, so comparing components is the only route, and either component refutes on its own: false against true for Θ(1), the numerals for Θ(n²) (count #k evaluates to #k in Θ(k²) reductions). The test asks in which order a checker visits the components. refute-cheap-last.lean swaps them, and the ratio between the two files is what that order costs.

N=200 in the Lean source. From Courant and Leroy, POPL 2026, §10, where the two orders cost Rocq 4 × 10⁻⁶ s and 0.61 s.

Checker Result ⏱️ 🧠
sokonanoda ✋ 1 ms (÷50) 36.4 MB (-47%)
mathgraph ✋ 1 ms (÷48) 37.8 MB (-45%)
nanoclo ✋ 1 ms (÷44) 45.7 MB (-34%)
con-ron ✋ 24 ms (-44%) 60.9 MB (-12%)
nanobruijn ✋ 1 ms (÷29) 10.0 MB (÷6.9)
nanoda ✋ 1 ms (÷41) 3.0 MB (÷23)
lazylean ✋ 10 ms (÷4.1) 25.6 MB (÷2.7)
con-leche ✋ 5 ms (÷8.8) 22.2 MB (÷3.1)
eink0rn ✋ 3 ms (÷15) 17.4 MB (÷4.0)
official ✋ 42 ms (0%) 69.1 MB (0%)
ind-models ✋ 109 ms (×2.6) 107.1 MB (+55%)
lean4lean ✋ 79 ms (+89%) 102.5 MB (+48%)
tenet ✋ 140 ms (×3.3) 45.7 MB (-34%)
tenet-hs ✋ 2 ms (÷19) 10.9 MB (÷6.3)
lean4cobol ✋ 12 ms (÷3.6) 14.3 MB (÷4.8)
evmlean 🚫 2.4 s 278.1 MB
mini ⌛ 0 ms 0 B
overfull ✋ 1.1 m (×1517) 48.3 MB (-30%)
metalean-slow ✋ 50 ms (+19%) 73.9 MB (+7%)
tenet-jvm ✋ 133 ms (×3.2) 66.2 MB (-4%)
nanoclo-fortran ✋ 2 ms (÷25) 4.6 MB (÷15)
kiota ✋ 1 ms (÷37) 9.3 MB (÷7.4)
metalean-fast ✋ 32 ms (-23%) 74.1 MB (+7%)
canonical-min 🚫 388 ms 1.1 GB
rpylean ✋ 4 ms (÷10) 13.1 MB (÷5.3)
vow-lean-kernel ✋ 7.4 s (×176) 17.1 MB (÷4.0)
parse-only 👍 28 ms 65.4 MB