Commit graph

5758 commits

Author SHA1 Message Date
Leonardo de Moura
27eea05da9 fix(library/blast/discr_tree): bug in the discrimination tree module 2016-01-06 17:30:44 -08:00
Leonardo de Moura
3c22a9d4e1 feat(library/blast/recursor/recursor_strategy): add new options to control recursor/recursion strategy 2016-01-06 17:30:38 -08:00
Leonardo de Moura
76cebb45f9 feat(library/blast/congruence_closure): add support for 'no_confusion' in the congruence closure module 2016-01-06 17:30:25 -08:00
Leonardo de Moura
cb02d1deae feat(library/blast/congruence_closure): add support for specialized congr lemmas in the congruence closure module 2016-01-06 17:30:20 -08:00
Leonardo de Moura
ef691d6cf5 fix(library/abstract_expr_manager): bug introduced today 2016-01-06 17:30:14 -08:00
Leonardo de Moura
c9930d0a29 feat(library/blast/simplifier/simplifier): subsingleton normalization for application arguments and lambdas 2016-01-06 17:30:08 -08:00
Leonardo de Moura
e7bcb89314 fix(library/simplifier/simplifier): bug in cache_lookup 2016-01-06 17:30:01 -08:00
Leonardo de Moura
14d4ae7e97 chore(library/blast/simplifier/simplifier): remove dead variable 2016-01-06 17:29:54 -08:00
Leonardo de Moura
9fa1a7a01c refactor(abstract_expr_manager): use get_specialization_prefix_size to improve performance of abstract_expr_manager 2016-01-06 17:29:48 -08:00
Leonardo de Moura
d4a5aa6db0 refactor(library/fun_info_manager): improve performance and add get_prefix method 2016-01-06 17:29:41 -08:00
Leonardo de Moura
f3b8aef24c feat(library/fun_info_manager,library/congr_lemma_manager,blast/simplifier): specialized congruence lemmas
We still need a lot of polishing.
2016-01-06 17:29:35 -08:00
Leonardo de Moura
930fcddace feat(kernel/expr): add get_app_args_at_most 2016-01-06 17:29:28 -08:00
Leonardo de Moura
9a1a9f3b5a refactor(library/fun_info_manager): use expr_unsigned_map 2016-01-06 17:29:22 -08:00
Leonardo de Moura
7312dd77b8 refactor(library/congr_lemma_manager): move expr_unsigned_map to separate module 2016-01-06 17:29:16 -08:00
Leonardo de Moura
43c5cbd1bf feat(library/fun_info_manager): more general fun_info_manager 2016-01-06 17:29:10 -08:00
Leonardo de Moura
3ca785b0e7 refactor(library/fun_info_manager): remove dead code 2016-01-06 17:29:02 -08:00
Leonardo de Moura
a992bb46a6 feat(library/fun_info_manager): update interface 2016-01-06 17:28:52 -08:00
Rob Lewis
c0deac6a63 fix(src/emacs): add replace keyword to emacs syntax file 2016-01-05 11:01:00 -05:00
Rob Lewis
a57b7fadfb style(replace_tactic): remove extra whitespace 2016-01-04 15:10:51 -05:00
Rob Lewis
031831f101 feat(library/tactic): add replace tactic 2016-01-04 14:43:31 -05:00
Leonardo de Moura
ba392f504f feat(kernel/expr,library/blast/blast,frontends/lean/decl_cmds): add workaround for allowing users to use blast inside of recursive equations 2016-01-03 21:53:31 -08:00
Leonardo de Moura
4478d570bd chore(library/congr_lemma_manager): fix style 2016-01-03 18:02:50 -08:00
Leonardo de Moura
19ebedd480 feat(library/type_context): improve type_context get_level_core, add virtual method for checking types whenever a metavariable is assigned
We add an example where app_builder fails without these new features.
That is, app_builder fails to solve the unification problem.
2016-01-03 17:58:27 -08:00
Leonardo de Moura
1fc7bbceb2 chore(frontends/lean/builtin_cmds): handle FixedNoParam in the front-end 2016-01-03 15:18:26 -08:00
Leonardo de Moura
fcf532ea67 chore(library/app_builder): fix typo in trace message 2016-01-03 15:16:50 -08:00
Leonardo de Moura
d0fe59ef8a feat(library/congr_lemma_manager): add new kind of congr_arg 2016-01-03 15:10:07 -08:00
Leonardo de Moura
67d49aabd9 chore(library/congr_lemma_manager): document main methods 2016-01-03 14:39:34 -08:00
Leonardo de Moura
66a722ff5a feat(library/unifier): remove "eager delta hack", use is_def_eq when delta-constraint does not have metavariables anymore
The "eager-delta hack" was added to minimize problems in the interaction
between coercions and delta-constraints.
2016-01-03 12:39:32 -08:00
Leonardo de Moura
d02ead320a feat(library/unifier): remove unifier.computation option 2016-01-03 11:00:16 -08:00
Leonardo de Moura
9935cbc3d7 feat(library/blast/blast): communicate assigned metavariables back to tactic framework
We need this feature to be able to solve (input) goals containing
metavariables using blast.
See new test for example.
2016-01-02 20:05:44 -08:00
Leonardo de Moura
56d9b6b0d3 fix(library/blast/blast): convert uref and mref back into tactic metavariables 2016-01-02 19:23:04 -08:00
Leonardo de Moura
d85b4300b1 fix(library/blast/blast): bug at visit_meta_app 2016-01-02 19:08:56 -08:00
Leonardo de Moura
5feef27c2b feat(frontends/lean/notation_cmd): relax restriction on user defined tokens
Before this commit, Lean would forbid new tokens containing '(' or ')'.
We relax this restriction. Now, we just forbid new tokens starting with '(' or ending with ')'.
2016-01-02 13:58:46 -08:00
Leonardo de Moura
4eb2690c32 feat(library/scoped_ext): store set of opened namespaces 2016-01-02 13:35:08 -08:00
Leonardo de Moura
155df48665 feat(library): remove decl_stats
We are not using (and will not use) this module in the blast proof procedures
2016-01-02 13:00:43 -08:00
Leonardo de Moura
3c564fcc55 fix(library/user_recursors): 'print recursor-lemma' command 2016-01-01 18:12:12 -08:00
Leonardo de Moura
0963ce336f feat(library/blast): add 'grind' and 'grind_simp' blast strategies
The use [intro] [intro!] [elim] [simp] lemmas.
The [simp] lemmas are only used by grind_simp.
2016-01-01 17:32:13 -08:00
Leonardo de Moura
57c9ced111 feat(library/blast): add fail_action and fail_strategy helper functions 2016-01-01 17:18:05 -08:00
Leonardo de Moura
cd7708d556 feat(library/blast/backward/backward_strategy): add extensible backward chaining strategy 2016-01-01 17:07:15 -08:00
Leonardo de Moura
43f0183ce9 feat(library/blast/backward/backward_strategy): allow user to control the number of nested backward chaining steps 2016-01-01 16:46:49 -08:00
Leonardo de Moura
ac9d6c2021 refactor(library/data/bool): cleanup bool proofs and fix bxor definition 2016-01-01 13:52:42 -08:00
Leonardo de Moura
52ec7e6d57 feat(library/blast/recursor): add 'blast.recursor.max_rounds' options and iterative deepening for recursor_strategy 2016-01-01 13:09:37 -08:00
Leonardo de Moura
1bb21d202b refactor(library/blast): move recursor action and strategy to its own directory 2016-01-01 12:49:49 -08:00
Leonardo de Moura
317c32a7e2 fix(library/blast/state): avoid duplicated names at state::to_goal 2016-01-01 00:10:54 -08:00
Leonardo de Moura
712e19e22a fix(library/blast/forward/ematch): bug in the ematching procedure 2015-12-31 21:26:44 -08:00
Leonardo de Moura
54f2c0f254 feat(library/blast/forward): inst_simp should use the left-hand-side as a pattern (if none is provided by the user)
The motivation is to reduce the number of instances generated by ematching.

For example, given

   inv_inv:  forall a, (a⁻¹)⁻¹ = a

the new heuristic uses ((a⁻¹)⁻¹) as the pattern.
This matches the intuition that inv_inv should be used a simplification
rule.

The default pattern inference procedure would use (a⁻¹). This is bad
because it generates an infinite chain of instances whenever there is a
term (a⁻¹) in the proof state.
By using (a⁻¹), we get
   (a⁻¹)⁻¹ = a
Now that we have (a⁻¹)⁻¹, we can match again and generate
   ((a⁻¹)⁻¹)⁻¹ = a⁻¹
and so on
2015-12-31 20:20:39 -08:00
Leonardo de Moura
03f9e9acb0 feat(library/blast/forward): display lemma name when printing instance 2015-12-31 18:13:59 -08:00
Leonardo de Moura
c3dfabf741 feat(library/blast/strategies/portfolio): add 'rec_simp'
recursors followed by simplification
2015-12-31 15:00:38 -08:00
Leonardo de Moura
4134fdd925 feat(library/blast/strategies/rec_strategy): give priority to user defined recursors 2015-12-31 14:55:00 -08:00
Leonardo de Moura
76677c4535 feat(library/blast/actions/assert_cc_action): add target_cc_action 2015-12-31 14:53:55 -08:00