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%) |