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 |