Commit graph

1027 commits

Author SHA1 Message Date
Leonardo de Moura
258fb522d3 feat(library/tactic/smt): add generation heuristic to control matching loops 2017-01-24 22:46:45 -08:00
Leonardo de Moura
477ffd1bc7 fix(library/tactic/smt): make sure a partially applied terms can be used to ematch terms with "more arguments" 2017-01-24 19:25:00 -08:00
Leonardo de Moura
434ada7dcc chore(library/vm,library/tactic): add missing override 2017-01-24 16:19:36 -08:00
Leonardo de Moura
ac6bfce01c feat(library/tactic/smt/congruence_closure): improve propagation for beta reduction in the congruence closure module 2017-01-24 12:09:37 -08:00
Leonardo de Moura
28ce1e6d2b fix(library/tactic/simplify): make sure a partially applied lhs can be used to rewrite terms with "more arguments" in simp
See discussion at issue #1331
2017-01-23 19:53:49 -08:00
Leonardo de Moura
f60bbb5fcb fix(library/tactic/simp_lemmas): refl_lemma_rewrite, make sure a partially applied lhs can be used rewrite terms with "more arguments" 2017-01-23 19:37:35 -08:00
Leonardo de Moura
418d62ff48 fix(library/tactic/rewrite_tactic): fixes #1277 2017-01-23 16:34:07 -08:00
Leonardo de Moura
2ca2920284 fix(library/tactic/simplify): relax test
We only need to check whether the resulting expression does not contain
temporary metavariables introduced by the simplifier.
It is ok if it contains regular metavariables that were already in the goal.

This fixes the issue reported at
https://groups.google.com/forum/#!topic/lean-user/3qzchWkut0g
2017-01-23 09:59:06 -08:00
Leonardo de Moura
7a6b9e193c feat(library/vm, frontends/lean/info_manager): add thread safe vm_obj wrapper, and use it to store arbitrary vm thunks in the info_manager 2017-01-21 22:38:33 -08:00
Leonardo de Moura
37bc2133ec fix(library/tactic/dsimplify): make sure dsimp only unfold reducible constants when matching
fixes #1327
2017-01-21 22:38:17 -08:00
Leonardo de Moura
0913a7e719 feat(library/tactic/dsimplify): add trace msgs for dsimp 2017-01-21 03:12:28 -08:00
Leonardo de Moura
e8839cbcdc feat(library/app_builder): add mk_eq_mpr that removes unnecessary propext 2017-01-20 20:27:41 -08:00
Leonardo de Moura
4de71cadfa feat(library/init/meta): expose additional app_builder tactics 2017-01-20 20:27:07 -08:00
Leonardo de Moura
694e6f47dc fix(library/init/meta/smt/ematch,library/tactic/simp_lemmas): trick for adding equations of a definition to a simp/hinst lemma set
Before this commit, if we declared an equational lemma using 'def',
then it would not be correctly added to the simp/hinst lemma set.
The new test exposes the problem.
2017-01-18 02:05:04 -08:00
Leonardo de Moura
67226269b4 feat(library/tactic/simp_lemmas): convenient way of adding equational lemmas of a definition to a simp set 2017-01-14 22:16:16 -08:00
Leonardo de Moura
05d86e49ca feat(library/init/meta/smt): add intros variants for smt_tactic 2017-01-13 16:13:37 -08:00
Leonardo de Moura
db646dda89 fix(library/tactic/smt/smt_state): forgot to set zeta option 2017-01-13 13:33:47 -08:00
Leonardo de Moura
c1ecaf4edd feat(library/tactic/smt/smt_state): do not apply intros automatically in begin[smt]...end blocks 2017-01-12 21:49:17 -08:00
Leonardo de Moura
3967cd28fa fix(library/vm/vm): curr_fn() may not be available 2017-01-12 11:47:45 -08:00
Leonardo de Moura
acef1efb86 fix(frontends/lean/pp,library/equations_compiler,library/tactic/smt/congruence_closure): bug at to_char function 2017-01-11 23:44:25 -08:00
Leonardo de Moura
1bb5b2ec01 feat(library/tactic/simp_lemmas): do not pretty print bizarre "perm" flag 2017-01-11 13:48:11 -08:00
Leonardo de Moura
cd947e263a fix(library/tactic/smt/congruence_closure): nat numerals do not have a canonical representation 2017-01-10 11:26:50 -08:00
Leonardo de Moura
d987df3db9 feat(library/tactic/smt): allow propositions without universal quantifiers to be tagged as hinst_lemmas 2017-01-10 11:24:27 -08:00
Leonardo de Moura
c726f19d32 fix(library/tactic/smt/ematch): warning 2017-01-09 19:28:36 -08:00
Leonardo de Moura
3acdcaef2c fix(library/tactic/smt/smt_state): ematch_using should not fail when a ground fact was added but no instance 2017-01-09 19:24:13 -08:00
Leonardo de Moura
5d750ba0a4 fix(library/tactic/tactic_state): closes #1293 2017-01-09 16:23:02 -08:00
Leonardo de Moura
694bb5c7b8 feat(library/tactic/smt/ematch): skeleton for AC support 2017-01-08 23:53:57 -08:00
Leonardo de Moura
0a6a09fb3a fix(library/tactic/smt/hinst_lemmas): pattern normalization issue 2017-01-08 23:35:39 -08:00
Leonardo de Moura
5ba414700f fix(library/tactic/smt/smt_state): canonize at intros 2017-01-08 19:31:04 -08:00
Leonardo de Moura
26949db4f1 fix(library/tactic/smt/smt_state): remove auxiliary hypotheses added by the equation compiler 2017-01-08 10:36:38 -08:00
Leonardo de Moura
9d273d924f fix(library/tactic/smt/congruence_closure): must check whether constructors have the same type or not 2017-01-08 00:36:57 -08:00
Leonardo de Moura
8a12c834ca fix(library/tactic/smt/ematch): ematch should not use app_builder since its type_context is already in tmp_mode 2017-01-07 17:06:12 -08:00
Leonardo de Moura
de60233ef1 fix(library/tactic/smt/congruence_closure): subsingleton propagation was introducing non canonical instances 2017-01-07 16:16:36 -08:00
Leonardo de Moura
8069872861 fix(library/tactic/backward/backward_chaining): bug in back_chaining tactic 2017-01-07 11:19:03 -08:00
Leonardo de Moura
94f16d1e44 refactor(library/tactic): move defeq_canonizer::state to tactic_state
It was being stored in the environment before. This was very hackish,
and it was producing a series of unnecessary environment updates, and
thread local caches invalidations.

The new test tests/lean/run/heap.lean is 5x-6x faster after this commit.
2017-01-07 10:17:51 -08:00
Leonardo de Moura
8c652600dd feat(library/tactic/smt/smt_state): ematch tactics fail if no instance is produced
The goal is to avoid nontermination of (repeat {ematch}) when the goal
is not provable. Of course, if there is a matching loop, it will still loop.
2017-01-06 21:20:01 -08:00
Leonardo de Moura
d81acfc44a feat(library/tactic/smt/smt_state): use eta reduction in the smt preprocessor 2017-01-06 20:23:41 -08:00
Leonardo de Moura
c29a2bdac9 feat(library/init/meta/tactic): add eta reduction tactic 2017-01-06 19:56:10 -08:00
Leonardo de Moura
5e3f26ec95 feat(library/tactic/smt/congruence_closure): propagate not_exists 2017-01-06 14:00:36 -08:00
Leonardo de Moura
db70c78704 feat(library/equations_compiler): make sure automatically generated equational lemmas use internal names 2017-01-06 11:40:34 -08:00
Leonardo de Moura
15eaf30192 feat(library/tactic/smt/smt_state): allow user to provide a function ("to be unfolded") in the ematch_using tactic 2017-01-06 00:33:58 -08:00
Leonardo de Moura
7e4b79b221 feat(library/tactic/smt/smt_state): add ematch_using tactic 2017-01-06 00:24:25 -08:00
Leonardo de Moura
6f328071ff feat(library/tactic/smt/congruence_closure): basic support for beta-reduction 2017-01-05 23:36:14 -08:00
Leonardo de Moura
0a2f7555b7 feat(library/tactic/smt/congruence_closure): improve pp_eqc 2017-01-05 20:46:36 -08:00
Leonardo de Moura
4a76579cd0 feat(library/tactic/smt): add tactics for getting/setting ematching lemmas 2017-01-05 20:35:57 -08:00
Leonardo de Moura
5723b63afe feat(library/tactic/smt/smt_state): add new tracing for smt 2017-01-05 18:47:42 -08:00
Leonardo de Moura
044fe965da fix(library/tactic/unfold_tactic): failed to unfold prefix 2017-01-05 18:01:19 -08:00
Leonardo de Moura
b18b49dd6b feat(library/tactic/smt/smt_state): add tactic for adding equational lemmas for a definition 2017-01-05 15:47:58 -08:00
Leonardo de Moura
3742d6573d feat(library/tactic/smt/smt_state): add preprocess tactic 2017-01-05 13:43:50 -08:00
Leonardo de Moura
f008e623e9 feat(library/tactic/smt/smt_state): improve pretty printer for smt state 2017-01-05 13:12:15 -08:00