Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
Find a file
Leonardo de Moura a7d08d2f3d feat(kernel/inductive/inductive): dependent elimination for inductive predicates
In Lean4, we will not generate non dependent recursors for inductive
predicates. The main goal is to make the shape of the automatically
generated recursors more uniform. The non uniform representation is
leftover from Lean2. In Lean2, we wanted to support different kernels
with different features. For example: we could create proof relevant
kernels, no impredicative universe, etc.
Recall that, in a kernel with an impredicative Prop and no proof
irrelevance, inductive predicates without dependent elimination are
weaker that inductive predicates with dependent elimination.
When proof irrelevance is enabled, we can generate the dependent
recursor from the non dependent one. Actually, the module drec.cpp
generates the dependent recursor.
Now, we only support one kind of kernel, and it doesn't make sense
anymore to generate non dependent recursors for inductive predicates.
This would only produce an unnecessary asymmetry on the inductive
datatype module.

Remark: we had to create non dependent recursors to help the elaborator.
This can be avoid if we improve the elaborator. I will do that in the
new elaborator implemented in Lean.

Remark: equation lemmas are broken for definitions that pattern match on
nested inductive datatypes. The problem is the super messy
`prove_eq_rec_invertible_aux` function. This function will not be needed
after I finish the new inductive datatype support in the kernel.

cc @kha
2018-06-12 13:03:26 -07:00
.github chore(.github/CONTRIBUTING): fix typos and URLs 2017-10-30 16:23:22 +01:00
bin chore(bin/lean-gdb.py): fix lean::name pretty printer and add lean::obj_list pretty printer 2018-06-06 15:36:28 +02:00
doc chore(script/prepare-commit-msg): remove file extension, guess change type 2018-06-12 17:39:59 +02:00
extras/latex chore(extras/depgraph): remove leandeps 2017-07-15 02:27:17 -07:00
gen chore(runtime): lean_obj.* ==> object.* 2018-05-20 10:17:15 -07:00
images chore(CMakeLists.txt): move Lean logo to make sure we can test leanemacs without installing Lean 2015-01-31 17:38:49 -08:00
leanpkg chore(leanpkg): delete 2018-04-10 12:43:17 -07:00
library feat(kernel/inductive/inductive): dependent elimination for inductive predicates 2018-06-12 13:03:26 -07:00
old_tests/tests feat(frontends/lean/definition_cmds): elaborate a def's type separately when explicit return type is given 2018-04-20 09:59:09 -07:00
packages chore(script/test_registry): Replace with leanpkg. Execute in every artifact-producing build configuration. 2017-12-20 14:01:45 -08:00
script chore(script/prepare-commit-msg): remove file extension, guess change type 2018-06-12 17:39:59 +02:00
src feat(kernel/inductive/inductive): dependent elimination for inductive predicates 2018-06-12 13:03:26 -07:00
tests chore(tests/lean/lisp): speed up test 2018-06-12 17:39:59 +02:00
tmp chore(tmp/lean4.md): moved to google docs 2018-03-20 17:26:43 -07:00
.appveyor.yml chore(.appveyor,.travis): disable leanpkg registry tests 2018-04-12 18:32:20 +02:00
.clang-format feat(library/vm/process): add basic process support 2017-03-28 18:08:06 -07:00
.codecov.yml fix(.codecov.yml): do not fail github ci if coverage drops by 0.01% 2017-06-25 10:35:02 +02:00
.gitattributes chore(.gitattributes): use union merge strategy for doc/changes.md 2017-12-11 12:49:10 +01:00
.gitignore chore(.gitignore): ignore *.produced.out files 2018-05-01 08:43:46 -07:00
.travis.yml chore(.travis.yml): trigger AppVeyor nightly build from Travis 2018-04-13 16:44:27 +02:00
LICENSE Add LICENSE file 2013-07-15 18:55:48 -07:00
README.md chore(README): point CI links to lean4 branch 2018-04-12 13:50:42 +02:00

logo

LicenseWindowsLinux / macOSTest CoverageChat
Codecov Join the Zulip chat

About

Installation

Stable and nightly binary releases of Lean are available on the homepage. For building Lean from source, see the build instructions.

Miscellaneous

Roadmap