Commit graph

2675 commits

Author SHA1 Message Date
Leonardo de Moura
b1d097e63a feat(library/init/meta): add 'delta' tactic for applying delta reduction
closes #1331
2017-01-26 19:04:07 -08:00
Leonardo de Moura
3f124f1a15 feat(library/init/logic): add decidable instance for ite and dite 2017-01-26 18:42:46 -08:00
Leonardo de Moura
08a0924fe3 fix(library/data/bitvec): typo 2017-01-25 18:41:32 -08:00
Joe Hendrix
641ccbc846 chore(library/data): remove (list/tuple).firstn in favor of taken 2017-01-25 18:39:54 -08:00
Leonardo de Moura
552ca66e9e feat(library/init/meta/pexpr): expose low level function mk_placeholder 2017-01-25 15:32:50 -08:00
Leonardo de Moura
258fb522d3 feat(library/tactic/smt): add generation heuristic to control matching loops 2017-01-24 22:46:45 -08:00
Leonardo de Moura
0ba60e62d7 feat(kernel/quotient/quotient): make quotient module robust against users that define their own prelude's
Before this commit, an user could define their own prelude and change
the types of quot, quot.mk, quot.lift or quot.ind.
By doing that, they could prove false.

This commit prevents this kind of abuse.
It also modifies the definition of `quot` and avoids the `setoid`
dependency.
The previous `quot` type is now called `quotient`, and it is defined
using the new `quot` type provided by the kernel.

See discussion at #1330
2017-01-24 15:59:38 -08:00
Leonardo de Moura
ac6bfce01c feat(library/tactic/smt/congruence_closure): improve propagation for beta reduction in the congruence closure module 2017-01-24 12:09:37 -08:00
Leonardo de Moura
6d12de6339 refactor(library/init/meta/smt): use default value for config structures 2017-01-23 14:18:06 -08:00
Leonardo de Moura
778d5382f6 refactor(library/init/meta/simp_tactic): use default field values at simplify_config 2017-01-23 10:22:48 -08:00
Leonardo de Moura
8ef21040d6 chore(library/init/algebra/order): remove leftover 2017-01-22 21:31:04 -08:00
Leonardo de Moura
71a7a7f466 feat(frontends/lean): add default field values 2017-01-22 21:25:49 -08:00
Leonardo de Moura
f7edf601c8 fix(library/init/data/nat/lemmas): avoid bad patterns in nat sub ematch lemmas
The attribute [ematch_lhs] instructs Lean to use the left-hand-side of
the conclusion as a pattern.
2017-01-22 19:48:01 -08:00
Leonardo de Moura
4b11afcb46 feat(library/init/meta/interactive): add doc strings 2017-01-22 16:41:27 -08:00
Leonardo de Moura
3516773644 chore(library/init): minor fixes 2017-01-22 14:20:48 -08:00
Jeremy Avigad
7496522830 fix(library/tools/super/clausifier): add rule for new iff 2017-01-22 14:19:11 -08:00
Jeremy Avigad
2b6487065c feat(library/init/logic): make iff a structure 2017-01-22 14:19:00 -08:00
Gabriel Ebner
b0c67abb2f feat(library/vm/vm_aux): add vm code for sorry 2017-01-22 14:18:38 -08:00
Leonardo de Moura
ac1db6a199 feat(library/init/meta/interactive): add some doc strings 2017-01-22 12:45:39 -08:00
Leonardo de Moura
b913ba3336 feat(library/init/meta): add type information for the arguments of the smt tactics: ematch_using and add_lemmas 2017-01-22 12:12:31 -08:00
Leonardo de Moura
a61cf4d08b feat(library/init/meta/interactive): show type information for simp, dsimp arguments 2017-01-22 12:05:51 -08:00
Leonardo de Moura
cce88c6190 refactor(frontends/lean): interactive tactic support
After this commit, new interactice tactic classes can be added without
writing C++ code (see example: tests/lean/run/my_tac_class.lean).

The tactic_evaluator was simplified, and all the complexity has been
moved to tactic_notation, and lean code.

We can now inspect the intermediate states produced by the rewrite
tactic.

The function (@scope_trace _ line col thunk) can be used to position trace
messages produced by thunk. If line/col are not provided (i.e., we
just write (scope_trace thunk)), then line/col are filled with the
position of this term by the elaborator.

We can visualize the intermediate tactic states inside nested blocks
such as (try { ... })

The new infrastructure can be used to implement custom tactic_state
pretty printers.
2017-01-21 22:38:47 -08:00
Leonardo de Moura
7a6b9e193c feat(library/vm, frontends/lean/info_manager): add thread safe vm_obj wrapper, and use it to store arbitrary vm thunks in the info_manager 2017-01-21 22:38:33 -08:00
Leonardo de Moura
d9528ffad8 chore(library/init/data/nat/lemmas): add comment 2017-01-21 03:11:59 -08:00
Gabriel Ebner
03e09db70e refactor(library/data/bitvec,library/data/tuple): use automation 2017-01-21 09:48:35 +01:00
Leonardo de Moura
4de71cadfa feat(library/init/meta): expose additional app_builder tactics 2017-01-20 20:27:07 -08:00
Leonardo de Moura
4e6ad1d34d fix(library/init/meta/contradiction_tactic): make sure contradiction uses whnf for constructor-eq-constructor case 2017-01-20 18:42:27 -08:00
Leonardo de Moura
bbc99d4aa5 feat(library/data/tuple): make sure tuple.nil and tuple.cons can be used in patterns 2017-01-20 18:38:34 -08:00
Leonardo de Moura
e8e483534b chore(library/init/meta/decl_cmds): remove unused parameter 2017-01-18 19:44:16 -08:00
Leonardo de Moura
0795acaf6a refactor(library/init/algebra): new transport from multiplicative to additive
The motivation is to avoid the problems produced by the "declare as
structure and then tag as class idiom" described in the file ring.lean.
2017-01-18 19:39:53 -08:00
Leonardo de Moura
d0a578c3db feat(library/init/meta/environment): add is_projection 2017-01-18 18:12:08 -08:00
Leonardo de Moura
0ad053f0f1 feat(library/init/meta/decl_cmds): add command for copying type and value using replacement 2017-01-18 17:52:11 -08:00
Leonardo de Moura
694e6f47dc fix(library/init/meta/smt/ematch,library/tactic/simp_lemmas): trick for adding equations of a definition to a simp/hinst lemma set
Before this commit, if we declared an equational lemma using 'def',
then it would not be correctly added to the simp/hinst lemma set.
The new test exposes the problem.
2017-01-18 02:05:04 -08:00
Leonardo de Moura
97b98c58d0 refactor(library): move nat lemmas to library/init/data/nat/lemmas.lean 2017-01-17 17:42:13 -08:00
Joe Hendrix
767ac42dfe chore(library/data): remove redundent decidable_eq instances 2017-01-17 17:34:10 -08:00
Joe Hendrix
5bc5013f16 chore(library/data/bitvec): remove leftover code 2017-01-17 17:34:05 -08:00
Joe Hendrix
985c3697b9 chore(library/data/list): add back copyright notice 2017-01-17 17:33:59 -08:00
Joe Hendrix
24fc68cef4 feat(library/init/category/combinators.lean): add foldl and when 2017-01-17 17:33:50 -08:00
Joe Hendrix
8e2cf491e5 refactor(library/data/list): move theorems to separate modules per lean2 2017-01-17 17:33:45 -08:00
Joe Hendrix
3de9e722e1 feat(library/data/bitvec): additional definitions 2017-01-17 17:33:37 -08:00
Joe Hendrix
d52c3327ba feat(library/data/nat/sub): additional theorems 2017-01-17 17:33:32 -08:00
Joe Hendrix
f244c0e70a feat(library/data/bitvec): add bitvec version of tuple.append 2017-01-17 17:33:24 -08:00
Joe Hendrix
de92ea658a feat(library/data/tuple): add decidable_eq to tuple 2017-01-17 17:33:17 -08:00
Joe Hendrix
9781a0414c feat(library/data/list): add has_decidable_eq to list. 2017-01-17 17:33:09 -08:00
Joe Hendrix
18cbc22791 refactor(library/data/nat): migrate data.nat to lean2 structure 2017-01-17 17:24:37 -08:00
Leonardo de Moura
8e76d079d3 chore(tests/lean/run): fix tests 2017-01-17 15:50:54 -08:00
Leonardo de Moura
6ebc23eca4 feat(library/init/meta/smt/smt_tactic): add smt_tactic.induction
Non-interactive version.
2017-01-13 16:49:54 -08:00
Leonardo de Moura
05d86e49ca feat(library/init/meta/smt): add intros variants for smt_tactic 2017-01-13 16:13:37 -08:00
François G. Dorais
b305130ec3 fix(library/init/wf): typo
Same typo as #1091, different location.
2017-01-13 11:35:52 -08:00
Leonardo de Moura
69fd35f068 feat(library/init/meta/smt): add helper tactics and doc-strings 2017-01-13 11:21:20 -08:00