Lean Kernel Arena / other/extra-rec

Test "other/extra-rec"

Expected: ✋ reject · Size: 1.4 KB · Lines: 21 · lean4export: 3.1.0 · Lean: 4.29.1 · 📄 Declaration

Proof of False from an extra recursor that no inductive declaration could produce.

The export contains False exactly as the prelude has it — an empty Prop-valued inductive with no constructors — together with its ordinary False.rec. Smuggled into the same inductive group is a second recursor, named rogue, whose type is False itself and which has no motives, no minor premises and no rules. The theorem inconsistent : False is then simply rogue.

A checker must derive the recursors of an inductive group from the inductive declaration and reject any exported recursor that is not one of them; here that fails on the name (rogue is not False.rec) as well as on the type. A checker that instead registers exported recursors as given ends up with an inhabitant of the genuine empty type.

This is a different gap from bugs/nat-rec-rules, which perturbs the rules of a legitimate recursor: here an entire recursor constant is fabricated, so validating only the rules of the recursors one expects does not catch it.

Checker Result ⏱️ 🧠
mathgraph ✋ 1 ms 29.9 MB
sokonanoda ✋ 1 ms 31.8 MB
nanoclo ✋ 1 ms 37.5 MB
con-ron ✋ 1 ms 10.2 MB
lazylean ✋ 1 ms 21.3 MB
nanoda ✋ 0 ms 3.0 MB
nanobruijn ✋ 1 ms 3.4 MB
con-leche ✋ 3 ms 17.5 MB
eink0rn ✋ 1 ms 10.8 MB
ind-models ✋ 58 ms 104.6 MB
official ✋ 27 ms 66.6 MB
lean4lean ✋ 28 ms 97.5 MB
tenet ✋ 119 ms 44.1 MB
nanoclo-fortran ✋ 1 ms 4.1 MB
lean4cobol ✋ 2 ms 13.4 MB
evmlean ✋ 494 ms 134.1 MB
mini ✋ 34 ms 74.0 MB
overfull ✋ 2.3 s 45.7 MB
kiota ✋ 1 ms 6.8 MB
canonical-min 🚫 387 ms 1.1 GB
rpylean ✋ 0 ms 4.1 MB
vow-lean-kernel ✋ 43 ms 8.1 MB
official-v4.28.0 ✋ 34 ms 73.9 MB
still-nanoda 👍 0 ms 3.1 MB
nyaya 👍 2 ms 8.7 MB
parse-only 👍 27 ms 65.6 MB