lean4-htt/tests
Leonardo de Moura ba8c2ed4ee
feat: add simpArrowTelescope for compact proofs of arrow simplification (#12152)
This PR adds `simpArrowTelescope`, a simproc that simplifies telescopes
of non-dependent arrows (p₁ → p₂ → ... → q) while avoiding quadratic
proof growth.

When using `Expr.forallE` to represent nested implications, each nesting
level bumps de Bruijn indices in subterms, destroying sharing even with
hash-consing. For example, a free variable `x` gets different de Bruijn
representations at each depth, causing proof terms to grow.

`simpArrowTelescope` works by:

- Converting arrows to `Arrow p q` (a definitional wrapper)
- Simplifying each component
- Converting back to `→` form

Since `Arrow` arguments are not under binders, subterms remain identical
across nesting levels and can be shared.

The `simp_4` benchmark demonstrates the improvement:

With `forallE`: ~160ms, proof_size ≈ 173k
With `Arrow`: ~43ms, proof_size ≈ 16k
Tradeoff: `simpArrowTelescope` misses simplifications that depend on the
arrow structure (e.g., `p → p` to `True`), since post-methods aren't
applied to intermediate arrows. Thus, it is not used by default. to use
it, one has to set `simpArrowTelescope` as a `pre`-method.
2026-01-25 20:43:59 +00:00
..
bench feat: add simpArrowTelescope for compact proofs of arrow simplification (#12152) 2026-01-25 20:43:59 +00:00
bench-radar chore: make bench suite more similar to mathlib's (#12091) 2026-01-22 14:20:10 +00:00
compiler test: compiler test with big meta closure (#12141) 2026-01-24 15:18:33 +00:00
elabissues
ir
lake fix: lake: --no-build exit code w/ release fetch (#12142) 2026-01-24 17:03:07 +00:00
lean fix: revert "split ngen on async elab" (#12148) 2026-01-25 03:18:24 +00:00
pkg fix: revert "split ngen on async elab" (#12148) 2026-01-25 03:18:24 +00:00
playground
plugin
simpperf
.gitignore
common.sh feat: re-integrate lean4checker as leanchecker (#11887) 2026-01-08 09:41:33 +00:00
lakefile.toml feat: module system is no longer experimental (#11637) 2025-12-12 21:20:26 +00:00
lean-toolchain