Lean Kernel Arena / perf/repeated-subproblem

Test "perf/repeated-subproblem"

Expected: 👍 accept · Size: 11.4 KB · Lines: 214 · lean4export: 3.1.0 · Lean: 4.29.1 · Timeout: 50.0 s · 📄 Declaration · 🔗 Source

The declaration to check compares

perfect #n leaf      and      perfect #(n-1) (node leaf leaf)

where perfect #k t builds the perfect binary tree of depth k with leaves t, in k steps that each duplicate the tree so far into both arguments of Tr.node.

Both sides reduce to the perfect tree of depth n. Descending them meets Tr.node u u against Tr.node v v at every level, where both argument positions pose the same subproblem, so the recursion reaches 2^n pairs of nodes of which n are distinct. The test asks whether a checker records the pairs it has proved convertible: Θ(n) if it does, Θ(2ⁿ) if not.

N=20 in the Lean source, stepped up by one rather than doubled. From Courant and Leroy, POPL 2026, §10.

Checker Result ⏱️ 🧠
mathgraph 👍 1 ms (÷32) 37.7 MB (-42%)
sokonanoda 👍 1 ms (÷32) 35.6 MB (-46%)
nanoclo 👍 1 ms (÷25) 47.3 MB (-28%)
con-ron 👍 23 ms (-18%) 60.8 MB (-7%)
lazylean 👍 2 ms (÷18) 21.4 MB (÷3.1)
nanoda 👍 1 ms (÷34) 2.9 MB (÷23)
nanobruijn 👍 1 ms (÷23) 10.0 MB (÷6.5)
con-leche 👍 4 ms (÷6.7) 22.2 MB (÷2.9)
eink0rn 👍 3 ms (÷9.7) 12.0 MB (÷5.5)
ind-models 👍 185 ms (×6.5) 109.6 MB (+68%)
official 👍 28 ms (0%) 65.4 MB (0%)
lean4lean 👍 29 ms (+1%) 97.0 MB (+48%)
tenet 👍 134 ms (×4.7) 44.0 MB (-33%)
nanoclo-fortran 👍 2 ms (÷17) 4.6 MB (÷14)
lean4cobol 👍 10 ms (÷2.9) 13.6 MB (÷4.8)
evmlean ⌛ 0 ms 0 B
mini 💥 1.4 m 265.3 MB
overfull 👍 41.7 s (×1470) 47.2 MB (-28%)
kiota 👍 1 ms (÷24) 9.2 MB (÷7.1)
canonical-min 🚫 387 ms 1.1 GB
rpylean 👍 26 ms (-9%) 4.7 MB (÷14)
vow-lean-kernel 👍 101 ms (×3.5) 8.1 MB (÷8.1)
official-v4.28.0 👍 35 ms (+24%) 73.3 MB (+12%)
still-nanoda 👍 1 ms (÷34) 3.1 MB (÷21)
nyaya 👍 7.3 s (×256) 13.8 MB (÷4.7)
parse-only 👍 28 ms (-2%) 65.7 MB (0%)