Lean Kernel Arena / perf/fueled-chain

Test "perf/fueled-chain"

Expected: 👍 accept · Size: 848.6 KB · Lines: 17.3 k · lean4export: 3.1.0 · Lean: 4.34.1 · Timeout: 50.0 s · 📄 Declaration · 🔗 Source

Distilled from con-leche's fuel-bridge (_datF) lemmas, the declarations on which nanobruijn times out on the con-leche test.

Fueled α packages a fuel-indexed family p : Nat → Except Unit α with a proof whose type mentions p twice under binders. A _datF lemma states that running a monadic function in Fueled and extracting at fuel F equals running it in Except Unit, proved by unfolding and rewriting with the atF lemmas for bind/pure/throw/ite. What is left for the kernel is a definitional equality between two monadic programs that differ only in the monad instance, under one binder per bind and a do-notation join point per unless … throw guard.

chainN (N = 6, 9, 12) has N binds, each followed by a guard. A checker that recognises the unfolded and the literal program as equal outright is fast (nanoda: 2 ms, 18 ms, 32 ms); one that compares them structurally unfolds bind to Subtype.mk p h and, through proof irrelevance on the hs, re-compares the rest of the program twice per guard (nanobruijn: 19 ms, 4.1 s, 256 s). Without the guards it is cheap for both.

Checker Result ⏱️ 🧠
logos-kernel 👍 18.6 ms (÷6.8) 21.4 MB (÷3.5)
nano-lean 👍 23.5 ms (÷5.4) 122.8 MB (+62%)
sokonanoda 👍 18.7 ms (÷6.8) 92.1 MB (+22%)
pestka 👍 18.9 ms (÷6.7) 22.8 MB (÷3.3)
kefir 👍 37.6 ms (÷3.4) 22.9 MB (÷3.3)
nanoclo 👍 86.3 ms (-32%) 103.6 MB (+37%)
kefir-wasm 👍 478 ms (×3.8) 120.7 MB (+59%)
con-ron 👍 52.3 ms (÷2.4) 74.2 MB (-2%)
con-agua 👍 66.5 ms (-48%) 32.8 MB (÷2.3)
nanoda 👍 42.4 ms (÷3.0) 6.3 MB (÷12)
lazylean 👍 102 ms (-19%) 26.6 MB (÷2.8)
con-leche 👍 70.7 ms (-44%) 45.5 MB (-40%)
pestka-wasm 👍 271 ms (×2.1) 180.5 MB (×2.4)
tenet-jvm 👍 706 ms (×5.6) 138.6 MB (+83%)
eink0rn 👍 10.1 s (×80) 676.3 MB (×8.9)
official 👍 127 ms (0%) 75.8 MB (0%)
ind-models 👍 247 ms (+94%) 117.0 MB (+54%)
lean4lean 👍 157 ms (+23%) 99.9 MB (+32%)
tenet 👍 319 ms (×2.5) 73.1 MB (-3%)
tenet-hs 👍 85.7 ms (-33%) 75.8 MB (0%)
ocaml4lean 👍 374 ms (×2.9) 43.9 MB (-42%)
lean4cobol 👍 1.02 s (×8.1) 19.6 MB (÷3.9)
evmlean 🚫 308 ms 104.3 MB
overfull ⌛ 0 ms 0 B
vow-lean-kernel 🚫 53.2 s 45.8 MB
mini ⌛ 0 ms 0 B
canonical-min ✋ 443 ms 1.1 GB
kiota 👍 121 ms (-5%) 41.2 MB (-46%)
metalean-slow 🚫 3.71 s 80.1 MB
nanobruijn 👍 52.7 ms (÷2.4) 28.5 MB (÷2.7)
metalean-fast ⌛ 0 ms 0 B
nanoclo-fortran 👍 173 ms (+36%) 56.9 MB (-25%)
rpylean 👍 13.9 s (×109) 3.3 GB (×45)
mathgraph 👍 19.9 ms (÷6.4) 103.9 MB (+37%)
parse-only 👍 73.9 ms (-42%) 69.5 MB (-8%)