Lean Kernel Arena / orphan-ctor

Test "orphan-ctor"

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

Proof of False from a constructor of an inductive type that does not exist.

The export contains False exactly as the prelude has it — an empty Prop-valued inductive with no constructors, its ctors field is the empty list — together with its ordinary False.rec. Smuggled into the same inductive block is a constructor named rogue, of type False, with no parameters and no fields, whose induct field names Orphan, a name for which the export has no declaration at all. The theorem inconsistent : False is then simply rogue.

A checker must derive the constructors of an inductive group from the inductive declarations and reject any exported constructor that is not one of them; here that fails because False has no constructors, and the inductive type rogue claims to come from does not exist. A checker that instead registers exported constructors as given — or that only checks constructors whose induct field points at a declaration it knows — ends up with an inhabitant of the genuine empty type.

This is the constructor-side counterpart of orphan-rec: in both cases the bogus declaration escapes by not being attached to any inductive declaration that the checker verifies, rather than by disagreeing with one.

Checker Result ⏱️ 🧠
mathgraph 1 ms 29.8 MB
nanoda 0 ms 3.1 MB
nanobruijn 1 ms 3.3 MB
ind-models 58 ms 104.6 MB
official 27 ms 66.7 MB
lean4lean 28 ms 94.8 MB
evmlean 488 ms 133.1 MB
mini 34 ms 75.2 MB
sokonanoda 1 ms 29.8 MB
nanoclo 1 ms 43.7 MB
zignodamus 0 ms 4.2 MB
vow-lean-kernel 👍 57 ms 8.3 MB
official-v4.28.0 34 ms 73.5 MB
still-nanoda 0 ms 3.1 MB
kiota 👍 1 ms 6.7 MB
rpylean 1 ms 8.2 MB
nyaya 💥 2 ms 9.3 MB
parse-only 👍 27 ms 65.8 MB