Commit graph

5448 commits

Author SHA1 Message Date
Daniel Selsam
f72da014d4 feat(library/blast/fusion): refactor 2015-11-16 09:13:07 -08:00
Daniel Selsam
d852be0d79 feat(library/blast/simplifier): option for fusing 2015-11-16 09:12:29 -08:00
Leonardo de Moura
db59c6829c feat(library/blast): add basic support for non-recursive recursors/eliminators in the simple_strategy, fix bug at recursor_action 2015-11-15 18:39:12 -08:00
Leonardo de Moura
a545860aa1 feat(library/blast/intros_action): apply head_beta_reduce at intros 2015-11-15 18:14:12 -08:00
Leonardo de Moura
2e057477ef feat(library/blast/recursor_action): ignore type class instances in the recursor action 2015-11-15 18:04:08 -08:00
Leonardo de Moura
24ed427c2f feat(library/blast): add "recursor" (aka elimination/induction) action 2015-11-15 18:00:32 -08:00
Leonardo de Moura
9e8627380a chore(library/blast/simple_strategy): fix style 2015-11-15 15:08:01 -08:00
Leonardo de Moura
1308c7c4e2 feat(library/blast): add action for not(a ~ a) when ~ is a reflexive relation 2015-11-15 15:00:25 -08:00
Leonardo de Moura
96bc8ac208 fix(library/relation_manager): typo 2015-11-15 14:59:21 -08:00
Leonardo de Moura
ffd0c2b09a refactor(library/blast/simple_strategy): eliminate duplicated code 2015-11-15 14:30:24 -08:00
Leonardo de Moura
2549e49e72 feat(library/blast): add priority_queue for hypotheses we want to eliminate (apply recursion over) 2015-11-15 13:32:43 -08:00
Leonardo de Moura
4cd5e18bd0 refactor(library/blast): add strategy abstract object 2015-11-15 13:12:21 -08:00
Leonardo de Moura
bae37d287d fix(library/blast/state): bad style warnings 2015-11-15 12:38:07 -08:00
Leonardo de Moura
ff73fb22fb feat(library/user_recursors): store whether recursor is recursive or not 2015-11-15 12:37:35 -08:00
Leonardo de Moura
e18e4e3200 fix(library/user_recursors): bug at get_num_minors 2015-11-15 11:48:34 -08:00
Leonardo de Moura
eae26cdfae feat(library/user_recursors): add get_num_minors 2015-11-15 11:35:55 -08:00
Leonardo de Moura
ccdaa524f7 fix(library/relation_manager): bad style warnings 2015-11-15 11:35:20 -08:00
Leonardo de Moura
fd41a4f76d feat(library/blast): add simplify_target action 2015-11-14 16:18:12 -08:00
Leonardo de Moura
6a554f6ba7 fix(library/blast/simple_actions): missing include 2015-11-14 15:41:54 -08:00
Leonardo de Moura
4d68e2a520 feat(library,hott): add eq.mpr and eq.mp lemmas 2015-11-14 15:40:47 -08:00
Leonardo de Moura
b5db77961d feat(library/blast): add "trivial" action 2015-11-14 15:02:14 -08:00
Leonardo de Moura
2ba9979822 feat(library/relation_manager): add helper procedures 2015-11-14 14:11:52 -08:00
Leonardo de Moura
0803db21d3 refactor(library/blast): add "_action" suffix to files defining actions 2015-11-14 13:22:12 -08:00
Leonardo de Moura
9921228dd5 feat(library/blast): add simp_rule_sets to branch 2015-11-14 13:16:00 -08:00
Leonardo de Moura
0f4e59a84f feat(library/blast): add "no_confusion" action 2015-11-13 18:19:05 -08:00
Leonardo de Moura
29d472788f feat(library/blast/subst): avoid unnecessary proof step 2015-11-13 16:31:07 -08:00
Leonardo de Moura
3849aff674 fix(library/blast/subst): bug in subst action, add hypothesis_idx_buffer_set (helper class), refine revert_action interface 2015-11-13 16:10:25 -08:00
Leonardo de Moura
33036befc6 fix(library/blast/intros): corner case 2015-11-13 15:25:55 -08:00
Leonardo de Moura
6c038626f8 fix(library/blast/simple_strategy): tracing 2015-11-13 15:22:09 -08:00
Leonardo de Moura
ca4c078089 feat(library/blast): add "subst" action 2015-11-13 15:21:26 -08:00
Leonardo de Moura
cc4608a392 feat(library/blast): add "revert" auxiliary action 2015-11-13 14:15:48 -08:00
Leonardo de Moura
92a7c38260 feat(kernel/expr): add mk_app that takes a list of arguments 2015-11-13 14:01:15 -08:00
Leonardo de Moura
950f9ff79f feat(util/rb_tree): buffer => rb_tree 2015-11-13 14:00:35 -08:00
Leonardo de Moura
0dd6d6b140 feat(library/blast): avoid default name when creating hypotheses 2015-11-13 13:13:48 -08:00
Leonardo de Moura
bc8c5a3f68 feat(library/blast): basic tracing for blast 2015-11-13 13:05:20 -08:00
Leonardo de Moura
2889ec5870 feat(library/blast/state): add methods for deleting hypotheses 2015-11-13 11:59:34 -08:00
Leonardo de Moura
0a25652885 feat(library/blast/intros): intros is now a silent step. 2015-11-13 10:55:15 -08:00
Leonardo de Moura
4aa20fcff0 feat(library/blast/state): add support for "silent" proof steps. 2015-11-13 10:54:10 -08:00
Leonardo de Moura
2e32cf51f9 feat(library/blast/state): do not track dependecies to values 2015-11-13 10:38:25 -08:00
Leonardo de Moura
a7fdf5cc73 fix(library/blast/blast): avoid unnecessary calls to set_local_instances
This was producing a performance problem since the cache is invalidated/flushed
whenever we call this method.
2015-11-13 10:08:29 -08:00
Daniel Selsam
1276f2f050 feat(library/blast/simplifier): struct for cache key 2015-11-12 21:21:52 -08:00
Daniel Selsam
f17320eccf fix(library/abstract_expr_manager): remove weight and lt 2015-11-12 21:21:52 -08:00
Daniel Selsam
4e85d59785 style(library/abstract_expr_manager): whitespace 2015-11-12 21:21:52 -08:00
Daniel Selsam
3703938e55 feat(library/abstract_expr_manager): compare exprs ignoring subsingletons 2015-11-12 21:21:51 -08:00
Daniel Selsam
031979cb49 feat(library/blast/simplifier): take simp_rule_sets as argument 2015-11-12 21:20:16 -08:00
Rob Lewis
44a099f6f1 feat(norm_num): performance and style fixes 2015-11-12 20:53:37 -08:00
Rob Lewis
4bf0519843 feat(norm_num): numeral normalizer works for +, -, *, / 2015-11-12 20:53:37 -08:00
Rob Lewis
616450be64 feat(library/norm_num): extend norm_num to handle subtraction 2015-11-12 20:53:37 -08:00
Leonardo de Moura
8f378db661 feat(library/blast): add normalize procedure to blast API 2015-11-12 20:42:58 -08:00
Leonardo de Moura
e1f81cfdcd feat(library/type_context): add normalizer for type_context 2015-11-12 20:31:36 -08:00
Leonardo de Moura
d9816b6e21 fix(library/type_context): avoid errors in the infer type method due to opaque constants 2015-11-12 20:04:46 -08:00
Leonardo de Moura
9aaa2d0991 feat(frontends/lean): add new command for testing new congruence lemmas
Remark: #congr_simp is the old command, and #congr is the new one.
2015-11-12 18:55:25 -08:00
Leonardo de Moura
1d1cd0fc24 feat(library/congr_lemma_manager): add congruence lemma for normalization and congruence closure 2015-11-12 18:54:12 -08:00
Leonardo de Moura
15cd92f89f fix(library/type_context): methods assign and force_assign were not processing postponed constraints 2015-11-12 18:52:31 -08:00
Leonardo de Moura
1e436b8b3e fix(library/blast/state): incorrect assertions 2015-11-12 16:28:09 -08:00
Leonardo de Moura
98f91931bf fix(library/blast/state): compilation errors 2015-11-12 16:25:59 -08:00
Leonardo de Moura
6eef52196e feat(library/blast): add gexpr "generalized expressions" 2015-11-11 16:11:51 -08:00
Leonardo de Moura
5ceac83b6a feat(frontends/lean/elaborator): restrict the number of places where coercions are considered
We do not consider coercions around meta-variables anymore.
2015-11-11 12:37:19 -08:00
Leonardo de Moura
fa3baed701 feat(frontends/lean): add new option (elaborator.coercions) for disabling coercions 2015-11-11 11:57:44 -08:00
Leonardo de Moura
9bedbbb739 refactor(library,hott): remove coercions between algebraic structures
They are classes, and mixing coercion with type class resolution is a
recipe for disaster (aka counterintuitive behavior).
2015-11-11 11:57:44 -08:00
Leonardo de Moura
fee0cff295 feat(library/blast): add simple indexing data-structure for active hypotheses 2015-11-11 00:02:47 -08:00
Leonardo de Moura
41e14fddf8 feat(library/head_map): support local name in the head_map 2015-11-10 20:02:31 -08:00
Leonardo de Moura
bd06bf9fb1 doc(library/blast): document action_result 2015-11-10 17:49:41 -08:00
Leonardo de Moura
48eb6cb138 refactor(library/blast/state): simplify state 2015-11-10 17:27:39 -08:00
Leonardo de Moura
511337a4e9 fix(library/blast): missing file 2015-11-10 17:00:26 -08:00
Leonardo de Moura
f8f3f9402e feat(library/blast): major reorg and basic backward chaining action 2015-11-10 17:00:16 -08:00
Leonardo de Moura
5be1893d98 fix(library/blast/state): bug at instantiate_urefs_mrefs 2015-11-10 16:38:44 -08:00
Leonardo de Moura
6f01a7339a refactor(library/blast): move simple search strategy to separate module 2015-11-10 11:44:18 -08:00
Leonardo de Moura
6ac2bf9c6c refactor(library/blast): add choice_point object 2015-11-10 11:28:59 -08:00
Leonardo de Moura
b76cdb1c68 refactor(library/blast): move blast options to separate module 2015-11-10 11:03:54 -08:00
Leonardo de Moura
f1c2a88e17 feat(library/blast): add proof_expr thin layer for creating proof terms at blast 2015-11-10 10:50:58 -08:00
Leonardo de Moura
5304f62f54 feat(library/blast/hypothesis): track proof depth in hypotheses 2015-11-10 09:54:28 -08:00
Leonardo de Moura
409ad18f9b refactor(library/blast/state): cleanup state interface 2015-11-10 09:20:44 -08:00
Daniel Selsam
fc5dba4cd1 fix(library/simplifier/simp_rule_set): use lists instead of vectors 2015-11-10 08:58:46 -08:00
Leonardo de Moura
b59dd2305c refactor(library/blast): rename state::get ==> state::get_hypothesis_decl 2015-11-09 14:52:21 -08:00
Leonardo de Moura
fb7a47cf2b refactor(library/blast): avoid auxiliary local when creating hypothesis for intros 2015-11-09 14:40:39 -08:00
Leonardo de Moura
a14bb86148 feat(library/blast/state): add mk_lambda/mk_pi for abstracting hrefs 2015-11-09 14:20:19 -08:00
Leonardo de Moura
973a5c4812 feat(library/blast): improve blast type_context push/pop operations 2015-11-09 13:36:49 -08:00
Leonardo de Moura
9c364b410e refactor(library/blast): hypothesis m_depth ==> m_dep_depth 2015-11-09 13:29:07 -08:00
Leonardo de Moura
9a557958f4 refactor(library/blast): merge state and branch classes
We will keep only one active branch in blast.
All other branches are implicit.
2015-11-09 13:24:30 -08:00
Leonardo de Moura
9bdf3a0d33 refactor(library/blast): we should reuse uref/mref/href in idxs
Motivation: avoid nasty bugs when caching results
2015-11-09 12:41:52 -08:00
Leonardo de Moura
d952a1d299 refactor(library/blast/expr): remove unnecessary complexity 2015-11-09 12:27:33 -08:00
Leonardo de Moura
c5117785a8 feat(library/blast): add intros action 2015-11-08 19:18:40 -08:00
Leonardo de Moura
78f1679b03 feat(library/blast): add basic assumption action 2015-11-08 18:16:34 -08:00
Leonardo de Moura
6340b1ae5b feat(library/blast): very basic search procedure and iterative deepening 2015-11-08 17:57:37 -08:00
Leonardo de Moura
1d39b6d5d4 feat(util/rb_map): add erase_min 2015-11-08 17:29:30 -08:00
Leonardo de Moura
c1392e60be feat(util/rb_tree): add double_cmp 2015-11-08 17:10:49 -08:00
Leonardo de Moura
8308e87a6c feat(library/blast/blast): initialize local instances at type_context objects 2015-11-08 15:20:05 -08:00
Leonardo de Moura
39019b6873 refactor(library/blast/simplifier): use app_builder mk_congr, mk_congr_arg and mk_congr_fun 2015-11-08 14:05:03 -08:00
Leonardo de Moura
1374f8cba1 fix(library/blast/simplifier): compilation warnings 2015-11-08 14:05:03 -08:00
Leonardo de Moura
b8857b078b feat(library/blast): add get_app_builder to blast API 2015-11-08 14:05:03 -08:00
Leonardo de Moura
1d1f043192 refactor(library/app_builder): throw exception instead of returning none_expr 2015-11-08 14:05:03 -08:00
Daniel Selsam
0061d595d0 feat(library/blast/simplifier): use generated congruence lemmas 2015-11-08 14:05:03 -08:00
Daniel Selsam
b2368ba81b style(library/blast/simplifier): whitespace 2015-11-08 14:05:03 -08:00
Daniel Selsam
f1d5cc5d5b test(library/blast/simplifier): add asserts 2015-11-08 14:05:03 -08:00
Leonardo de Moura
afc7a2af84 feat(library/blast): expose mk_congr_lemma_for_simp and get_fun_info 2015-11-08 14:05:03 -08:00
Leonardo de Moura
f74e8288bd refactor(library/congr_lemma_manager): API 2015-11-08 14:05:03 -08:00
Leonardo de Moura
f19fcf255a chore(library/constants.cpp): regenerate automatically generated file 2015-11-08 14:05:03 -08:00
Daniel Selsam
f3caeb77cd style(library/blast/simplifier): whitespace 2015-11-08 14:05:03 -08:00
Daniel Selsam
6c2c82f47c feat(library/blast/simplifier): conditional rewriting 2015-11-08 14:05:03 -08:00
Daniel Selsam
d4e410162b feat(library/blast/simplifier): expand macros 2015-11-08 14:05:02 -08:00
Daniel Selsam
b727d5810a feat(library/blast/simplifier): rewrite with tmp locals 2015-11-08 14:05:02 -08:00
Daniel Selsam
3f331a261a fix(library/blast/simplifier): stack of caches for local context 2015-11-08 14:05:02 -08:00
Daniel Selsam
b81aa35221 feat(library/blast/simplifier): more informative tracing 2015-11-08 14:05:02 -08:00
Daniel Selsam
0ad41173bb fix(library/blast/simplifier): caches for each relation 2015-11-08 14:05:02 -08:00
Daniel Selsam
a304f6a9df fix(library/blast/simplifier): loop rewrite rules 2015-11-08 14:05:02 -08:00
Daniel Selsam
a73e4e30a3 feat(library/blast/simplifier): use new blast_tmp_type_context constructor 2015-11-08 14:05:02 -08:00
Daniel Selsam
8e5e8e6540 feat(library/blast/simplifier): basic infrastructure 2015-11-08 14:05:02 -08:00
Leonardo de Moura
78a9116a23 chore(library/congr_lemma_manager): fix style 2015-11-08 14:05:02 -08:00
Leonardo de Moura
77c0866599 feat(library/congr_lemma_manager): fallback to simple congruence theorem if needed 2015-11-08 14:05:02 -08:00
Leonardo de Moura
0eb0a679e8 feat(library/congr_lemma_manager): add support for complex lemmas 2015-11-08 14:05:02 -08:00
Leonardo de Moura
ba477a0e98 feat(library/congr_lemma_manager): handle simple congruence lemmas 2015-11-08 14:05:02 -08:00
Leonardo de Moura
3dc8f72c32 feat(frontends/lean/builtin_cmds): display congr lemma arg mask 2015-11-08 14:05:02 -08:00
Leonardo de Moura
df94864809 fix(library/congr_lemma_manager): use abstract_local 2015-11-08 14:05:02 -08:00
Leonardo de Moura
8a7321714a feat(library/congr_lemma_manager): add mk_congr_simp that takes the number of expected arguments
Use sorry to be able to test first part
2015-11-08 14:05:02 -08:00
Leonardo de Moura
5a48a2cebe feat(library/app_builder): add mk_sorry method 2015-11-08 14:05:02 -08:00
Leonardo de Moura
c16423194c feat(library/fun_info_manager): add method for getting information about function prefix 2015-11-08 14:05:02 -08:00
Leonardo de Moura
559c5a26a3 fix(library/congr_lemma_manager): take resulting type into account when computing congruence lemma 2015-11-08 14:05:02 -08:00
Leonardo de Moura
b89b4cb5f0 fix(library/fun_info_manager): bug tracking dependecies 2015-11-08 14:05:02 -08:00
Leonardo de Moura
76032eea90 feat(kernel/expr): change dummy expression used in default constructor 2015-11-08 14:05:02 -08:00
Leonardo de Moura
7d588636a1 feat(library/fun_info_manager): collect additional information 2015-11-08 14:05:02 -08:00
Leonardo de Moura
9b34526030 feat(frontends/lean): add #congr debugging command 2015-11-08 14:05:02 -08:00
Leonardo de Moura
22dcf6825e feat(library/congr_lemma_manager): add congr_lemma_manager skeleton and compute type of congruence lemma
proof is still missing
2015-11-08 14:05:02 -08:00
Leonardo de Moura
01bde866d6 feat(library/util): add auxiliary recognizers 2015-11-08 14:05:01 -08:00
Leonardo de Moura
2d04156959 fix(library/app_builder): bug in eq_drec 2015-11-08 14:05:01 -08:00
Leonardo de Moura
34d5882b9a refactor(library/util): rename old is_eq_rec 2015-11-08 14:05:01 -08:00
Leonardo de Moura
2482c49729 test(frontends/lean): add #replace command for debugging purposes 2015-11-08 14:05:01 -08:00
Leonardo de Moura
6519e570f3 feat(library/fun_info_manager): safer "replace" function 2015-11-08 14:05:01 -08:00
Leonardo de Moura
78b1d4279b fix(library/blast/state): compilation problems in debug mode 2015-11-08 14:05:01 -08:00
Leonardo de Moura
7e7919950d fix(library/type_context): compilation warning 2015-11-08 14:05:01 -08:00
Leonardo de Moura
8d9d84f33c refactor(library/blast): we don't require maximally shared terms anymore in blast
This commit also removes the blast::mk_* expr and level functions.
They were just noops.

I kept only mk_uref, mk_href and mk_mref
2015-11-08 14:05:01 -08:00
Leonardo de Moura
45c02cb65c feat(library/blast/blast): add extra constructor 2015-11-08 14:05:01 -08:00
Leonardo de Moura
980eb95e0c fix(library/type_context,library/blast/blast): blast uses multiple type_context objects, this commit makes sure all of them use the same local name generator 2015-11-08 14:05:01 -08:00
Leonardo de Moura
749d468440 feat(library): add fun_info_manager 2015-11-08 14:05:01 -08:00
Leonardo de Moura
e23523bb02 feat(library/type_context): add mk_subsingleton_instance 2015-11-08 14:05:01 -08:00
Daniel Selsam
a104b478f3 feat(library/type_context): make expand_macro public 2015-11-08 14:05:01 -08:00
Leonardo de Moura
f84f024b92 refactor(library/app_builder): change app_builder constructor 2015-11-08 14:05:01 -08:00
Leonardo de Moura
98b79373cc feat(library/blast/blast): add blast::internalize 2015-11-08 14:05:01 -08:00
Leonardo de Moura
43efc11f36 feat(library/blast/blast): automatically clear tmp_type_context at recycling time 2015-11-08 14:05:01 -08:00
Leonardo de Moura
3517a3dfa9 feat(library/blast): add blast_tmp_type_context 2015-11-08 14:05:01 -08:00
Leonardo de Moura
b2c9f2f6c5 feat(library/type_context): document our approach for managing meta-variables in type_context 2015-11-08 14:05:01 -08:00
Leonardo de Moura
aa697206e8 refactor(library/type_context): rename set_context to set_local_instances 2015-11-08 14:05:01 -08:00
Leonardo de Moura
fb7efa9337 feat(library/type_context): new tmp local_constant policy 2015-11-08 14:05:01 -08:00
Leonardo de Moura
333ba83087 feat(library/type_context): add mk_tmp_local that allows us to specify the pretty printing name
We also modify the type inference procedure to preserve the binder names.
2015-11-08 14:05:01 -08:00
Leonardo de Moura
01259a2d1c feat(library/app_builder): add helper functions for creating eq.rec applications 2015-11-08 14:05:01 -08:00
Leonardo de Moura
5b71025b07 fix(library/blast/blast): temporary type_context for blast must handle external meta-variables. 2015-11-08 14:05:01 -08:00
Leonardo de Moura
d1fa547335 feat(frontends/lean/builtin_cmds): change mask notation at #app_builder command 2015-11-08 14:05:01 -08:00
Leonardo de Moura
f21102a725 feat(frontends/lean): add test commands for new app_builder features 2015-11-08 14:05:01 -08:00
Leonardo de Moura
1c2c2a6077 feat(library/app_builder): mk_app with mask 2015-11-08 14:05:01 -08:00
Leonardo de Moura
8e0a3eec3f chore(library/relation_manager): fix bogus style warnings 2015-11-08 14:05:01 -08:00