Mirror of https://github.com/leanprover/lean2 in case it ever disappears
Find a file
Leonardo de Moura d4b08fcf96 feat(library/elaborator): be 'lazy' when normalizing terms in the elaborator
Unification constraints of the form

         ctx |- ?m[inst:i v] == T

         and

         ctx |- (?m a1 ... an) == T

are delayed by elaborator because the produce case-splits.
On the other hand, the step that puts terms is head-normal form is eagerly applied.
This is a bad idea for constraints like the two above. The elaborator will put T in head normal form
before executing process_meta_app and process_meta_inst. This is just wasted work, and creates
fully unfolded terms for solvers and provers.

The new test demonstrates the problem. In this test, we mark several terms as non-opaque.
Without this commit, the produced goal is a huge term.

Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2014-02-06 21:08:00 -08:00
doc doc(todo): add another item to todo list 2014-02-06 18:07:06 -08:00
examples/lean feat(frontends/lean): add 'show' expression syntax sugar 2014-02-06 07:50:22 -08:00
script fix(script/demangle_cpptype): process line-by-line, instead of waiting for EOF 2013-09-29 18:36:01 -07:00
src feat(library/elaborator): be 'lazy' when normalizing terms in the elaborator 2014-02-06 21:08:00 -08:00
tests feat(library/elaborator): be 'lazy' when normalizing terms in the elaborator 2014-02-06 21:08:00 -08:00
.gitignore chore(.gitignore): ignore .md.lean files 2013-12-27 16:50:06 -08:00
.travis.osx.yml chore(travis): fix typo 2013-12-26 02:38:16 -05:00
.travis.windows.yml chore(travis): fix typo 2013-12-26 02:38:16 -05:00
.travis.yml chore(travis): fix another typo 2013-12-26 02:57:13 -05:00
LICENSE Add LICENSE file 2013-07-15 18:55:48 -07:00
README.md doc(README): add link to tutorial in the main page 2014-02-02 19:14:02 -08:00

UbuntuOS XWindowsCoverageBuilds / UnitTests / Dynamic Analyses
http://build.leanprover.net

About

Requirements

Installing required packages at

Build Instructions

Miscellaneous