Lean Kernel Arena / corner-cases/eta-struct-major-and-no-whnf

Test "corner-cases/eta-struct-major-and-no-whnf"

Expected: 🤷 either · Size: 24.0 KB · Lines: 421 · lean4export: 3.1.0 · Lean: 4.34.1 · Timeout: 1.0 m · 📄 Declaration · 🔗 Source

The combination of corner-cases/eta-struct-major-and and corner-cases/eta-struct-major-no-whnf.

andConst h is And.rec (fun _ _ => 1) h, applied here to a proof of True ∧ True that has no weak head normal form (built from Coquand's paradox, via propext). A checker that eta-expands the And major premise before reducing it accepts the equation with 1 immediately. A checker that first reduces the major premise does not terminate, and the official kernel today, which reduces the major and then does not eta-expand propositions, does not terminate either.

This shows why, once eta applies to majors in Prop, the expansion has to happen before reduction: proofs need not normalize, and otherwise that non-termination leaks into the conversion of data. See https://github.com/leanprover/lean4/pull/15351, https://github.com/leanprover/lean4/pull/15371 and https://github.com/leanprover/lean4/issues/14977.

Checker Result ⏱️ 🧠
sokonanoda ⌛ 0 ms 0 B
mathgraph ⌛ 0 ms 0 B
nanoclo ⌛ 0 ms 0 B
con-ron 💥 50 ms 80.2 MB
nanobruijn ⌛ 0 ms 0 B
nanoda ⌛ 0 ms 0 B
lazylean ⌛ 0 ms 0 B
con-leche 💥 82 ms 41.4 MB
eink0rn 🚫 12.5 s 3.7 GB
official ⌛ 0 ms 0 B
ind-models ⌛ 0 ms 0 B
lean4lean ✋ 96 ms 97.7 MB
tenet ✋ 38.2 s 233.4 MB
tenet-hs ✋ 1.1 m 72.7 MB
lean4cobol 🚫 396 ms 13.8 MB
evmlean ⌛ 0 ms 0 B
mini ⌛ 0 ms 0 B
overfull ⌛ 0 ms 0 B
metalean-slow 🚫 32 ms 73.9 MB
tenet-jvm ⌛ 0 ms 0 B
nanoclo-fortran ⌛ 0 ms 0 B
kiota ⌛ 0 ms 0 B
metalean-fast 💥 7.6 s 1.1 GB
canonical-min ✋ 389 ms 1.1 GB
rpylean ⌛ 0 ms 0 B
vow-lean-kernel 👍 910 ms 16.4 MB
parse-only 👍 29 ms 66.2 MB