Test "undecidability/alg-conv-trans-acc"
Expected: 🤷 either · Size: 66.0 KB · Lines: 1.2 k · lean4export: 3.1.0 · Lean: 4.29.1 · 📄 Declaration · 🔗 Source
As Lean's type theory has undecidable conversion (a.k.a. definitional equality), there are bound to be gaps between so called "algorithmic" conversion (that which is implemented by a typechecker), and the "declarative" conversion.
In the official kernel, algorithmic conversion fails to be transitive. f 1 a
is a normal form: a is a variable, so Acc.rec cannot fire on it. Proof
irrelevance admits any other proof of Acc (· < ·) 1 in its place, and
Acc.intro 1 fun _ => Acc.inv a carries a constructor at the head, so it
reduces. left is that substitution, right the reduction it unblocks, and
trans chains the two.
acc asks for the endpoints on their own, which means inventing the middle
term: choosing, among the proofs of a proposition, the one that happens to
reduce the right way. The kernel has no reason to go looking, the left side
being normal already, and unfolding regardless does not terminate here, as
each step makes the term larger.
References:
- Mario Carneiro, The Type Theory of Lean, MSc thesis
| Checker | Result | ⏱️ | 🧠 | |||
|---|---|---|---|---|---|---|
| mathgraph | ✋ | 1 ms | 59.9 MB | |||
| ind-models | ✋ | 65 ms | 103.4 MB | |||
| official-nightly | ✋ | 35 ms | 67.1 MB | |||
| evmlean | ✋ | 26.5 s | 231.0 MB | |||
| nanoda | ✋ | 3 ms | 3.3 MB | |||
| mini | ✋ | 173 ms | 69.2 MB | |||
| lean4lean | ✋ | 84 ms | 105.9 MB | |||
| sokonanoda | ✋ | 1 ms | 63.9 MB | |||
| zignodamus | ✋ | 1 ms | 5.6 MB | |||
| nanoclo | ✋ | 2 ms | 53.4 MB | |||
| nanobruijn | ✋ | 5 ms | 18.2 MB | |||
| kiota | ✋ | 3 ms | 10.8 MB | |||
| official | ✋ | 35 ms | 66.2 MB | |||
| vow-lean-kernel | ✋ | 349 ms | 8.7 MB | |||
| rpylean | ✋ | 3 ms | 11.7 MB | |||
| official-v4.28.0 | ✋ | 42 ms | 71.6 MB | |||
| still-nanoda | ✋ | 3 ms | 3.0 MB | |||
| nyaya | ✋ | 9 ms | 11.8 MB | |||
| parse-only | 👍 | 31 ms | 62.2 MB |