lean4-htt/library/init/native
Leonardo de Moura 9afb53fad5 feat(kernel/expr): allow metavariables to have user-facing names
We need this feature for:
1) Defining nonlinear search patterns. Example: (?m <= ?m + 1)
2) Preprocessing recursive equations and support the pattern
refinement approach used in Agda. Example: in Agda, they accept
```
def append {A : Type} : Π (m n : nat), Vec A m -> Vec A n -> Vec A (m + n)
| m n nil            ys := ys
| m n (cons m' x xs) ys := cons x (append m' n xs ys)
```
These equations have to be refined. For example, `m` has to be
replaced with `0` (in the first equation), and `succ m'` in the
second. To implement this kind of refinement, we need to convert
the pattern variables (local constants) into metavariables during
elaboration. Then, the unassigned metavariables become local constants
again. This preprocessing step will fix some of the issues on #1594.
To completely fix #1594, we will need yet another preprocessing step
which will implement "complete transition" used in the equation
compiler before we start elim_match.cpp
2017-07-16 07:16:41 -07:00
..
anf.lean feat(library/init/data/unsigned): add basic unsigned operations 2017-03-05 16:14:16 -08:00
builtin.lean feat(*): C++ code generator 2016-12-05 16:11:41 -08:00
cf.lean feat(frontends/lean): allow local decls to shadow namespaces 2017-03-29 16:09:45 -07:00
config.lean chore(frontends/lean): remove several command aliases 2017-03-09 16:49:03 -08:00
default.lean feat(kernel/expr): allow metavariables to have user-facing names 2017-07-16 07:16:41 -07:00
format.lean fix(library): expr, level, hash_map, rb_map has_repr instances should be has_to_string since they do not produce results that can be parsed by Lean 2017-06-18 18:33:27 -07:00
internal.lean feat(*): C++ code generator 2016-12-05 16:11:41 -08:00
ir.lean chore(library/inductive_compiler/nested.cpp): prove all theorems in C++ 2017-05-04 16:34:32 -07:00
pass.lean refactor(library): has_to_string ==> has_repr 2017-06-18 18:29:19 -07:00
procedure.lean fix(library): expr, level, hash_map, rb_map has_repr instances should be has_to_string since they do not produce results that can be parsed by Lean 2017-06-18 18:33:27 -07:00
result.lean feat(library/tactic/dsimplify): new configuration options for dsimp 2017-07-02 18:26:03 -07:00
util.lean feat(frontends/lean/elaborator): coercion from (decidable) Prop to bool 2017-02-14 18:41:32 -08:00