Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
Find a file
Joachim Breitner 8655f7706f
refactor: structural recursion: prove .eq_def directly (#10606)
This PR changes how Lean proves the equational theorems for structural
recursion. The core idea is to let-bind the `f` argument to `brecOn` and
rewriting `.brecOn` with an unfolding theorem. This means no extra case
split for the `.rec` in `.brecOn` is needed, and `simp` doesn't change
the `f` argument which can break the definitional equality with the
defined function. With this, we can prove the unfolding theorem first,
and derive the equational theorems from that, like for all other ways of
defining recursive functions.

Backs out the changes from #10415, the old strategy works well with the
new goals.

Fixes #5667
Fixes #10431
Fixes #10195
Fixes #2962
2025-10-07 12:53:09 +00:00
.github chore: CI: bump softprops/action-gh-release from 2.3.2 to 2.3.3 (#10646) 2025-10-07 11:42:02 +00:00
doc test: improve language server test coverage (#10574) 2025-09-30 11:15:03 +00:00
images
releases_drafts chore: updates to release_checklist.md (#7817) 2025-04-04 03:45:36 +00:00
script chore: Modulize: put section below first module doc (#10693) 2025-10-07 09:10:42 +00:00
src refactor: structural recursion: prove .eq_def directly (#10606) 2025-10-07 12:53:09 +00:00
stage0 refactor: structural recursion: prove .eq_def directly (#10606) 2025-10-07 12:53:09 +00:00
tests refactor: structural recursion: prove .eq_def directly (#10606) 2025-10-07 12:53:09 +00:00
.gitattributes fix: mark doc parser tests as eol=lf (#10344) 2025-09-11 11:19:01 +00:00
.gitignore feat: further release automation (#9092) 2025-06-30 05:44:10 +00:00
.gitpod.Dockerfile chore: add gitpod configuration (#6382) 2024-12-15 21:38:13 +00:00
.gitpod.yml chore: add gitpod configuration (#6382) 2024-12-15 21:38:13 +00:00
.ignore
CMakeLists.txt chore: make USE_LAKE the default (#10016) 2025-08-21 11:43:25 +00:00
CMakePresets.json chore: fix reldebug preset (#8051) 2025-04-23 10:05:11 +00:00
CODEOWNERS chore: make datokrat code owner for iterators, ranges and slices (#9667) 2025-08-01 17:34:43 +00:00
CONTRIBUTING.md doc: triage 2024-07-26 18:24:06 +02:00
flake.lock chore: robustify Nix shell (#8141) 2025-04-28 15:08:32 +00:00
flake.nix chore: remove broken Nix build (#9910) 2025-08-14 08:31:39 +00:00
lean-toolchain doc: VS Code dev setup (#2961) 2023-11-30 08:35:03 +00:00
lean.code-workspace feat: scripts/Modulize.lean (#10460) 2025-09-24 11:40:17 +00:00
LICENSE
LICENSES feat: ship cadical (#4325) 2024-08-23 09:13:27 +00:00
README.md doc: update URLs that are currently pointing to redirects (#10397) 2025-09-17 15:50:07 +00:00
RELEASES.md chore: updates to release_checklist.md (#7817) 2025-04-04 03:45:36 +00:00

This is the repository for Lean 4.

About

Installation

See Install Lean.

Contributing

Please read our Contribution Guidelines first.

Building from Source

See Building Lean.