Daniel Selsam
7a005fb76b
test(tests/lean/run/blast_vector_test): more tests
2016-01-13 22:03:47 -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
912c5254de
fix(tests/lean/run/cases_bug): adjust test to changes in the std lib
2016-01-13 16:37:33 -08:00
Leonardo de Moura
05c3ede683
feat(tests/lean/run/blast_vector_test): test ematch + cc at vectors
2016-01-13 16:35:21 -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
Leonardo de Moura
081ad1212b
test(tests/lean/run/blast_ematch_list): blast last_concat
2016-01-12 22:56:28 -08:00
Leonardo de Moura
12876ccc20
fix(library/blast/forward/ematch): ematch + subsingleton
2016-01-12 22:31:09 -08:00
Daniel Selsam
292f28e769
test(tests/lean/run/blast_tuple): more tests for blast + tuple
2016-01-11 17:37:44 -08:00
Leonardo de Moura
d736376a6f
test(tests/lean/run/blast_cc_heq8): new congruence closure procedure can also handle subtypes without using a flattening preprocessing step
2016-01-11 16:50:03 -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
1c5418ac2e
test(tests/lean/run): add example/test for blast + tuples
2016-01-11 12:17:14 -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
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
799317c43e
fix(library/blast/congruence_closure): add missing eq => heq lifting
2016-01-10 18:03:35 -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
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
b7be3ec6de
test(tests/lean/run): add tests for heterogeneous congruence lemma generator
2016-01-09 16:18:39 -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
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
4e8ae94aba
chore(tests/lean/run/blast_cc_noconfusion): make sure simp/subst are not used in the test
2016-01-06 17:30:31 -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
c9930d0a29
feat(library/blast/simplifier/simplifier): subsingleton normalization for application arguments and lambdas
2016-01-06 17:30:08 -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
3ca785b0e7
refactor(library/fun_info_manager): remove dead code
2016-01-06 17:29:02 -08: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
Jeremy Avigad
a22346e411
fix(lean/tests/lean/run/new_obtain{3,4}): adapt tests to new notation for image
2016-01-03 18:52:25 -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
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
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
befe41e8f5
fix(tests/lean): adjust tests
2016-01-02 12:51:20 -08:00
Leonardo de Moura
17a2f1fe47
chore(tests/lean/run/blast_grind1): use 'core_grind'
...
Reason: we will change the semantics of 'grind'
2016-01-01 16:46:15 -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
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
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
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
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
fe66e2aa4a
fix(tests/lean): subtype notation is not in the top-level anymore
2015-12-28 09:04:11 -08:00
Leonardo de Moura
657b508cdf
fix(tests/lean/simplifier_light): adjust test
2015-12-17 22:42:31 -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
2502039a5c
fix(frontends/lean/parser): tactic notation that may take numerical parameters
2015-12-17 11:27:31 -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
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
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
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
b6bac2e542
chore(tests/lean/run): adjust tests
2015-12-13 12:23:44 -08:00
Leonardo de Moura
ef546c5c5b
refactor(library): use anonymous instance implicit arguments
2015-12-13 11:46:48 -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
a35fd06a33
test(tests/lean/run/blast_simp4): add simp test
2015-12-11 10:23:58 -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
Daniel Selsam
2b1e7e7759
feat(frontends/lean/pp): all disables numerals
2015-12-10 23:31:40 -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
13f9d8dd6c
fix(tests/lean): move hott tests
2015-12-10 10:55:27 -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
a507ac8594
test(tests/lean/interactive/findp): remove test that breaks whenever we revise init/logic.lean
...
closes #888
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
Floris van Doorn
f495fa04c8
fix(tests): fix tests after port
2015-12-09 12:36:11 -08:00
Leonardo de Moura
50323e5b14
fix(tests/lean/run/simplifier1): option name
2015-12-09 12:30:20 -08:00
Leonardo de Moura
bed03272f5
fix(tests/lean/run/blast_cc1): option name
2015-12-09 12:23:00 -08:00
Leonardo de Moura
3f9549485f
feat(frontends/lean/parser): restore config options in the end of sections/namespaces
2015-12-09 11:24:37 -08:00
Leonardo de Moura
273f6fc04c
fix(tests/lean/run): new option names
2015-12-08 20:06:43 -08:00
Leonardo de Moura
b145a7332a
feat(library/blast/congruence_closure): use new tracing infrastructure
2015-12-08 15:18:21 -08:00
Leonardo de Moura
7da64a768f
refactor(library/type_context): with the new tracing infrastructure, type_context doesn't need an io_state
2015-12-08 14:58:08 -08:00
Leonardo de Moura
50df6b5698
feat(frontends/lean): rename '[intro]' ==> '[intro!]' and '[backward]' ==> '[intro]'
2015-12-07 21:33:35 -08:00
Leonardo de Moura
041c1cbb17
feat(library/blast): add strategies "grind" and "core_grind"
2015-12-07 20:30:59 -08:00
Leonardo de Moura
295b1d21f5
feat(frontends/lean): add '[intro]' and '[elim]' annotations
2015-12-07 18:43:15 -08:00
Leonardo de Moura
c3b5ce0785
feat(frontends/lean/builtin_cmds): show metavariable arguments when pretty printing patterns
2015-12-07 12:39:51 -08:00
Daniel Selsam
0f76e33724
fix(tests/lean): fix tests that print patterns
2015-12-07 12:32:22 -08:00
Leonardo de Moura
af7ffcf575
chore(tests/lean/run/blast_meta_bug): use "ematch" strategy in the test
2015-12-07 12:23:01 -08:00
Leonardo de Moura
121648dda6
fix(library/congr_lemma_manager): issue with reducible annotation when generating congruence lemmas
2015-12-07 12:09:30 -08:00
Leonardo de Moura
f31553d916
feat(library/blast/strategies/portfolio): add more strategies for debugging purposes
2015-12-07 11:59:21 -08:00
Leonardo de Moura
54c0921bbb
feat(library/blast/forward/pattern): consider patterns with nested lambdas in the pattern inference procedure
2015-12-07 10:39:42 -08:00
Leonardo de Moura
f5fcd12f3f
feat(library/blast/simplifier/simplifier): use pretty printer when generating tracing messages
2015-12-07 09:46:28 -08:00
Leonardo de Moura
85379b7706
feat(library/blast/actions/simple_actions): make sure contradiction action works even if classical logic support is not enabled
...
not (not (not a)) -> not a
2015-12-07 09:30:14 -08:00
Leonardo de Moura
c7390684ba
feat(library/blast/strategies/portfolio): add 'unit' strategy for testing unit propagation
2015-12-07 08:45:54 -08:00
Leonardo de Moura
bccf716fd5
chore(tests/lean/run/blast_unit): remove reducible-not tests
2015-12-07 08:44:09 -08:00
Leonardo de Moura
2d007c7c23
feat(library/blast/simplifier/simp_rule_set): rename metaclass to '[simps]'
...
The previous name [rrs] was too cryptic.
2015-12-06 20:49:27 -08:00
Leonardo de Moura
1eb28b842e
feat(library/blast/simplifier): add eta-reduction to simplifier
2015-12-06 20:41:25 -08:00
Leonardo de Moura
b044f9e8c1
feat(library/blast/strategies): add "ematch" strategy for testing ematching
2015-12-06 15:01:49 -08:00
Leonardo de Moura
5626431c7f
test(tests/lean/run): use 'simp' when testing the simplifier
2015-12-06 14:35:14 -08:00