Lean Kernel Arena / bugs/pi-closure-context

Test "bugs/pi-closure-context"

Expected: ✋ reject · Size: 1.5 KB · Lines: 26 · lean4export: 3.1.0 · Lean: 4.35.0 · 📄 Declaration

Proof of False via a function whose codomain is checked against the type of its body's value instead of the value itself.

def FalseTy : Prop := ∀ P : Prop, P
def TrueTy : Prop := ∀ P : Prop, P → P
def trueProof : TrueTy := fun _ p => p
def bad : TrueTy → FalseTy := fun _ => FalseTy
theorem boom : FalseTy := bad trueProof

bad is ill typed: its value has type TrueTy → Prop. A checker that represents both function types as closures over the same body, FalseTy, and compares two such closures by their body, domain and environment alone, without telling a closure that evaluates the body from one that infers its type, finds TrueTy → Prop equal to TrueTy → FalseTy. The file has no axioms and no inductive types.

Sokonanoda accepted this export. Found by a differential run of Pestka against other checkers.

Checker Result ⏱️ 🧠
logos-kernel ✋ 0.403 ms 4.5 MB
nano-lean ✋ 0.477 ms 11.4 MB
sokonanoda ✋ 0.644 ms 26.0 MB
pestka ✋ 0.695 ms 10.5 MB
kefir ✋ 0.417 ms 5.8 MB
nanoclo ✋ 0.622 ms 35.7 MB
kefir-wasm ✋ 106 ms 82.8 MB
con-ron ✋ 22.0 ms 35.7 MB
con-agua ✋ 17.9 ms 10.4 MB
nanoda ✋ 0.488 ms 3.2 MB
lazylean ✋ 1.07 ms 21.2 MB
con-leche ✋ 3.88 ms 20.6 MB
pestka-wasm ✋ 77.5 ms 91.8 MB
tenet-jvm ✋ 97.8 ms 64.4 MB
eink0rn ✋ 1.31 ms 11.5 MB
official ✋ 27.7 ms 67.5 MB
ind-models ✋ 99.8 ms 106.9 MB
lean4lean ✋ 73.6 ms 105.2 MB
tenet ✋ 111 ms 44.1 MB
tenet-hs ✋ 1.07 ms 7.5 MB
ocaml4lean ✋ 13.2 ms 23.1 MB
lean4cobol ✋ 1.81 ms 13.7 MB
evmlean ✋ 1.04 s 252.5 MB
overfull ✋ 2.94 s 45.6 MB
vow-lean-kernel ✋ 121 ms 14.6 MB
mini ✋ 33.9 ms 74.0 MB
canonical-min ✋ 387 ms 1.1 GB
kiota ✋ 0.603 ms 9.1 MB
metalean-slow ✋ 29.6 ms 71.4 MB
nanobruijn ✋ 0.476 ms 3.3 MB
metalean-fast ✋ 29.7 ms 72.1 MB
nanoclo-fortran ✋ 0.662 ms 4.4 MB
rpylean ✋ 0.452 ms 4.1 MB
mathgraph 👍 0.591 ms 29.4 MB
parse-only 👍 27.4 ms 65.4 MB