Lean Kernel Arena / bugs/nested-unused-param

Test "bugs/nested-unused-param"

Expected: ✋ reject · Size: 61.1 KB · Lines: 1.1 k · lean4export: 3.1.0 · Lean: 4.34.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 ⏱️ 🧠
sokonanoda ✋ 1 ms 68.2 MB
mathgraph ✋ 1 ms 64.1 MB
nanoclo ✋ 2 ms 55.7 MB
con-ron ✋ 25 ms 54.8 MB
nanobruijn ✋ 4 ms 16.1 MB
nanoda ✋ 3 ms 3.5 MB
lazylean ✋ 2 ms 22.3 MB
con-leche ✋ 6 ms 20.5 MB
eink0rn ✋ 4 ms 17.3 MB
official ✋ 31 ms 67.7 MB
ind-models ✋ 105 ms 105.6 MB
lean4lean ✋ 31 ms 100.4 MB
tenet ✋ 156 ms 47.1 MB
tenet-hs ✋ 5 ms 16.9 MB
lean4cobol ✋ 42 ms 13.8 MB
evmlean ✋ 12.6 s 325.6 MB
mini 🚫 37 ms 73.4 MB
overfull ⌛ 0 ms 0 B
metalean-slow 🚫 660 ms 76.3 MB
tenet-jvm ✋ 199 ms 71.2 MB
nanoclo-fortran ✋ 4 ms 5.1 MB
kiota ✋ 3 ms 11.3 MB
metalean-fast 👍 38 ms 80.7 MB
canonical-min 🚫 390 ms 1.1 GB
rpylean ✋ 2 ms 7.2 MB
vow-lean-kernel ✋ 341 ms 9.2 MB
parse-only 👍 31 ms 66.8 MB