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 ⏱️ 🧠
sokonanoda ✋ 1 ms 36.2 MB
mathgraph ✋ 1 ms 29.5 MB
nanoclo ✋ 1 ms 41.6 MB
con-ron ✋ 1 ms 9.9 MB
nanobruijn ✋ 1 ms 3.6 MB
nanoda ✋ 0 ms 3.1 MB
lazylean ✋ 1 ms 21.8 MB
con-leche ✋ 3 ms 17.4 MB
eink0rn ✋ 1 ms 11.8 MB
official ✋ 28 ms 66.2 MB
ind-models ✋ 100 ms 103.0 MB
lean4lean ✋ 28 ms 94.9 MB
tenet ✋ 119 ms 44.4 MB
tenet-hs ✋ 1 ms 8.4 MB
lean4cobol ✋ 2 ms 13.5 MB
evmlean ✋ 1.0 s 269.0 MB
mini ✋ 34 ms 74.3 MB
overfull ✋ 2.3 s 46.0 MB
metalean-slow ✋ 30 ms 71.8 MB
tenet-jvm ✋ 100 ms 64.6 MB
nanoclo-fortran ✋ 1 ms 4.4 MB
kiota ✋ 1 ms 6.9 MB
metalean-fast ✋ 30 ms 71.2 MB
canonical-min 🚫 386 ms 1.1 GB
rpylean ✋ 0 ms 4.1 MB
vow-lean-kernel ✋ 43 ms 8.2 MB
parse-only 👍 27 ms 65.5 MB