lean4-htt/src/library/tactic/smt
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
..
CMakeLists.txt feat(library/tactic/smt): perform "unit propagation" in the congruence closure module 2017-01-02 18:49:26 -08:00
congruence_closure.cpp feat(library/tactic/smt/congruence_closure): add builtin support for (@ne A a b) 2017-05-26 17:06:22 -07:00
congruence_closure.h fix(library/tactic/smt/congruence_closure): relation used to implement congruence tables was not transitive 2017-03-17 16:04:41 -07:00
congruence_tactics.cpp chore(frontends/lean,library/tactic): remove old tactic_state functions 2017-02-17 15:41:58 +01:00
congruence_tactics.h refactor(library/tactic/smt): move ematch Lean bindings to ematch.cpp 2017-01-05 10:35:59 -08:00
ematch.cpp refactor(library): avoid auxiliary definitions such as add/mul/le/etc 2017-05-01 08:52:19 -07:00
ematch.h fix(library/tactic/smt/ematch): fix compiler warning 2017-04-27 16:04:18 -07:00
hinst_lemmas.cpp feat(kernel/expr): allow metavariables to have user-facing names 2017-07-16 07:16:41 -07:00
hinst_lemmas.h feat(library/tactic/smt/smt_state): add ematch_using tactic 2017-01-06 00:24:25 -08:00
init_module.cpp feat(library/init/meta): smt_tactic skeleton 2016-12-31 18:22:23 -08:00
init_module.h
smt_state.cpp feat(library/init/meta/simp_tactic): add option for reducing [reducible] definitions at dsimp, and to_unfold : list name similar to the one in the simp tactic 2017-07-03 13:28:46 -07:00
smt_state.h chore(library/tactic/smt/smt_state): remove unnecessary include 2017-07-05 21:03:49 -07:00
theory_ac.cpp feat(library/tactic/smt/congruence_closure): make sure congruence closure module does not assign metavariables when using is_def_eq 2017-03-17 13:48:09 -07:00
theory_ac.h feat(library/tactic/smt/ematch): skeleton for AC support 2017-01-08 23:53:57 -08:00
util.cpp feat(library/tactic/smt): add get_config and use it to implement slift 2017-02-18 17:52:45 -08:00
util.h