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
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
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
Leonardo de Moura
67e291ac84
feat(library/blast/strategies): add strategy for testing congruence closure module
2015-12-06 14:33:21 -08:00
Leonardo de Moura
732a92de05
feat(frontends/lean): add 'simp' as shortcut for 'with_options [blast.strategy "simp"] blast'
2015-12-06 13:14:04 -08:00
Leonardo de Moura
b36ce49f2b
fix(tests,doc): adjust tests to changes in the standard library
2015-12-05 23:52:16 -08:00
Leonardo de Moura
648f6c5f82
fix(library/blast/strategies): constructor action was being applied too soon
2015-12-05 19:44:07 -08:00
Leonardo de Moura
ae8efb684e
fix(tests/lean/run/blast9): missing option
2015-12-05 19:26:37 -08:00
Leonardo de Moura
aa998bfad3
fix(library/fun_info_manager): reducibility issue
2015-12-05 19:26:06 -08:00
Leonardo de Moura
6193816f6a
fix(library/tmp_type_context): bug at pop()
2015-12-05 19:14:33 -08:00
Leonardo de Moura
df567717f8
feat(library/blast/strategies): add 'blast.strategy "preprocess"'
2015-12-05 18:17:15 -08:00
Daniel Selsam
08e0fc796b
feat(library/blast/actions): by_contradiction action
2015-12-04 20:19:05 -08:00
Leonardo de Moura
2682fe9525
feat(library/blast/blast): force 'ne' to be always transparent
2015-12-04 18:24:36 -08:00
Leonardo de Moura
5da1b52e47
feat(library/blast/unit/unit_propagate): make sure unif_propagate works even if 'not' is marked as '[reducible]'
2015-12-04 16:49:21 -08:00
Leonardo de Moura
5d38a5a5cd
test(tests/lean/run/blast_ematch10): make sure the test is for the cc
module
2015-12-04 14:03:51 -08:00
Leonardo de Moura
a8b6a286dd
fix(library/app_builder): make sure app_builder works even if iff
is marked as reducible
2015-12-04 13:51:56 -08:00
Leonardo de Moura
07cb35fd3c
fix(library/abstract_expr_manager): incorrect handling of de-Bruijn variables
2015-12-04 09:27:21 -08:00
Daniel Selsam
6e478696d2
feat(library/blast/unit): preprocessor placeholder
2015-12-04 08:30:04 -08:00
Daniel Selsam
0df4556eb5
feat(library/blast/unit): quantified and non-Prop facts
2015-12-04 08:30:03 -08:00
Daniel Selsam
2bf9989bd9
refactor(library/blast/unit): simplify module
2015-12-04 08:30:03 -08:00
Leonardo de Moura
6bbe72190d
fix(library/congr_lemma_manager): bug in congruence lemma generator
2015-12-03 14:21:30 -08:00
Leonardo de Moura
038369533e
fix(library/blast/recursor_action): indexed families
2015-12-02 23:43:15 -08:00
Leonardo de Moura
1c1cfdd010
test(tests/lean/run): add Dan's reducible+ematch test
2015-12-02 23:32:43 -08:00
Leonardo de Moura
87995b96e3
fix(library/blast/congruence_closure): is_relation_app ==> is_equivalence_relation_app
2015-12-02 23:28:57 -08:00
Leonardo de Moura
950f356d9a
refactor(library/blast,frontends/lean): forward pattern index
2015-12-02 22:52:55 -08:00
Leonardo de Moura
a83a7f8356
feat(library/blast/forward/pattern): remove redundant multi-patterns
2015-12-02 22:52:55 -08:00
Leonardo de Moura
2090e9124c
test(tests/lean/run): add more tests from algebra
2015-12-02 22:52:55 -08:00
Leonardo de Moura
48de943678
test(tests/lean/run): add Daniel's example
2015-12-02 22:52:55 -08:00
Leonardo de Moura
4f06e91ce5
test(tests/lean/run): add new test
2015-12-02 22:52:55 -08:00
Leonardo de Moura
1ab39a518f
chore(tests/lean/run/blast_ematch5): disable unnecessary options
2015-12-02 22:52:54 -08:00
Leonardo de Moura
32ad59adc1
feat(library/blast/forward/ematch): add support for multi-patterns
2015-12-02 22:52:54 -08:00
Leonardo de Moura
a8bb4ba109
fix(library/blast/congruence_closure): bug in congruence closure proof extraction
2015-12-02 22:52:54 -08:00
Leonardo de Moura
5844e96734
test(tests/lean/run): add basic ematching tests
2015-12-02 22:52:54 -08:00
Leonardo de Moura
08bb966581
feat(library/blast/forward/ematch): generate new instances
2015-12-02 22:52:54 -08:00
Leonardo de Moura
e4e9c30e66
fix(frontends/lean/builtin_cmds): print patterns
2015-12-02 22:52:54 -08:00
Leonardo de Moura
fdd442bd38
feat(frontends/lean/decl_attributes): turn on [forward]
if pattern hints have been provided
2015-12-02 22:52:54 -08:00
Leonardo de Moura
41ff4bc193
feat(library/blast/forward/pattern): pattern inference and heuristic instantiation index
2015-11-25 23:45:08 -08:00
Leonardo de Moura
84b54ad027
test(tests/lean/run): disable recursor tactic and add tests for unit+cc
2015-11-25 06:43:48 -08:00
Daniel Selsam
ca71a2eb12
feat(library/blast/unit): conjunctive conclusions
2015-11-24 22:45:39 -08:00
Daniel Selsam
eac1ebbf72
feat(library/blast/unit): propagate clauses
2015-11-24 21:16:01 -08:00
Leonardo de Moura
67a4cd3972
feat(frontends/lean): add print [no_pattern]
command
2015-11-24 18:48:22 -08:00
Leonardo de Moura
f4a7268bd7
fix(library/blast/congruence_closure): bug in add_eqv_step
2015-11-23 14:26:33 -08:00
Leonardo de Moura
0bd417bc2a
test(tests/lean/run/blast23): missing test
2015-11-22 18:23:01 -08:00
Leonardo de Moura
1bd827dffc
feat(library/blast/simplifier/simplifier_actions): add simplify_hypothesis_action
2015-11-22 17:49:00 -08:00
Leonardo de Moura
fc461ce832
feat(library/app_builder): avoid redundant proof terms at mk_of_iff_true and mk_not_of_iff_false
2015-11-22 15:49:17 -08:00
Leonardo de Moura
94f7b7f95d
feat(library/blast/congruence_closure): add support for propagating units in the congruence closure module
...
See blast_cc12.lean for example.
2015-11-22 15:39:44 -08:00
Leonardo de Moura
6fc0e41439
fix(library/blast/congruence_closure): proof generation for congruences such as (a = b) <-> (b = a)
...
The congruence closure module treats these two terms as the same thing.
So, we should take this into account when building proofs
2015-11-21 19:50:59 -08:00
Leonardo de Moura
5e9914ef45
feat(library/blast/congruence_closure): avoid eq.rec if major premise is eq.refl
2015-11-21 19:00:16 -08:00
Leonardo de Moura
091b0f0cc7
feat(library/blast): add option for disabling congruence closure
2015-11-21 17:45:25 -08:00
Leonardo de Moura
c4328aad3a
feat(library/blast/congruence_closure): missing case
2015-11-21 17:40:15 -08:00
Leonardo de Moura
962a61801e
test(tests/lean/run/blast_cc8): add card based on finite_set test for congruence closure module
2015-11-21 15:04:16 -08:00
Leonardo de Moura
c49caf3740
feat(library/blast/congruence_closure): add support for user-defined congruence lemmas in the congruence closure module
2015-11-21 14:43:51 -08:00
Leonardo de Moura
c280ddb2b0
fix(tests,doc): adjust tests and documentation
2015-11-20 17:03:17 -08:00
Leonardo de Moura
1a4068878e
fix(tests/lean/run): adjust tests
2015-11-20 16:46:10 -08:00
Leonardo de Moura
eb3d73873a
test(tests/lean/run/blast_cc4): congruence_closure and type classes
2015-11-20 14:01:15 -08:00
Leonardo de Moura
2627eade8b
test(tests/lean/run/blast_cc3): add test for congruence_closure with dependent types
2015-11-20 13:55:22 -08:00
Leonardo de Moura
8f368cebbf
feat(library/blast/congruence_closure): lift equalities
2015-11-20 13:48:22 -08:00
Leonardo de Moura
28970ef717
feat(library/blast/congruence_closure): proof extraction
2015-11-20 12:23:32 -08:00
Leonardo de Moura
6bd92e144a
test(tests/lean/run/blast20): uncomment example that can now be solved
2015-11-19 11:46:22 -08:00
Daniel Selsam
5ada4312d7
feat(library/blast/forward): propositional forward chaining
2015-11-19 11:44:53 -08:00
Leonardo de Moura
093a212ed4
test(tests/lean/run/blast21): another blast test
2015-11-18 19:20:32 -08:00
Leonardo de Moura
3bd83b8e41
feat(library/blast/backward/backward_strategy): don't try constructor action by default
2015-11-18 19:14:37 -08:00
Leonardo de Moura
3f6ec66b36
test(tests/lean/run/blast20): more tests
2015-11-18 19:12:58 -08:00
Daniel Selsam
413989afd6
feat(library/blast/backward): backward chaining strategy
2015-11-18 17:48:39 -08:00
Leonardo de Moura
491c7c55e1
feat(library/simplifier/simp_rule_set): add priorities for simp and congr rules
2015-11-16 22:34:06 -08:00
Leonardo de Moura
60945e95b4
feat(library/blast): add 'discard' action for detecting irrelevant hypotheses
2015-11-16 11:43:51 -08:00
Leonardo de Moura
db59c6829c
feat(library/blast): add basic support for non-recursive recursors/eliminators in the simple_strategy, fix bug at recursor_action
2015-11-15 18:39:12 -08:00
Leonardo de Moura
a545860aa1
feat(library/blast/intros_action): apply head_beta_reduce at intros
2015-11-15 18:14:12 -08:00
Leonardo de Moura
24ed427c2f
feat(library/blast): add "recursor" (aka elimination/induction) action
2015-11-15 18:00:32 -08:00
Leonardo de Moura
0dc31227f8
feat(library/init/logic): mark ne reducible
2015-11-15 15:09:02 -08:00
Leonardo de Moura
1308c7c4e2
feat(library/blast): add action for not(a ~ a) when ~ is a reflexive relation
2015-11-15 15:00:25 -08:00
Leonardo de Moura
ff73fb22fb
feat(library/user_recursors): store whether recursor is recursive or not
2015-11-15 12:37:35 -08:00
Leonardo de Moura
676ffb77f9
test(tests/lean/run): test for simp action
2015-11-15 11:36:24 -08:00
Leonardo de Moura
fd41a4f76d
feat(library/blast): add simplify_target action
2015-11-14 16:18:12 -08:00
Leonardo de Moura
b5db77961d
feat(library/blast): add "trivial" action
2015-11-14 15:02:14 -08:00
Leonardo de Moura
0f4e59a84f
feat(library/blast): add "no_confusion" action
2015-11-13 18:19:05 -08:00
Leonardo de Moura
29d472788f
feat(library/blast/subst): avoid unnecessary proof step
2015-11-13 16:31:07 -08:00
Leonardo de Moura
3849aff674
fix(library/blast/subst): bug in subst action, add hypothesis_idx_buffer_set (helper class), refine revert_action interface
2015-11-13 16:10:25 -08:00
Leonardo de Moura
65b962dabd
test(tests/lean/run): add basic tests for subst action
2015-11-13 15:27:54 -08:00
Leonardo de Moura
5ceac83b6a
feat(frontends/lean/elaborator): restrict the number of places where coercions are considered
...
We do not consider coercions around meta-variables anymore.
2015-11-11 12:37:19 -08:00
Leonardo de Moura
296a4ab940
test(tests/lean/run): add coercion test issue
2015-11-11 12:12:15 -08:00
Leonardo de Moura
9bedbbb739
refactor(library,hott): remove coercions between algebraic structures
...
They are classes, and mixing coercion with type class resolution is a
recipe for disaster (aka counterintuitive behavior).
2015-11-11 11:57:44 -08:00
Leonardo de Moura
fee0cff295
feat(library/blast): add simple indexing data-structure for active hypotheses
2015-11-11 00:02:47 -08:00
Leonardo de Moura
f8f3f9402e
feat(library/blast): major reorg and basic backward chaining action
2015-11-10 17:00:16 -08:00
Leonardo de Moura
fb7a47cf2b
refactor(library/blast): avoid auxiliary local when creating hypothesis for intros
2015-11-09 14:40:39 -08:00
Leonardo de Moura
623d677215
test(tests/lean/run): add missing test
2015-11-08 19:23:33 -08:00
Leonardo de Moura
78f1679b03
feat(library/blast): add basic assumption action
2015-11-08 18:16:34 -08:00
Leonardo de Moura
fb7efa9337
feat(library/type_context): new tmp local_constant policy
2015-11-08 14:05:01 -08:00
Leonardo de Moura
dc203b28db
test(tests/lean/run): add more tests
2015-11-08 14:05:01 -08:00
Leonardo de Moura
d1fa547335
feat(frontends/lean/builtin_cmds): change mask notation at #app_builder command
2015-11-08 14:05:01 -08:00
Leonardo de Moura
f21102a725
feat(frontends/lean): add test commands for new app_builder features
2015-11-08 14:05:01 -08:00
Leonardo de Moura
ee0974650a
feat(library/app_builder): new app_builder on top of type_context
...
The new version is more robust, and invokes type class resolution if needed.
2015-11-08 14:05:00 -08:00
Leonardo de Moura
a26ea2a249
feat(frontends/lean/builtin_cmds): add command for testing app_builder
2015-11-08 14:05:00 -08:00
Leonardo de Moura
3804281919
refactor(library/app_builder): remove app_builder Lua API
2015-11-08 14:05:00 -08:00
Leonardo de Moura
2f06a480fe
test(tests/lean/run/partial_explicit): add test for '@@' operator
2015-11-08 14:05:00 -08:00
Jeremy Avigad
697df0e68c
refactor(library/*): use type classes for div and mod
2015-11-08 14:04:59 -08:00
Jeremy Avigad
eea4e4ec55
fix(tests/lean/*): fix tests
2015-11-08 14:04:59 -08:00
Leonardo de Moura
54c5d2ca99
fix(tests/lean/run/univ_bug2): old test
2015-11-08 14:04:58 -08:00
Leonardo de Moura
abcfe0d805
feat(library/class_instance_resolution): add support for attribute [multiple-instances] in the new type class resolution procedure
2015-11-08 14:04:57 -08:00
Leonardo de Moura
08c061e1fa
refactor(library/data/set): remove [reducible]
annotation from set operations
2015-11-08 14:04:56 -08:00
Leonardo de Moura
6df31d3406
refactor(library/data/nat/basic): mark some theorems as protected to avoid overloading
2015-11-08 14:04:56 -08:00
Leonardo de Moura
4e78e35f77
fix(tests/lean): adjust remaining tests to changes in the standard library
2015-11-08 14:04:56 -08:00
Leonardo de Moura
81618e30f3
fix(tests/lean/run): adjust some tests to changes in the standard library
2015-11-08 14:04:56 -08:00
Leonardo de Moura
28a5ca5809
fix(frontends/lean): fixes #830
2015-09-18 07:51:02 -07:00
Leonardo de Moura
68dc39c106
fix(tests/lean/run/rewriter12): broken test, now ^[
is a token
2015-09-16 08:37:43 -07:00
Leonardo de Moura
df3100d2cd
fix(library/local_context): bug in abstract_locals procedure
2015-09-12 17:17:13 -07:00
Leonardo de Moura
1fdbd681cc
feat(frontends/lean/builtin_exprs): name hypothesis in suffices
...
closes #817
2015-09-03 16:09:39 -07:00
Leonardo de Moura
c84e886c7b
fix(frontends/lean/notation_cmd): fixes #808
...
This commit and 2b1d2c fixes #808
2015-08-31 18:05:58 -10:00
Leonardo de Moura
08169c5ac2
fix(library/unifier): fixes #809
...
Daniel is correct when he says the interaction between choice
case-splits, delta case-splits, and coercions can be subtle.
I believe the following condition
https://github.com/leanprover/lean/blob/master/src/frontends/lean/elaborator.cpp#L111
reduces counter-intuitive behavior. Example, the coercion should not
influence the resulting type.
BTW, by removing this condition, many files in the library broke when I
tried to compile from scratch
make clean-olean
make
I used the following workaround. Given a delta-delta constraint
f a =?= f b
If the terms are types, and no case-split will be performed, then
the delta-delta constraint is eagerly solved.
In principle, we don't need the condition that the terms are types.
However, many files break if we remove it. The problem is that many files in the standard
library are abusing the higher-order unification procedure. The
elaboration problems are quite tricky to solve.
I use the extra condition "the terms are types" because usually if they
are, "f" is morally injective, and we don't really want to unfold it.
Note that the following two cases do not work
check '{1, 2, 3}
check insert 1 (insert 2 (insert 3 empty))
Well, they work if we the num namespace is open, and they are
interpreted as having type (finset num)
2015-08-31 17:59:30 -10:00
Leonardo de Moura
2b1d2c21ad
fix(frontends/lean/util): bug when parsing priorities and numerals are overloaded
2015-08-31 15:08:21 -10:00
Leonardo de Moura
a3c404ac3b
feat(library/tactic/apply_tactic): do not report elaboration failure in apply tactic when proof_state.report_failure() is false
2015-08-21 15:45:52 -07:00
Leonardo de Moura
87349dc355
feat(frontends/lean/token_table): add 'proposition' keyword
2015-08-19 08:05:31 -07:00
Leonardo de Moura
3a72cd9621
fix(frontends/lean): rename multiword keyword "suffices to show" to "suffices"
2015-08-18 17:57:53 -07:00
Leonardo de Moura
3ce8c5d6f7
feat(frontends/lean): add "suffices to show A, from B, C" construct
2015-08-18 17:04:38 -07:00
Leonardo de Moura
21c41f50ea
fix(frontends/lean/elaborator): fixes #803
2015-08-17 14:56:41 -07:00
Leonardo de Moura
ea04414058
feat(frontends/lean): allow user to overload notation containing foldr/foldl and/or scoped expressions
...
see new tests for a summary of new features
see issue #800
2015-08-16 18:24:30 -07:00
Leonardo de Moura
eb8f586dba
fix(library/normalize): fixes #801
2015-08-16 14:22:02 -07:00
Leonardo de Moura
5a6a4b45c1
fix(library/definitional/equations): fixes #796
2015-08-14 14:39:23 -07:00
Leonardo de Moura
d2eb99bf11
refactor(library/logic): move logic/choice.lean to init/classical.lean
...
choice axiom is now in the classical namespace.
2015-08-12 18:37:33 -07:00
Leonardo de Moura
b4024982a2
refactor(library/data): move vector as indexed family to examples folder
2015-08-12 15:05:14 -07:00
Leonardo de Moura
66a59d5b51
feat(frontends/lean/util): remove hack that overrides priority namespace
...
closes #789
2015-08-11 18:01:40 -07:00
Leonardo de Moura
0b8f57841a
feat(frontends/lean/decl_cmds): closes #791
2015-08-11 17:53:33 -07:00
Jeremy Avigad
305f72bf4f
fix(tests/lean): fix three tests broken by setext renaming
2015-08-09 22:14:25 -04:00
Leonardo de Moura
6c5832a564
feat(frontends/lean/decl_cmds): allow recursive examples
...
closes #774
2015-08-08 08:26:25 -07:00
Leonardo de Moura
f21647899f
feat(frontends/lean/builtin_exprs): rename 'show' hidden name to 'this'
...
This is useful if 'show' is recursive
2015-08-07 13:29:21 -07:00
Leonardo de Moura
308af87b69
feat(library): add 'noncomputable' keyword for the standard library
2015-07-28 21:56:35 -07:00
Leonardo de Moura
80e3da0526
fix(library/util): fixes #751
2015-07-28 16:30:20 -07:00
Leonardo de Moura
844caf32e4
feat(frontends/lean/bultin_cmds): add 'print [congr]' command for displaying active congruence rules
2015-07-23 18:52:59 -07:00
Leonardo de Moura
933f056fff
feat(library/simplifier): add API for extracting simplification rules defined in a given namespace
2015-07-22 18:47:56 -07:00
Leonardo de Moura
092c8d05b9
feat(frontends/lean,library): rename '[rewrite]' to '[simp]'
2015-07-22 09:01:42 -07:00
Leonardo de Moura
23dd47d27f
fix(tests/lean): adjust tests to recent changes to the standard library
2015-07-19 21:32:42 -07:00
Leonardo de Moura
5112232d6d
fix(tests/lean/run/finset): adjust test to recent changes to the
...
standard library
2015-07-19 11:53:21 -07:00
Leonardo de Moura
3ab0e07ba9
feat(frontends/lean): add simp tactic frontend stub
...
This commit also removes the fake_simplifier. It doesn't work anymore
because simp is now a reserved word.
2015-07-14 09:54:53 -04:00
Leonardo de Moura
f8d472c9f1
feat(frontends/lean/parse_rewrite_tactic): change the semantics of rewrite[↑f] when f is recursive
...
After this commit it behaves like 'unfold f'.
That is, it will unfold f even if it fails to fold recursive
applications. Now, only 'esimp[f]' will not unfold f-applications when
it cannot fold the recursive applications.
This commit also closes #692 . It is part of a series of commits that
addresses this issue.
closes #692
2015-07-12 13:20:21 -04:00
Leonardo de Moura
4c0a656ecc
fix(library/tactic/unfold_rec): support indexed families + brec_on at unfold_rec
...
see issue #692
2015-07-12 12:45:05 -04:00