lean4-htt/src
Leonardo de Moura f1c903ca65
feat: simplify lambdas in Sym.simp (#11898)
This PR adds support for simplifying lambda expressions in `Sym.simp`.
It is much more efficient than standard simp for very large lambda
expressions with many binders. The key idea is to generate a custom
function extensionality theorem for the type of the lambda being
simplified.

This technique is compatible with the standard `simp` tactic, and will
be ported in a separate PR.

<img width="581" height="455" alt="image"
src="https://github.com/user-attachments/assets/5911dc6c-03f0-48ed-843b-b8cb4f67ee61"
/>

### `lambda` benchmark summary

| Lambda size | MetaM (ms) | SymM (ms) | Speedup |
|-------------|------------|-----------|---------|
| 50          | 22.7       | 0.74      | ~31×    |
| 100         | 120.5      | 1.75      | ~69×    |
| 150         | 359.6      | 2.90      | ~124×   |
| 200         | 809.5      | 4.51      | ~180×   |
2026-01-05 01:00:30 +00:00
..
bin
cmake chore: fix spelling errors (#10042) 2025-08-22 07:23:12 +00:00
include/lean fix: avoid SIGFPE on x86_64 for signed integer division overflow (#11624) 2025-12-13 02:42:33 +00:00
Init feat: add with_unfolding_none tactic (#11880) 2026-01-03 08:36:51 +00:00
initialize feat: zero cost BaseIO (#10625) 2025-10-22 10:55:12 +02:00
kernel perf: use lean::unordered_set for expr_eq_fn (#11731) 2025-12-18 14:24:50 +00:00
lake fix: add table variant for require.git field in lakefile.toml schema (#11536) 2025-12-16 10:47:33 +00:00
Lean feat: simplify lambdas in Sym.simp (#11898) 2026-01-05 01:00:30 +00:00
library perf: do not consult isNoConfusion in whnf (#11571) 2025-12-09 23:36:46 +00:00
runtime chore: fix typo (#11883) 2026-01-03 11:36:50 +00:00
shell chore: tests: use filenames as test names (#11302) 2025-11-21 12:40:58 +00:00
Std feat: use MonadAttach in the takeWhileM and dropWhileM iterator combinators (#11852) 2025-12-31 12:38:21 +00:00
util refactor: port shell option processing to Lean (v2) (#11434) 2025-12-02 17:41:51 +00:00
cadical.mk
CMakeLists.txt chore: begin development cycle for v4.28.0 (#11667) 2025-12-14 12:42:12 +00:00
config.h.in
githash.h.in
Init.lean feat: port Batteries.WF for executable well-founded fixpoints (#11620) 2025-12-12 18:22:54 +00:00
lakefile.toml.in feat: module system is no longer experimental (#11637) 2025-12-12 21:20:26 +00:00
lean-toolchain
Lean.lean refactor: move error explanation text to the manual (#11688) 2025-12-26 17:14:58 +00:00
lean.mk.in chore: further split libleanshared on Windows to avoid symbol limit (#10136) 2025-08-26 16:01:57 +00:00
Leanc.lean fix: Unicode path support for Lean Windows executables (#10133) 2025-08-27 11:28:55 +00:00
out feat: ac normalization in grind (#10146) 2025-08-27 03:28:30 +00:00
Std.lean chore: more module system fixes and refinements for finishing batteries port (#10819) 2025-10-21 08:19:50 +00:00
stdlib.make.in chore: further split libleanshared on Windows to avoid symbol limit (#10136) 2025-08-26 16:01:57 +00:00
stdlib_flags.h chore: remove comment from wrong stdlib_flags.h (#11646) 2025-12-12 22:59:38 +00:00
version.h.in