lean4-htt/src
Leonardo de Moura 1cdadba4b2 fix(library/compiler/csimp): type error
@kha This is another instance of a problem we discussed last summer.
I guess there are many more instances like this one that we are not handling.
Recall that we want to preserve types at `csimp` because we eventually
want to allow users to use equational theorems as rewriting rules during
compilation.
However, some of the transformations that `csimp` perform do not
preserve typeability in CIC.
Moreover, some of the optimizations require type inference.

I see the possible long term solutions:

1- Erase types and proofs as soon as possible. The main drawback here is
that we would have to develop an approach for translating Lean theorems
into valid rewriting rules for lambda pure. For example, the following
theorem should not be used as a rewriting rule after we erase types.
```
forall (xs : List Unit) (f : Unit -> Unit), List.map f xs = List.map id xs
```
BTW, I don't want to abandon the idea of using lemmas as rewriting rules in
the compiler.

2- Go over `csimp` and other compiler steps and make sure they work
properly even when `type_checker::infer_type` fails.
2019-06-03 17:36:40 -07:00
..
cmake chore(cmake/Modules/cpplint): disable yet another buggy check 2018-06-06 15:28:44 -07:00
frontends/lean feat(library/private): use environment extension in Lean 2019-06-03 11:50:33 -07:00
init feat(kernel/environment): environment as a Lean object 2019-05-13 12:41:33 -07:00
kernel chore(library/init/lean/environment): remove unnecessary function 2019-06-03 15:17:40 -07:00
library fix(library/compiler/csimp): type error 2019-06-03 17:36:40 -07:00
runtime feat(library/init/data, runtime): remove parray support from runtime, and implement them in Lean using Scala/Clojure Radix trees 2019-06-02 09:18:19 -07:00
shared
shell refactor(kernel/environment,library/private,library/init/lean/environment): move main module name to header 2019-06-03 09:14:23 -07:00
stage0 chore(library/init/lean/environment): remove unnecessary function 2019-06-03 15:17:40 -07:00
tests/util feat(library/init/data, runtime): remove parray support from runtime, and implement them in Lean using Scala/Clojure Radix trees 2019-06-02 09:18:19 -07:00
util feat(library/private): use environment extension in Lean 2019-06-03 11:50:33 -07:00
CMakeLists.txt chore(tests): remove old tests 2019-05-13 12:43:11 -07:00
config.h.in feat(CMakeLists): put configuration options relevant to leanc at config.h 2019-04-27 21:04:41 -07:00
CTestConfig.cmake
CTestCustom.cmake.in
Doxyfile
githash.h.in fix(library): store and validate Lean version of .olean files 2018-01-23 11:14:18 -08:00
memcheck.supp
version.h.in chore(leanpkg/lean_version): recognize nightlies as releases separate from master 2018-03-20 15:14:45 -07:00