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