Lean Kernel Arena / other/proj-of-prop

Test "other/proj-of-prop"

Expected: ✋ reject · Size: 3.9 KB · Lines: 56 · lean4export: 3.1.0 · Lean: 4.34.1 · 📄 Declaration · 🔗 Source

A proof of False via a projection from a Prop-typed structure whose constructor was applied to an ill-typed argument. The exported term is

badFalse : False := (Wrapper.mk True.intro).p

where Wrapper : Prop has a single field p : False, so Wrapper.mk expects a proof of False but is given True.intro : True.

A sound checker must reject this. A checker that types a projection by inferring (rather than checking) its structure argument — i.e. that trusts the structure to be well-typed instead of verifying the constructor's argument types against its binders — will accept it, because Wrapper.mk True.intro still formally inhabits Wrapper at the structural level, and the p projection is then read back out at the declared field type False.

Checker Result ⏱️ 🧠
sokonanoda ✋ 1 ms 38.1 MB
mathgraph ✋ 1 ms 33.8 MB
nanoclo ✋ 1 ms 45.6 MB
con-ron ✋ 23 ms 58.9 MB
nanobruijn ✋ 1 ms 3.4 MB
nanoda ✋ 1 ms 3.2 MB
lazylean ✋ 1 ms 21.6 MB
con-leche ✋ 4 ms 22.3 MB
eink0rn ✋ 1 ms 12.4 MB
official ✋ 28 ms 67.0 MB
ind-models ✋ 100 ms 104.1 MB
lean4lean ✋ 28 ms 95.7 MB
tenet ✋ 133 ms 44.5 MB
tenet-hs ✋ 1 ms 8.7 MB
lean4cobol ✋ 3 ms 13.7 MB
evmlean ✋ 1.2 s 254.1 MB
mini ✋ 34 ms 74.4 MB
overfull ✋ 7.1 s 46.2 MB
metalean-slow ✋ 30 ms 71.7 MB
tenet-jvm ✋ 106 ms 64.6 MB
nanoclo-fortran ✋ 1 ms 4.6 MB
kiota ✋ 1 ms 7.2 MB
metalean-fast ✋ 30 ms 72.1 MB
canonical-min 🚫 387 ms 1.1 GB
rpylean ✋ 0 ms 4.3 MB
vow-lean-kernel 🚫 78 ms 8.5 MB
parse-only 👍 28 ms 66.1 MB