Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
This PR fixes an issue where the `extendJoinPointContext` pass can lift join points containing projections to the top level, as siblings of `cases` constructs matching on other projections of the same base value. This prevents the `structProjCases` pass from projecting both at once, extending the lifetime of the parent value and breaking linearity at runtime. This would theoretically be possible to fix in `structProjCases`, but it would require some better infrastructure for handling join points. It's also likely that the IR passes dealing with reference counting would have similar bugs that pessimize the code. For this reason, the simplest thing is to just perform the `structProjCases` pass earlier, which prevents `extendJoinPointContext` from lifting these join points. |
||
|---|---|---|
| .github | ||
| doc | ||
| images | ||
| nix | ||
| releases_drafts | ||
| script | ||
| src | ||
| stage0 | ||
| tests | ||
| .gitattributes | ||
| .gitignore | ||
| .gitpod.Dockerfile | ||
| .gitpod.yml | ||
| .ignore | ||
| CMakeLists.txt | ||
| CMakePresets.json | ||
| CODEOWNERS | ||
| CONTRIBUTING.md | ||
| flake.lock | ||
| flake.nix | ||
| lean-toolchain | ||
| lean.code-workspace | ||
| LICENSE | ||
| LICENSES | ||
| README.md | ||
| RELEASES.md | ||
This is the repository for Lean 4.
About
- Quickstart
- Homepage
- Theorem Proving Tutorial
- Functional Programming in Lean
- Documentation Overview
- Language Reference
- Release notes starting at v4.0.0-m3
- Examples
- External Contribution Guidelines
Installation
See Setting Up Lean.
Contributing
Please read our Contribution Guidelines first.
Building from Source
See Building Lean.