Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
We must make sure we do not accidentally change the arity of a join point. The arity is the number of nested lambda expressions. For example, suppose we have ``` let jp := fun (x : unit), t ``` where `jp` is a join point of arity 1, i.e., `t` is not a lambda. All "jumps" will be of the form: `jp ()`. Now, suppose we simplify `t` and it becomes a lambda `fun (y : nat), y`. We should to represent `jp` as ``` let jp := fun (x : unit) (y : nat), y ``` Because we would be changing `jp`'s arity. We have the same problem with `cases_on` applications in LCNF. So, we fix the problem using the same approach: an auxiliary `let`-declaration. The simplified join point above is encoded as ``` let jp := fun (x : unit), let _z := fun (y : nat), y in _z ``` cc @kha This is the bug that I mentioned on slack :) |
||
|---|---|---|
| .github | ||
| bin | ||
| doc | ||
| gen | ||
| images | ||
| lean4-mode | ||
| library | ||
| script | ||
| src | ||
| tests | ||
| .appveyor.yml | ||
| .clang-format | ||
| .codecov.yml | ||
| .gitattributes | ||
| .gitignore | ||
| .travis.yml | ||
| LICENSE | ||
| README.md | ||
| License | Windows | Linux / macOS | Test Coverage | Chat |
|---|---|---|---|---|
![]() |
About
- Homepage
- Theorem Proving in Lean
- Core library
- Change Log
- FAQ
- For HoTT mode, please use Lean2.
Installation
Stable and nightly binary releases of Lean are available on the homepage. For building Lean from source, see the build instructions.
Miscellaneous
- Building Doxygen Documentation:
doxygen src/Doxyfile - Coding Style
- Library Style Conventions
- Git Commit Conventions
- Automatic Builds
- Syntax Highlight Lean Code in LaTeX
- Exporting, and reference type-checkers
