Lean Kernel Arena / bugs/nested-unused-param

Test "bugs/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 39.9 MB
sokonanoda ✋ 1 ms 37.7 MB
nanoclo ✋ 2 ms 49.6 MB
con-ron ✋ 26 ms 57.0 MB
lazylean ✋ 3 ms 21.8 MB
nanoda ✋ 2 ms 3.1 MB
nanobruijn ✋ 4 ms 18.0 MB
con-leche ✋ 6 ms 20.9 MB
eink0rn ✋ 4 ms 16.4 MB
ind-models ✋ 63 ms 107.6 MB
official ✋ 31 ms 66.8 MB
lean4lean ✋ 31 ms 100.4 MB
tenet ✋ 156 ms 46.3 MB
nanoclo-fortran ✋ 4 ms 4.9 MB
lean4cobol ✋ 41 ms 13.9 MB
evmlean ✋ 13.1 s 196.8 MB
mini 🚫 37 ms 74.1 MB
overfull 💥 1.8 m 49.3 MB
kiota ✋ 3 ms 11.3 MB
canonical-min 🚫 419 ms 1.1 GB
rpylean ✋ 2 ms 7.0 MB
vow-lean-kernel ✋ 310 ms 8.7 MB
official-v4.28.0 👍 39 ms 73.5 MB
still-nanoda ✋ 2 ms 3.1 MB
nyaya 💥 6 ms 11.0 MB
parse-only 👍 30 ms 65.8 MB