Leonardo de Moura
6c015a4954
feat(library/blast/blast): use blast tmp_type_context to generate type class instances
2016-01-10 16:30:51 -08:00
Leonardo de Moura
912bccb3f9
fix(library/blast/congruence_closure): do not adjust proofs when blast.cc.heq == false
2016-01-10 15:28:16 -08:00
Leonardo de Moura
e9d24ec152
feat(library/blast/congruence_closure): create simpler congruence proofs when using blast.cc.heq
2016-01-10 15:11:31 -08:00
Leonardo de Moura
ea7da31bba
feat(library/blast/congruence_closure): support for congruence lemmas that use heterogeneous equality
2016-01-10 13:45:40 -08:00
Leonardo de Moura
934f3b67ff
feat(library/blast/congruence_closure): basic support for heterogeneous equality
...
We still have to process the general congruence lemmas.
2016-01-10 12:53:05 -08:00
Leonardo de Moura
22a6b7f1c3
feat(library/blast/congruence_closure): add blast.cc.heq option
2016-01-10 00:15:52 -08:00
Leonardo de Moura
437b0fb4ee
feat(library/congr_lemma_manager): cache hcongr lemmas
2016-01-09 15:48:17 -08:00
Leonardo de Moura
42cdda227a
feat(library/congr_lemma_manager): add heterogeneous equality congruence lemmas
2016-01-09 15:41:08 -08:00
Leonardo de Moura
403966792d
feat(library/app_builder): add helper heq methods
2016-01-09 12:46:14 -08:00
Leonardo de Moura
d3242a2068
refactor(library): rename heq.of_eq heq.to_eq auxiliary lemmas
2016-01-09 12:32:18 -08:00
Soonho Kong
af42d3ff2d
fix(emacs/load-lean.el): add seq to lean-required-packages
...
fix #947
[skip ci]
2016-01-08 03:35:23 +00:00
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
Leonardo de Moura
fdcdfbf385
feat(library/blast/simplifier/simplifier_actions): only add symplified hypothesis if it is not "true"
2015-12-31 14:25:38 -08:00
Leonardo de Moura
b35abcc6a8
refactor(library): rename strategy "msimp" ==> "inst_simp"
...
"inst_simp" means "instantiate simplification lemmas"
The idea is to make it clear that this strategy is *not* a simplifier.
2015-12-31 12:45:48 -08:00
Leonardo de Moura
4cf5c77575
feat(library/blast/strategies): add strategy for applying recursors
2015-12-31 12:35:16 -08:00
Leonardo de Moura
20b585c432
feat(library/blast/forward/ematch): use blast.event.ematch for ematch module abnormal behavior
2015-12-31 12:28:22 -08:00
Leonardo de Moura
935a2536ec
fix(library/blast/actions/recursor_action): must normalize target for each subgoal
2015-12-31 12:25:17 -08:00
Leonardo de Moura
ba2cdc848a
feat(library/util, library/pp_options): add pp.goal.max_hypotheses
...
This commit also renames pp.compact_goals ==> pp.goal.compact
2015-12-30 12:43:03 -08:00
Leonardo de Moura
23836f53bb
feat(library/blast): do not display inactive hypotheses when displaying failure states
2015-12-30 12:08:33 -08:00
Leonardo de Moura
f2d4e81889
fix(library/blast/state): inactive hypotheses should be printed "after" active ones
2015-12-30 11:46:41 -08:00
Leonardo de Moura
2a454ce791
chore(library/blast/state): do not display set of active hypotheses
...
This is just "noise" in error messages
2015-12-30 11:31:59 -08:00
Leonardo de Moura
dc6a3e30c0
refactor(library): test simp and msimp in the standard library
2015-12-30 11:22:58 -08:00
Leonardo de Moura
251b53c669
refactor(library/blast/strategies): rename 'debug_action_strategy' to 'action_strategy'
...
Now, we can also provide a "name" for tracing purposes when
instantiating action_strategy.
2015-12-29 20:45:24 -08:00
Leonardo de Moura
41a01bb606
feat(library/blast/forward/ematch): add option 'blast.ematch.max_instances'
2015-12-29 20:36:11 -08:00
Leonardo de Moura
0148bb08fd
feat(library/blast): add 'ematch_simp' strategy for blast and msimp
shortcut for it.
...
This strategy is based on ematching and congruence closure, but it uses
the [simp] lemmas instead of [forward] lemmas.
2015-12-29 20:04:31 -08:00
Leonardo de Moura
8c87f90a29
feat(frontends/lean/elaborator): avoid redudant "don't know how to synthesize placeholder" when using flycheck
2015-12-29 18:00:19 -08:00
Leonardo de Moura
86a5379a96
feat(library/blast): include strategies failure states in the tactic_exception
...
Reason: better flycheck error messages
2015-12-29 17:14:55 -08:00
Leonardo de Moura
b92416d66c
refactor(library/error_handling): move error_handling to library main dir
2015-12-29 15:31:40 -08:00
Leonardo de Moura
3557bd36e7
refactor(library/algebra/group): cleanup proofs using simp and add [simp] attribute
2015-12-29 10:48:47 -08:00
Leonardo de Moura
b117a10f82
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
Leonardo de Moura
5b7dc31ad1
chore(library/blast/backward): remove unnecessary include
2015-12-28 14:26:18 -08:00
Leonardo de Moura
079a25f770
refactor(library/blast/forward): make sure backward and forward modules use same naming convention
2015-12-28 12:37:16 -08:00
Leonardo de Moura
482ffe4242
fix(library/attribute_manager): memory leak
2015-12-28 12:31:38 -08:00
Leonardo de Moura
c8b9c98eb6
refactor(library/blast/backward): use priority_queue, make sure head is normalized when building index
2015-12-28 12:26:06 -08:00
Leonardo de Moura
26d0a62052
refactor(*): make sure we use LEAN_DEFAULT_PRIORITY
...
We recently implemented the attribute manager.
2015-12-28 10:47:56 -08:00
Leonardo de Moura
f177082c3b
refactor(*): normalize metaclass names
...
@avigad and @fpvandoorn, I changed the metaclasses names. They
were not uniform:
- The plural was used in some cases (e.g., [coercions]).
- In other cases a cryptic name was used (e.g., [brs]).
Now, I tried to use the attribute name as the metaclass name whenever
possible. For example, we write
definition foo [coercion] ...
definition bla [forward] ...
and
open [coercion] nat
open [forward] nat
It is easier to remember and is uniform.
2015-12-28 10:39:15 -08:00
Leonardo de Moura
96bec8b4f9
fix(frontends/lean/builtin_cmds): allow token and metaclass to have the same name
2015-12-28 09:57:45 -08:00
Leonardo de Moura
89a5d00714
chore(library/blast): style
2015-12-28 09:08:18 -08:00
Leonardo de Moura
f679ce0da9
refactor(frontends/lean): move 'print_cmd' to separate module
2015-12-28 09:08:18 -08:00
Leonardo de Moura
cac10aa728
fix(frontends/lean/parser): allow '...' token to be used in imports
...
Before this commit, we could not write
import ...foo.b
We had to write
import .. .foo.b
or
import . ..foo.b
2015-12-28 09:08:18 -08:00
Leonardo de Moura
2a5a904416
feat(library/blast/discr_tree): remove hack for setting m_fn flag
2015-12-28 09:08:18 -08:00
Leonardo de Moura
93b912ec89
feat(library/blast): use discrimination trees instead of head_map for indexing hypotheses
2015-12-28 09:08:18 -08:00
Leonardo de Moura
1f1fafd535
feat(library/blast/discr_tree): erase operation
2015-12-28 09:08:18 -08:00
Leonardo de Moura
45c29d422f
feat(library/blast/discr_tree): set edge m_fn flag
2015-12-28 09:08:18 -08:00
Leonardo de Moura
43e1292f22
feat(library/blast): add discrimination trees
2015-12-28 09:08:17 -08:00
Jeremy Avigad
dc8cad10bf
feat(src/emacs/README.md): add header
2015-12-22 16:39:13 -05:00
Jeremy Avigad
68ecdc4c26
feat(src/emacs/README.md): expand instructions slightly
2015-12-22 16:39:13 -05:00
Soonho Kong
f911747b60
fix(util/file_lock.cpp): add 'include <fcntl.h>'
...
@wizardbc found that this is needed while working on lean.js.
I think it's because of the use of O_CREAT in open system call.
Related issue: leanprover/lean.js#10
2015-12-19 07:51:00 -05:00
Soonho Kong
c5223d2d19
fix(emacs/load-lean.el): proceed even if logo image is not created
...
On OSX + emacs-24.5, pgm file is not supported in the terminal.
This patch ignores the error and does not show the Lean logo if it fails to create one.
2015-12-18 14:29:51 -05:00
Leonardo de Moura
a7d1625765
fix(library/blast/forward/forward_lemma_set): check pattern inference when setting attribute
2015-12-17 22:50:14 -08:00
Leonardo de Moura
9a6bd96d6b
chore(frontends/lean/decl_attributes): style
2015-12-17 22:50:01 -08:00