lean4-htt/src/library/blast
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
..
actions feat(library/blast/actions/assert_cc_action): add target_cc_action 2015-12-31 14:53:55 -08:00
backward chore(library/blast/backward): remove unnecessary include 2015-12-28 14:26:18 -08:00
forward feat(library/blast/forward): inst_simp should use the left-hand-side as a pattern (if none is provided by the user) 2015-12-31 20:20:39 -08:00
grinder refactor(library/blast/backward): use priority_queue, make sure head is normalized when building index 2015-12-28 12:26:06 -08:00
simplifier feat(library/blast/simplifier/simplifier_actions): only add symplified hypothesis if it is not "true" 2015-12-31 14:25:38 -08:00
strategies feat(library/blast/strategies/portfolio): add 'rec_simp' 2015-12-31 15:00:38 -08:00
unit refactor(library/blast/simplifier): use priority_queue to store simp/congr lemmas, use name convention used at forward/backward lemmas, normalize lemmas when blast starts, cache get_simp_lemmas 2015-12-28 17:52:57 -08:00
action_result.h feat(library/blast): add action based on congruence closure module 2015-11-19 12:30:45 -08:00
blast.cpp feat(library/blast): do not display inactive hypotheses when displaying failure states 2015-12-30 12:08:33 -08:00
blast.h feat(library/blast): do not display inactive hypotheses when displaying failure states 2015-12-30 12:08:33 -08:00
blast_exception.h feat(library/blast): include strategies failure states in the tactic_exception 2015-12-29 17:14:55 -08:00
blast_tactic.cpp feat(library/blast): include strategies failure states in the tactic_exception 2015-12-29 17:14:55 -08:00
blast_tactic.h feat(library/blast): parse blast tactic and invoke stub 2015-09-25 12:45:16 -07:00
choice_point.cpp refactor(library/blast): add strategy abstract object 2015-11-15 13:12:21 -08:00
choice_point.h fix(library/blast): uninitialized variables 2015-11-18 18:56:19 -08:00
CMakeLists.txt feat(library/blast): add discrimination trees 2015-12-28 09:08:17 -08:00
congruence_closure.cpp refactor(library/blast/simplifier): use priority_queue to store simp/congr lemmas, use name convention used at forward/backward lemmas, normalize lemmas when blast starts, cache get_simp_lemmas 2015-12-28 17:52:57 -08:00
congruence_closure.h feat(library/blast/congruence_closure): avoid unnecessary propagations in the congruence closure module 2015-12-09 12:17:51 -08:00
discr_tree.cpp chore(library/blast): style 2015-12-28 09:08:18 -08:00
discr_tree.h chore(library/blast): style 2015-12-28 09:08:18 -08:00
gexpr.cpp feat(library/blast/backward/backward_action): display lemma name in backward action 2015-12-09 11:07:53 -08:00
gexpr.h refactor(library/blast/backward): use priority_queue, make sure head is normalized when building index 2015-12-28 12:26:06 -08:00
hypothesis.cpp chore(library/blast): remove "leftover" file used in the old blast architecture 2015-12-04 17:34:56 -08:00
hypothesis.h fix(library/blast/hypothesis): incorrect method being invoked 2015-12-05 16:53:47 -08:00
imp_extension.cpp chore(library/blast/imp_extension): fix unused argument warning 2015-12-04 08:34:20 -08:00
imp_extension.h chore(library/blast/imp_extension): style 2015-12-04 08:26:03 -08:00
init_module.cpp feat(library/blast): add discrimination trees 2015-12-28 09:08:17 -08:00
init_module.h feat(library/blast): parse blast tactic and invoke stub 2015-09-25 12:45:16 -07:00
options.cpp refactor(library/blast): move to new tracing infrastructure 2015-12-08 19:37:06 -08:00
options.h refactor(library/blast): move to new tracing infrastructure 2015-12-08 19:37:06 -08:00
proof_expr.cpp refactor(library/blast): get_hypothesis_decl return a reference 2015-11-18 18:20:02 -08:00
proof_expr.h feat(library/blast): add proof_expr thin layer for creating proof terms at blast 2015-11-10 10:50:58 -08:00
revert.cpp refactor(library/blast): make sure all actions return action_result, add macros for simplifying strategy definition 2015-11-18 12:29:43 -08:00
revert.h refactor(library/blast): make sure all actions return action_result, add macros for simplifying strategy definition 2015-11-18 12:29:43 -08:00
state.cpp feat(library/blast): do not display inactive hypotheses when displaying failure states 2015-12-30 12:08:33 -08:00
state.h feat(library/blast): do not display inactive hypotheses when displaying failure states 2015-12-30 12:08:33 -08:00
strategy.cpp feat(library/blast): do not display inactive hypotheses when displaying failure states 2015-12-30 12:08:33 -08:00
strategy.h feat(library/blast): trace strategy name 2015-12-09 17:13:28 -08:00
trace.cpp feat(library/blast): refine trace messages 2015-12-09 18:38:20 -08:00
trace.h feat(library/blast/forward/ematch): add option 'blast.ematch.max_instances' 2015-12-29 20:36:11 -08:00
util.cpp feat(library/blast/unit/unit_propagate): make sure unif_propagate works even if 'not' is marked as '[reducible]' 2015-12-04 16:49:21 -08:00
util.h feat(library/blast/unit/unit_propagate): make sure unif_propagate works even if 'not' is marked as '[reducible]' 2015-12-04 16:49:21 -08:00