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× | |
||
|---|---|---|
| .. | ||
| meta_simp_1.lean | ||
| meta_simp_2.lean | ||
| simp_1.lean | ||
| simp_2.lean | ||