Lean Kernel Arena / perf/repeated-subproblem

Test "perf/repeated-subproblem"

Expected: 👍 accept · Size: 11.4 KB · Lines: 214 · lean4export: 3.1.0 · Lean: 4.34.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 ⏱️ 🧠
sokonanoda 👍 1 ms (÷35) 39.9 MB (-40%)
mathgraph 👍 1 ms (÷32) 37.7 MB (-43%)
nanoclo 👍 1 ms (÷30) 49.3 MB (-26%)
con-ron 👍 23 ms (-18%) 60.9 MB (-8%)
nanobruijn 👍 1 ms (÷27) 9.0 MB (÷7.4)
nanoda 👍 1 ms (÷34) 3.2 MB (÷20)
lazylean 👍 1 ms (÷21) 21.5 MB (÷3.1)
con-leche 👍 4 ms (÷6.4) 22.5 MB (÷2.9)
eink0rn 👍 3 ms (÷10) 12.6 MB (÷5.3)
official 👍 29 ms (0%) 66.3 MB (0%)
ind-models 👍 193 ms (×6.8) 110.0 MB (+66%)
lean4lean 👍 29 ms (0%) 96.5 MB (+46%)
tenet 👍 134 ms (×4.7) 44.9 MB (-32%)
tenet-hs 👍 2 ms (÷16) 10.2 MB (÷6.5)
lean4cobol 👍 10 ms (÷3.0) 13.8 MB (÷4.8)
evmlean 👍 4.0 s (×140) 277.1 MB (×4.2)
mini ⌛ 0 ms 0 B
overfull 👍 41.7 s (×1459) 47.7 MB (-28%)
metalean-slow 👍 4.9 s (×172) 71.7 MB (+8%)
tenet-jvm 👍 119 ms (×4.2) 65.5 MB (-1%)
nanoclo-fortran 👍 2 ms (÷19) 4.5 MB (÷15)
kiota 👍 1 ms (÷29) 9.1 MB (÷7.3)
metalean-fast 👍 31 ms (+8%) 74.1 MB (+12%)
canonical-min 🚫 387 ms 1.1 GB
rpylean 👍 21 ms (-26%) 4.7 MB (÷14)
vow-lean-kernel 👍 100 ms (×3.5) 8.4 MB (÷7.8)
parse-only 👍 28 ms (-2%) 65.9 MB (-1%)