Test "proj-of-imax-prop"
Expected: ✋ reject · Size: 19.3 KB · Lines: 321 · lean4export: 3.1.0 · Lean: 4.29.1 · 📄 Declaration · 🔗 Source
A closed proof of False, with no axioms, via a data projection out of a
proposition whose sort is Prop only up to universe level normalization.
ImaxProp : Sort (imax 1 0) is a proposition, since imax 1 0 normalizes to 0.
The exploit uses two definitionally equal spellings of that type. Proof
irrelevance is stated through ImaxAsProp : Prop := ImaxProp, whose type is the
literal Sort 0, so it is accepted; the data projection imaxProjBool is stated
on ImaxProp, whose type is the literal Sort (imax 1 0). A kernel that tests
sorts for Prop syntactically does not recognize the latter as a proposition and
wrongly allows projecting its Bool field out of a proof. Congruence on the
proof-irrelevance equation then equates false and true, giving False.
This is https://github.com/leanprover/lean4/pull/14613, a bug in the official kernel.
| Checker | Result | ⏱️ | 🧠 | |||
|---|---|---|---|---|---|---|
| mathgraph | ✋ | 1 ms | 33.9 MB | |||
| ind-models | ✋ | 59 ms | 102.5 MB | |||
| official-nightly | ✋ | 29 ms | 64.1 MB | |||
| evmlean | ✋ | 1.6 s | 132.0 MB | |||
| nanoda | ✋ | 1 ms | 3.1 MB | |||
| mini | 🚫 | 35 ms | 70.9 MB | |||
| lean4lean | ✋ | 29 ms | 94.1 MB | |||
| sokonanoda | ✋ | 1 ms | 33.8 MB | |||
| zignodamus | ✋ | 1 ms | 4.9 MB | |||
| nanoclo | ✋ | 1 ms | 51.6 MB | |||
| nanobruijn | ✋ | 2 ms | 10.0 MB | |||
| kiota | ✋ | 1 ms | 8.8 MB | |||
| official | ✋ | 29 ms | 65.4 MB | |||
| vow-lean-kernel | ✋ | 106 ms | 8.2 MB | |||
| rpylean | ✋ | 1 ms | 8.8 MB | |||
| official-v4.28.0 | 👍 | 36 ms | 72.2 MB | |||
| still-nanoda | ✋ | 1 ms | 3.2 MB | |||
| nyaya | ✋ | 4 ms | 10.5 MB | |||
| parse-only | 👍 | 28 ms | 60.5 MB |