Lev Nachmanson
d098dfe326
dev(lp): fix infeasibility evidence check
...
Signed-off-by: Lev Nachmanson <levnach@microsoft.com>
2016-02-05 10:04:34 -08:00
Leonardo de Moura
d9acf90f7b
refactor(util/lp): use Lean exception
2016-02-05 10:04:34 -08:00
Leonardo de Moura
8fbf66d01a
chore(util/lp): no "using", indentation
2016-02-05 10:04:34 -08:00
Leonardo de Moura
1841d17544
refactor(lp): NDEBUG ==> LEAN_DEBUG
2016-02-05 10:04:34 -08:00
Lev Nachmanson
fbb3ed8911
feat(lp): add LP solver and incremental LU factorization
...
Signed-off-by: Lev Nachmanson <levnach@microsoft.com>
2016-02-05 10:04:34 -08:00
Leonardo de Moura
04eaf184a9
feat(frontends/lean,library/unifier): checkpoints at have-expressions
...
@avigad, @fpvandoorn, @rlewis1988, @dselsam
This commit modifies how have-expressions are elaborated.
Now, to process
have H : <type>, from <proof>,
<rest>
we first process the constraints in <type> and <proof> simultaneously.
After all these constraints are solved, the elaborator performs
a Prolog-like cut, and process the constraints in <rest>.
So, all overloads, type classes and coercions in <type> and <proof> are solved
before we start processing <rest>. Moreover, while processing <rest>, we
cannot backtrack to <type> and <proof> anymore.
I fixed all affected proofs in the standard and HoTT libraries in
previous commits pushed today and yesterday. I think most affected proofs were not using a good
style and/or were easy to fix. Here is a common pattern that does not
work anymore.
structure has_scalar [class] (F V : Type) :=
(smul : F → V → V)
infixl ` • `:73 := has_scalar.smul
proposition smul_zero (a : R) : a • (0 : M) = 0 :=
have a • 0 + a • 0 = a • 0 + 0, by rewrite [-smul_left_distrib, *add_zero],
!add.left_cancel this
The `have` doesn't work because Lean can't figure out the type of 0 before
it starts processing `!add.left_cancel this`. This is easy to fix, we just have to
annotate one of the `0`s in the `have`:
proposition smul_zero (a : R) : a • (0 : M) = 0 :=
have a • (0:M) + a • 0 = a • 0 + 0, by rewrite [-smul_left_distrib, *add_zero],
!add.left_cancel this
BTW, all tactics are still being executed after all constraints are solved.
We may change that in the future. I didn't want to execute
the tactics at <proof> before <rest> because of universe
meta-variables. In Lean, unassigned universe meta-variables become
parameters. Moreover, we perform this conversion *before*
we start processing tactics. Reason: universe meta-variables
create many problems for tactics such as `rewrite`, `blast` and `simp`.
Finally, we can recover the previous behavior using the option
set_option parser.checkpoint_have false
2016-02-04 19:01:19 -08:00
Leonardo de Moura
a08bc408c8
fix(frontends/lean/structure_cmd): fixes #967
2016-02-04 16:15:18 -08:00
Leonardo de Moura
31cc0ebb6a
fix(frontends/lean/structure_cmd): fixes #968
2016-02-04 15:45:38 -08:00
Leonardo de Moura
496c84dac6
fix(frontends/lean/elaborator): fixes #982
2016-02-04 15:14:30 -08:00
Leonardo de Moura
774fa01b1a
chore(library/pp_options): reduce pp default limits
2016-02-04 14:55:21 -08:00
Leonardo de Moura
f62e22b34c
fix(util/sexpr/format): fixes #955
...
Lean was crashing because separate_tokes was traversing a DAG as a tree.
Lean was dying without memory (and getting stack overflows) because the procedure was also converting
the DAG into a tree.
This example also suggests we should reduce the limits for the pretty printer.
2016-02-04 14:55:11 -08:00
Leonardo de Moura
0268f92eb4
fix(frontends/lean/elaborator): fixes #965
2016-02-04 13:41:21 -08:00
Leonardo de Moura
42fbc63bb6
fix(library/tc_multigraph): avoid name collisions
...
@avigad, @fpvandoorn, @rlewis1988, @dselsam
I changed how transitive instances are named.
The motivation is to avoid a naming collision problem found by Daniel.
Before this commit, we were getting an error on the following file
tests/lean/run/collision_bug.lean.
Now, transitive instances contain the prefix "_trans_".
It makes it clear this is an internal definition and it should not be used
by users.
This change also demonstrates (again) how the `rewrite` tactic is
fragile. The problem is that the matching procedure used by it has
very little support for solving matching constraints that involving type
class instances. Eventually, we will need to reimplement `rewrite`
using the new unification procedure used in blast.
In the meantime, the workaround is to use `krewrite` (as usual).
2016-02-04 13:15:42 -08:00
Leonardo de Moura
9d88db3941
perf(library/type_context): add cache for minimizing the access to is_opaque and environment::find
2016-02-02 19:47:58 -08:00
Leonardo de Moura
701d6b5016
perf(library/blast/forward/pattern): simplify is_higher_order test
2016-02-02 18:56:48 -08:00
Leonardo de Moura
a7b3dcbc09
perf(library/blast/state): do not add hypotheses that are Pi-expressions into discrimination trees
2016-02-02 18:50:23 -08:00
Leonardo de Moura
4324726a8e
perf(kernel/expr_eq_fn): minimize number of calls to check_system
2016-02-02 18:16:14 -08:00
Leonardo de Moura
c55b10af1b
perf(library/type_context): move check_system to strategic places
2016-02-02 16:12:53 -08:00
Leonardo de Moura
b508cf813c
perf(library/type_context): small optimization
2016-02-02 15:36:53 -08:00
Leonardo de Moura
bc86e9f179
perf(library/type_context): add caching for type_context::infer
2016-02-02 15:24:57 -08:00
Leonardo de Moura
bd52e58294
perf(util/name): use quick_cmp at name_pair_quick_cmp
2016-02-02 13:56:02 -08:00
Leonardo de Moura
cb203c3272
perf(src/util/name): if the hashcodes are equal, then there is a high probability the names are equal
...
So, we use == before trying cmp.
Reason: == is much faster.
2016-02-02 12:52:06 -08:00
Leonardo de Moura
a9cb9ff912
perf(util/name): more inlining
2016-02-02 09:49:50 -08:00
Leonardo de Moura
187bce307e
perf(src/util/name): inline hash
2016-02-02 09:21:01 -08:00
Leonardo de Moura
a7b37d0e09
perf(library/type_context): cache type class resolution failures too
2016-01-29 14:06:47 -08:00
Leonardo de Moura
6b137b7dd3
chore(library/blast/forward/ematch): improve comment
2016-01-29 11:55:51 -08:00
Leonardo de Moura
587c263c28
feat(library/blast/forward/ematch): improve support for casts in the e-matcher
2016-01-29 11:38:43 -08:00
Daniel Selsam
6ed6306c3f
fix(library/blast/unit/unit_propagate): use ppb when tracing
2016-01-27 15:23:52 -08:00
Leonardo de Moura
684995640a
fix(library/blast/unit/unit_propagate): memory access violation
2016-01-27 15:22:34 -08:00
Leonardo de Moura
fb95b71a5e
fix(library/blast/forward/pattern): bug in the pattern inference code
2016-01-27 13:39:19 -08:00
Leonardo de Moura
a713ca9686
feat(library/type_context): add helper method get_num_choice_points
2016-01-26 22:02:25 -08:00
Daniel Selsam
12e148c7b6
feat(library/blast/forward/ematch): even more tracing
2016-01-26 21:40:46 -08:00
Soonho Kong
30b5313118
feat(CMakeLists.txt): handle new/old ABIs issue for MSYS2 + g++ combination
...
related issue: #930
2016-01-26 20:41:20 -08:00
Daniel Selsam
2868ec9c43
fix(library/blast/trace): missing pragma
2016-01-26 20:41:01 -08:00
Daniel Selsam
eca079a4fc
feat(library/blast/unit/unit_propagate): basic tracing
2016-01-26 20:40:42 -08:00
Leonardo de Moura
810ee9759c
fix(library/blast/backward/backward_action): add missing normalize at backward_action, and remove incorrect fix at discrimination tree
2016-01-26 20:35:57 -08:00
Leonardo de Moura
4821af8685
feat(frontends/lean/scanner): disallow superscripts in identifiers
...
See new test for motivating example.
2016-01-26 18:46:40 -08:00
Leonardo de Moura
6f6672eaaa
fix(library/blast/discr_tree): ignore annotations in discrimination trees
2016-01-26 18:46:40 -08:00
Daniel Selsam
568b3bbeeb
feat(library/blast/forward/ematch): trace match-ss
2016-01-24 16:24:24 -08:00
Daniel Selsam
98fb43e991
fix(library/blast/forward/ematch): advance iterator before continuing
2016-01-24 16:23:44 -08:00
Daniel Selsam
753d5d0689
fix(library/blast/grind/intro_elim_lemmas): need to copy expr
2016-01-24 16:23:27 -08:00
Leonardo de Moura
d12067193b
fix(library/blast/forward/pattern): residue computation in the ematching module
2016-01-24 16:15:33 -08:00
Leonardo de Moura
38ab1cae9e
feat(library/blast/unit/unit_propagate): basic support for "dependent lemmas" at unit propagate
...
New test contains examples of "dependent lemmas"
2016-01-24 16:02:08 -08:00
Leonardo de Moura
297ef10611
fix(library/blast/congruence_closure): subsingleton propagation in the congruence closure module
...
We must normalize inferred type.
2016-01-24 14:55:28 -08:00
Leonardo de Moura
3d0ea4c9d1
feat(library/type_context): improve find_unsynth_metavar
2016-01-24 13:39:25 -08:00
Daniel Selsam
b2554dcb8f
fix(library/blast/congruence_closure): cannot assume all subterms have been internalized
2016-01-16 20:10:21 -08:00
Leonardo de Moura
19bfbe2df8
fix(library/blast/congruence_closure): uselist initialization (aka add_occurrence)
...
Make sure it matches the description in the paper.
2016-01-16 19:53:36 -08:00
Leonardo de Moura
1d04160a9b
fix(library/blast/congruence_closure): bug at eq_congr_key_cmp::operator()(eq_congr_key const & k1, eq_congr_key const & k2)
...
It was not implementing the condition described in our paper.
2016-01-16 19:33:24 -08:00
Gabriel Ebner
7e11c5cf6e
fix(src/util/file_lock): ignore failure to create locks on read-only file systems
...
EACCES is already ignored when creating lock files. In this case we
assume that the file to be locked is part of the system-wide
installation. On NixOS however, the file system containing system
packages is mounted read-only, and open(2) returns EROFS.
2016-01-16 11:00:44 -08:00
Leonardo de Moura
98319139d9
fix(library/blast/forward/ematch): bug in match_leaf
2016-01-16 10:51:00 -08:00
Daniel Selsam
a883101a3b
feat(library/blast/forward/ematch): basic support for heq classes
2016-01-15 21:38:16 -08:00
Syohei YOSHIDA
f2eef7aa1b
feat(emacs): use s-join instead of string-join
...
Because string-join was introduced at Emacs 24.4 and subr-x.el must be
loaded for using it.
2016-01-14 09:36:52 -05:00
Syohei YOSHIDA
885c62648f
fix(emacs/lean-option.el): don't use deprecated function, string-to-int
...
string-to-int was deprecated since Emacs 22.
string-to-number should be used instead of string-to-int.
2016-01-14 09:36:37 -05:00
Daniel Selsam
abbffc7436
feat(library/blast/forward/ematch): more tracing
2016-01-13 22:04:12 -08:00
Leonardo de Moura
8d49e42ec2
fix(library/blast/congruence_closure): user-defined congruence lemmas for equality and relation congruences
2016-01-13 21:59:38 -08:00
Leonardo de Moura
3f7122ce07
feat(library/blast/congruence_closure): more general congruence lemmas
2016-01-13 21:44:32 -08:00
Leonardo de Moura
d9294fc164
chore(kernel/expr): remove dead var
2016-01-13 17:36:33 -08:00
Leonardo de Moura
f0cc98ebb5
chore(library/blast/recursor/recursor_action): disable spurious warning
2016-01-13 17:28:13 -08:00
Leonardo de Moura
1048812e2e
chore(frontends/lean/notation_cmd): cleanup weird coding pattern
2016-01-13 17:27:25 -08:00
Leonardo de Moura
b1d32bbaf6
chore(library/blast/forward/ematch): more tracing
2016-01-13 16:28:09 -08:00
Daniel Selsam
ba16d188e6
feat(library/blast/forward/ematch): basic debug tracing
2016-01-13 15:15:15 -08:00
Daniel Selsam
58d41e486c
feat(library/trace): register debug trace class
2016-01-13 15:15:15 -08:00
Leonardo de Moura
599ec08c70
feat(library/blast/congruence_closure): add support for eq.rec and cast in the congruence closure module
2016-01-13 14:18:38 -08:00
Leonardo de Moura
c19be9d9e7
feat(library/util): add is_app_of helper function
2016-01-13 13:33:30 -08:00
Leonardo de Moura
723a9e227a
chore(kernel/default_converter): remove dead code
2016-01-13 13:33:13 -08:00
Leonardo de Moura
8fded5224b
chore(library/blast/congruence_closure): improve comment
2016-01-13 13:06:09 -08:00
Leonardo de Moura
3643e79cb3
feat(library/blast/congruence_closure): improve the suppoer for subsingletons in the ematching procedure
2016-01-13 11:17:42 -08:00
Leonardo de Moura
8f7b533ca1
refactor(library): move 'cast' to init folder
2016-01-13 11:17:42 -08:00
Syohei YOSHIDA
f7494618ff
fit(emacs/lean-input.el): fix loading cl.el at runtime
...
This package uses only cl.el macro(lexical-let). So it is enough to
load cl.el at compile time.
2016-01-13 11:19:53 -05:00
Syohei YOSHIDA
5903fe4287
feat(emacs): use cl-lib functions/macros instead of cl.el
2016-01-13 11:19:40 -05:00
Leonardo de Moura
12876ccc20
fix(library/blast/forward/ematch): ematch + subsingleton
2016-01-12 22:31:09 -08:00
Leonardo de Moura
c2b6e3c29c
fix(library/blast/recursor/recursor_strategy): deactivate hypotheses before invoking nested strategy
2016-01-12 18:41:14 -08:00
Leonardo de Moura
b40f0ffe8b
fix(library/blast/forward/ematch): keep using ematching on implicit arguments
...
Ematching module should only ignore type classes (i.e., instance
implicit) and subsingletons (which includes propositions).
2016-01-11 15:40:51 -08:00
Leonardo de Moura
bb759b1a90
feat(library/blast/congruence_closure): use blast.cc.heq by default
2016-01-11 11:59:54 -08:00
Leonardo de Moura
5edcccaeb0
feat(library/blast/forward/ematch): add support for the new hcongr lemmas in the ematching module
2016-01-11 11:56:36 -08:00
Leonardo de Moura
32268b71d2
feat(library/app_builder): avoid redundant heq_of_eq(eq_of_heq(H)) proofs
2016-01-10 19:29:34 -08:00
Leonardo de Moura
ddff37dd0f
fix(library/blast/congruence_closure): bug when using blast.cc.heq and handling relation congruences
2016-01-10 19:28:55 -08:00
Leonardo de Moura
2b38d0fe9b
chore(library/app_builder): improve trace message
2016-01-10 18:31:54 -08:00
Leonardo de Moura
f22ba4e641
feat(library/type_context): cache mk_subsingleton_instance
2016-01-10 18:26:40 -08:00
Leonardo de Moura
799317c43e
fix(library/blast/congruence_closure): add missing eq => heq lifting
2016-01-10 18:03:35 -08:00
Leonardo de Moura
cf8307ee20
feat(library/app_builder): use types in app_builder trace messages
2016-01-10 17:29:11 -08:00
Leonardo de Moura
3a846a28a3
feat(library/blast/congruence_closure): support for subsingleton propagation
2016-01-10 17:24:12 -08:00
Leonardo de Moura
c646c3cacc
feat(library/init/logic): add subsingleton.helim with heterogeneous equality
2016-01-10 16:47:45 -08:00
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