Test "perf/refute-cheap-first"
Expected: ✋ reject · Size: 20.7 KB · Lines: 439 · lean4export: 3.1.0 · Lean: 4.29.1 · 📄 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 | ⏱️ | 🧠 | |||
|---|---|---|---|---|---|---|
| mathgraph | ✋ | 1 ms | 31.9 MB | |||
| ind-models | ✋ | 72 ms | 107.1 MB | |||
| official-nightly | ✋ | 37 ms | 64.4 MB | |||
| evmlean | 🚫 | 1.9 s | 135.2 MB | |||
| nanoda | ✋ | 1 ms | 3.1 MB | |||
| mini | 💥 | 1.6 m | 78.9 MB | |||
| lean4lean | ✋ | 79 ms | 103.3 MB | |||
| sokonanoda | ✋ | 1 ms | 32.1 MB | |||
| zignodamus | ✋ | 1 ms | 5.1 MB | |||
| nanoclo | ✋ | 1 ms | 49.6 MB | |||
| nanobruijn | ✋ | 2 ms | 11.9 MB | |||
| kiota | ✋ | 1 ms | 9.1 MB | |||
| official | ✋ | 42 ms | 64.8 MB | |||
| vow-lean-kernel | ✋ | 7.4 s | 16.8 MB | |||
| rpylean | ✋ | 4 ms | 16.9 MB | |||
| official-v4.28.0 | ✋ | 49 ms | 70.7 MB | |||
| still-nanoda | ✋ | 1 ms | 3.0 MB | |||
| nyaya | ✋ | 3 ms | 10.4 MB | |||
| parse-only | 👍 | 28 ms | 61.1 MB |