Lean Kernel Arena / nested-unused-param

Test "nested-unused-param"

Expected: ✋ reject · Size: 59.2 KB · Lines: 1.1 k · lean4export: 3.1.0 · Lean: 4.29.1 · 📄 Declaration · 🔗 Source

Checks that the parameters of a nested inductive application are type-checked even when they do not appear in the auxiliary type generated during nested-inductive compilation.

When an inductive E has a constructor whose type contains a nested application L (E w) b, the elaboration of nested inductives replaces that occurrence with an auxiliary type. The argument b does not occur in the auxiliary declaration, so a checker that only checks the auxiliary type never sees b. A correct checker must still ensure b is well-typed; this test rejects if it is not.

Here b is a malformed projection C.0 (C.0 w) (applying a C projection to a value of the unrelated structure W), disguised by a hash collision. If the parameter is not checked, the bogus projection slips through and the resulting E can be used to build an axiom-free proof of False (boom). The projection is merely the payload; the property under test is that the nested-inductive parameter is checked.

Origin: reported as leanprover/lean4#14576 by @kiranandcode, with the original source recorded by @xrchz (https://github.com/xrchz/collatzlean); fixed in leanprover/lean4#14577.

Checker Result ⏱️ 🧠
mathgraph 1 ms 37.8 MB
ind-models 63 ms 104.4 MB
official-nightly 31 ms 64.7 MB
evmlean 13.1 s 196.5 MB
nanoda 2 ms 3.3 MB
mini 🚫 37 ms 75.2 MB
lean4lean 31 ms 95.1 MB
sokonanoda 1 ms 39.8 MB
zignodamus 37 ms 27.0 MB
nanoclo 2 ms 51.5 MB
nanobruijn 4 ms 14.5 MB
kiota 2 ms 10.9 MB
official 31 ms 64.8 MB
vow-lean-kernel 310 ms 8.7 MB
rpylean 2 ms 10.9 MB
official-v4.28.0 👍 39 ms 69.1 MB
still-nanoda 2 ms 3.4 MB
nyaya 💥 6 ms 11.4 MB
parse-only 👍 30 ms 61.8 MB