@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. |
||
|---|---|---|
| .. | ||
| bench | ||
| compiler | ||
| ir | ||
| lean | ||
| playground | ||