Lean 4 fork for HoTT-compatible kernel extensions (Path types, transport, HITs). Maintained against upstream leanprover/lean4.
Find a file
Leonardo de Moura 5cef84709f refactor(library): avoid auxiliary definitions such as add/mul/le/etc
See Section "Other goodies" at
https://github.com/leanprover/lean/wiki/Refactoring-structures

This commit also improves the support for projections in the
unifier/matcher.

Now, we consider the extra case-split for projections.
Given a projection `proj`, and the constraint `proj s =?= proj t`, we need to try first `s =?= t` and if it fails, then try to reduce.
This is needed in the standard library because we now have constraints such as:
```
@has_le.le ?A ?s ?a ?b  =?=  @has_le.le nat nat.has_add x y
```
If we reduce the right hand side, we get the unsolvable constraint
```
@has_le.le ?A ?s ?a ?b  =?=  nat.le x y
```
Before this change, the constraint was `@le ?A ?s ?a ?b  =?=  @le nat nat.has_add x y`, and we already perform a case-split in this case.
Moreover, projections were eagerly reduced whenever possible.
The extra case-split generates a performance problem in several tests. For example `fib 8 = 34` was timing out.
I worked around this issue by performing the case-split only when the constraint contains meta-variables.
There are also minor issues. Example. `<` is notation for `has_lt.lt`, but `>` is for `gt`.
2017-05-01 08:52:19 -07:00
bin chore(bin/lean-gdb): fix macro pretty-printing 2017-03-06 11:02:50 -08:00
doc chore(doc): remove old todo list 2017-04-16 09:49:21 -07:00
extras chore(extra/latex/*): update to changes in syntax 2017-01-03 11:22:04 -08: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
library refactor(library): avoid auxiliary definitions such as add/mul/le/etc 2017-05-01 08:52:19 -07:00
old_library refactor(gitignore): remove old ignore entries 2016-12-10 08:42:39 -08:00
script chore(script/gen_constants_cpp): make it run from anywhere 2017-03-09 20:30:03 -08:00
src refactor(library): avoid auxiliary definitions such as add/mul/le/etc 2017-05-01 08:52:19 -07:00
tests refactor(library): avoid auxiliary definitions such as add/mul/le/etc 2017-05-01 08:52:19 -07:00
tmp feat(tmp/micro_lenses): experiment with van Laarhoven-style lens 2017-03-11 11:35:02 -08:00
.appveyor.yml chore(.appveyor.yml,.travis.yml): invoke ctest with --output-on-failure 2017-03-27 13:42:08 -07:00
.appveyor.yml.in chore(.appveyor.yml,.travis.yml): invoke ctest with --output-on-failure 2017-03-27 13:42:08 -07:00
.clang-format feat(library/vm/process): add basic process support 2017-03-28 18:08:06 -07:00
.codecov.yml feat(.travis.yml): add codecov 2016-12-02 17:01:58 -08:00
.gitignore chore(.gitignore): ignore VSCode config file 2016-12-18 12:35:25 -08:00
.travis.yml fix(.travis.yml): execute all tests in debug builds 2017-04-03 11:45:11 +02:00
.travis.yml.in fix(.travis.yml): execute all tests in debug builds 2017-04-03 11:45:11 +02:00
LICENSE Add LICENSE file 2013-07-15 18:55:48 -07:00
README.md chore(README.md): remove obsolete mpfr dependency 2017-02-24 21:39:30 +01:00

logo

LicenseWindowsLinux / macOSTest CoverageChat
Codecov Join the gitter chat

About

Requirements

Build Instructions

Miscellaneous