Commit graph

8131 commits

Author SHA1 Message Date
Leonardo de Moura
4e2494f12e refactor(library/init/nat): minor cleanup 2016-01-01 15:56:46 -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
Jeremy Avigad
9dd1302dac chore(extras/latex/lstlean.tex): update list of modifiers 2015-12-31 15:16:57 -08:00
Jeremy Avigad
0fb398c217 fix(library/data/nat/bigops): delete some blank lines 2015-12-31 15:16:57 -08:00
Jeremy Avigad
e14a2aaf3c feat(doc/lean/library_style.org): clarify C_of_A_of_B convention 2015-12-31 15:16:57 -08:00
Jeremy Avigad
7f25dd6646 feat(library/data/nat/bigops): sums and products over intervals of natural numbers 2015-12-31 15:16:57 -08:00
Jeremy Avigad
12a69bad04 refactor(library/data/finset/basic,library/*): get rid of finset singleton 2015-12-31 15:16:57 -08:00
Jeremy Avigad
8a00a431e8 refactor(library/data/finset/basic): rename theorem 2015-12-31 15:16:57 -08:00
Jeremy Avigad
a28ded641c refactor(library/algebra/interval): rename intervals to interval 2015-12-31 15:16:57 -08:00
Jeremy Avigad
86b64cf43b feat(library/data/set/*,library/algebra/group_bigops): better finiteness lemmas, reindexing for big operations 2015-12-31 15:16:57 -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
bd03619b5c refactor(library/data/list/basic): test 'rec_inst_simp' blast strategy
recursor + instantiate [simp] lemmas + congruence closure
2015-12-31 13:03:47 -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
7462874a4a refactor(library): cleanup nat/int proofs 2015-12-29 12:39:53 -08:00
Leonardo de Moura
a307a0691b refactor(library/data/nat/basic): cleanup some of the nat proofs 2015-12-29 11:43:56 -08:00
Leonardo de Moura
726867a8fb refactor(library/algebra/ring): minor cleanup 2015-12-29 11:16:18 -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