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
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
Leonardo de Moura
40b7cf3ad4
chore(frontends/lean): remove unnecessary tokens
2015-12-17 22:35:12 -08:00
Leonardo de Moura
128b557d37
refactor(frontends/lean): use attribute_manager to simplify decl_attributes
2015-12-17 22:28:53 -08:00
Leonardo de Moura
d81b2d0f29
feat(library/attribute_manager, frontends/lean/builtin_cmds): use attribute manager information when pretty print definitions
2015-12-17 21:16:31 -08:00
Leonardo de Moura
45dbf76df9
refactor(library): add attribute manager
2015-12-17 20:58:15 -08:00
Floris van Doorn
da5f10ce63
feat(hott): minor fixes. allow the usage of numerals for trunc_index
2015-12-17 12:46:16 -08:00
Leonardo de Moura
61ecf018e9
feat(frontends/lean,library/tactic): add easy tactic parsing support for at ...
and with ...
2015-12-17 12:18:32 -08:00
Leonardo de Moura
c824a0e050
chore(library,hott): enforce naming conventions
2015-12-17 11:36:58 -08:00
Leonardo de Moura
2502039a5c
fix(frontends/lean/parser): tactic notation that may take numerical parameters
2015-12-17 11:27:31 -08:00
Leonardo de Moura
70f71a18c8
doc(library/type_context): explain why we need tmp_local_generator
2015-12-15 18:58:07 -08:00
Leonardo de Moura
73b28c91a6
fix(library/type_context): local constant management bug
2015-12-15 18:49:26 -08:00
Leonardo de Moura
1387cdfa0f
feat(library/type_context): add eta-expansion to type_context
2015-12-15 17:24:53 -08:00
Leonardo de Moura
10273bf176
feat(library/blast/forward/pattern): improve pattern inference heuristic
2015-12-15 12:55:43 -08:00
Leonardo de Moura
c07345d47f
fix(util/file_lock): handle permission denied at lock creation
...
see #925
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2015-12-15 09:48:20 -08:00
Rob Lewis
ec5990f4de
fix(library/norm_num): fix incorrect assert
2015-12-14 14:09:54 -05:00
Leonardo de Moura
521657914c
chore(util/file_lock): style
2015-12-14 10:20:33 -08:00
Sebastian Ullrich
2185ee7e95
feat(library/tactic): make let tactic transparent, introduce new opaque note tactic
...
The new let tactic is semantically equivalent to let terms, while `note`
preserves its old opaque behavior.
2015-12-14 10:14:02 -08:00
Leonardo de Moura
31c9a76777
feat(util/file_lock): add support for Windows
...
Remark: the lock are not being erased on Windows.
I tried different solutions based on MoveFileEx and DeleteFile.
None of them worked. The one based on MoveFileEx
MoveFileEx(m_fname.c_str(), NULL, MOVEFILE_DELAY_UNTIL_REBOOT);
seems to delete the file after REBOOT.
But, this is not very useful.
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2015-12-14 10:07:26 -08:00
Leonardo de Moura
95fba3dba6
chore(library/constants): sort constant decls
2015-12-13 21:39:45 -08:00
Leonardo de Moura
193a9d8cde
refactor(library/norm_num): avoid manual constant name initialization
...
@rlewis1988 We group all Lean constants used in the C++ code at
src/library/constants.txt
Jeremy and Floris check this file before renaming constants in the
library. So, they can quickly decide whether C++ code will be affected
or not.
We also have a python script for initializing the C++ name objects.
To use the script:
- go to src/library
- execute
python ../../script/gen_constants_cpp.py constants.txt
It will create the boring initialization and finalization code, and
declare a procedure get_<id>_name() for each constant in the file constants.txt.
I also move the norm_num1.lean to the set of unit tests that are
executed whenever we push a commit to the main branch.
I found an assertion violation at line 606. Could you take a look?
Best,
Leo
2015-12-13 21:38:59 -08:00
Leonardo de Moura
e3a35ba4fd
feat(frontends/lean): add 'with_attributes' tactical
...
closes #494
2015-12-13 18:27:44 -08:00
Leonardo de Moura
727a4f5a3a
feat(library/tactic/intros_tactic): use '_' to say that some names are irrelevant in the intro tactic
...
See #695
2015-12-13 16:47:31 -08:00
Leonardo de Moura
d4e49a8434
feat(library/tactic/intros_tactic): intro without argument should introduce a single variable
...
see #695
2015-12-13 16:28:39 -08:00
Leonardo de Moura
894875dc5c
feat(library/tactic/congruence_tactic): closes #855
2015-12-13 15:03:25 -08:00
Leonardo de Moura
999f23cbc0
feat(kernel/expr_eq_fn): take names into account when CompareBinderInfo is true
...
This is the correct fix for the id declaration pretty printing
discrepancy reported by Daniel.
TODO: decide whether we need another eq-mode where names are ignored.
For example, in blast, it makes sense to increase sharing by ignoring
binder names.
2015-12-13 14:47:11 -08:00
Leonardo de Moura
ce622e9179
feat(frontends/lean): add auto-include for structures and inductive decls
2015-12-13 13:39:34 -08:00
Leonardo de Moura
20de22a8ad
feat(frontends/lean): automatically include anonymous instance implicit variables/parameters (whenever their parameters have been included)
2015-12-13 13:20:54 -08:00
Leonardo de Moura
9a4a12899a
fix(frontends/lean/pp): make sure pp doesn't group [] arguments
2015-12-13 12:23:22 -08:00
Leonardo de Moura
a9b567296c
feat(frontends/lean/parser): add anonymous inst implicit name generator
2015-12-13 11:46:48 -08:00
Leonardo de Moura
d26a83da02
feat(frontends/lean/parser): allow anonymous instance implicit arguments
2015-12-13 11:46:48 -08:00
Leonardo de Moura
edad31a9b1
feat(shell/lean): use locking also for the index file
2015-12-12 21:50:08 -08:00
Leonardo de Moura
4dc3764a02
feat(util,library,shell): basic locking mechanism
...
We still have to test on Windows.
see issue #925
2015-12-12 21:26:13 -08:00
Leonardo de Moura
b7de10a6d2
feat(library/trace): allow user to disable subclasses of a trace class
...
Example:
set_option trace.blast true -- enables trace.blast class and all subclasses
set_option trace.blast.action false -- disables the given subclass
Result: all blast classes are traced but blast.action
2015-12-11 11:03:16 -08:00
Leonardo de Moura
7f1800962a
feat(frontends/lean/pp): allow user to override pp.all setting
...
see #922
2015-12-11 10:40:48 -08:00
Leonardo de Moura
ac0bd539b0
feat(frontends/lean/notation_cmd): allow 'abstract ... end' to be used in notation declarations
...
helps #825
2015-12-11 09:55:27 -08:00
Leonardo de Moura
eda26a9099
fix(emacs/lean-company): candidate fix for #846
2015-12-11 08:12:43 -08:00
Daniel Selsam
2b1e7e7759
feat(frontends/lean/pp): all disables numerals
2015-12-10 23:31:40 -08:00
Leonardo de Moura
abbb2cfbbd
feat(library/export): take binder labels into account when max-sharing expression during .olean generation
2015-12-10 23:27:44 -08:00
Leonardo de Moura
3057dde885
fix(library/class,library/coercion): fixes #852
2015-12-10 22:52:02 -08:00
Leonardo de Moura
cf61adc5d5
feat(frontends/lean): identifiers starting with '_' are now reserved
2015-12-10 22:32:03 -08:00
Leonardo de Moura
7b29ee1666
fix(library/tactic/induction_tactic): fixes #892
2015-12-10 10:52:57 -08:00
Leonardo de Moura
8094ca1c70
fix(library/blast/backward): crash when pretty printing backward rule set
...
We make sure it doesn't depend on the blast state.
2015-12-10 10:38:53 -08:00
Leonardo de Moura
1abaa9eb71
fix(frontends/lean/parser): fixes #858
2015-12-10 10:31:14 -08:00
Leonardo de Moura
8b3cbb8fdd
fix(library/tactic/induction_tactic): apply substitution to hypothesis type (it may contain metavars)
...
closes #876
2015-12-10 10:11:55 -08:00
Leonardo de Moura
c9ff175cf4
fix(library/tactic/induction_tactic): fixes #893
2015-12-10 10:11:55 -08:00
Leonardo de Moura
1f8de7b50b
feat(library/blast): refine trace messages
2015-12-09 18:38:20 -08:00
Leonardo de Moura
34e85be970
feat(library/blast): add 'blast.deadend' tracing option
2015-12-09 17:45:36 -08:00
Leonardo de Moura
1502248d30
feat(library/blast): trace strategy name
2015-12-09 17:13:28 -08:00
Leonardo de Moura
725101c777
chore(frontends/lean): cleaup
2015-12-09 12:43:44 -08:00