Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
@Kha the patterns at `Binders.lean` for let-expressions are not matched correctly by `match_syntax`. The problem is that we "reuse" kinds here: ```lean def letIdDecl : Parser := nodeWithAntiquot "letDecl" `Lean.Parser.Term.letDecl $ try (letIdLhs >> " := ") >> termParser def letPatDecl : Parser := node `Lean.Parser.Term.letDecl $ try (termParser >> pushNone >> optType >> " := ") >> termParser def letEqnsDecl : Parser := node `Lean.Parser.Term.letDecl $ letIdLhs >> matchAlts false def letDecl := letIdDecl <|> letPatDecl <|> letEqnsDecl ``` This is a bad hack for implementing the `where` macro. I will remove it, and rewrite the code above as ```lean def letIdDecl := parser! try (letIdLhs >> " := ") >> termParser def letPatDecl := parser! try (termParser >> pushNone >> optType >> " := ") >> termParser def letEqnsDecl := parser! letIdLhs >> matchAlts false def letDecl := parser! letIdDecl <|> letPatDecl <|> letEqnsDecl ``` Remark: we need the `letDecl` kind to be able to implement the `where` macro. I will do it tomorrow because it is a staging nightmare. |
||
|---|---|---|
| .github | ||
| doc | ||
| images | ||
| lean4-mode | ||
| nix | ||
| script | ||
| src | ||
| stage0 | ||
| tests | ||
| tmp | ||
| .clang-format | ||
| .codecov.yml | ||
| .gitattributes | ||
| .gitignore | ||
| CMakeLists.txt | ||
| default.nix | ||
| LICENSE | ||
| README.md | ||
| shell.nix | ||
We are currently developing Lean 4. Lean 3 is still the latest official release. This repository contains work in progress.
Important. Unless you are one of our collaborators
- We strongly suggest you use Lean 3.
- Pull requests are not welcome.
- New issues are not welcome, and will be closed without any feedback.