Commit graph

1156 commits

Author SHA1 Message Date
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
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
24fc68cef4 feat(library/init/category/combinators.lean): add foldl and when 2017-01-17 17:33:50 -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
Leonardo de Moura
04fb7b88e7 feat(library/init/algebra): mark basic facts as [ematch] until we have support for arithmetic 2017-01-13 10:36:08 -08:00
Leonardo de Moura
6f4bcbab20 feat(library/init/meta/smt/ematch): convenient way of marking all equational lemmas of a giving definition as ematch lemmas 2017-01-13 10:35:09 -08:00
Leonardo de Moura
6588b04fd5 feat(library/init/meta/declaration): add helper definition for demos 2017-01-12 21:12:44 -08:00
Leonardo de Moura
d2e393c779 feat(library/init/logic): allow exists.intro to be used in pattern matching 2017-01-12 16:03:01 -08:00
Gabriel Ebner
fcc559a7f0 feat(library/init/util): add trace_call_stack function 2017-01-12 21:47:46 +01:00
Leonardo de Moura
df91ae3738 fix(library/string,library/init/data/to_string): handle ASCII control characters 2017-01-11 23:44:33 -08:00
Leonardo de Moura
d0c86f13bb chore(library/init/data/nat): rename nat.less_than to nat.less_than_or_equal as suggested by Rob 2017-01-11 17:47:49 -08:00
Leonardo de Moura
d5c3736609 feat(library/init/meta/tactic): add helper tactic 2017-01-11 17:08:03 -08:00
Leonardo de Moura
5d3ac31f25 feat(library/init/data/list/lemmas): add lemmas for POPL demo 2017-01-11 17:07:37 -08:00
Leonardo de Moura
dc7e39887b refactor(library/tools/super/simp): reorganize simplify lemmas API 2017-01-11 13:47:49 -08:00
Leonardo de Moura
178be8d8ea fix(library/init/coe): coe should be reducible 2017-01-10 20:14:28 -08:00
Leonardo de Moura
e256022746 chore(library/init/meta/tactic): avoid the weird 'command' type when auto completing tactics 2017-01-10 14:59:10 -08:00
Leonardo de Moura
e96bbaee3f fix(library/type_context): fix #1295 2017-01-10 11:54:38 -08:00
Jeremy Avigad
20edc93b17 fix(library/init/data/list/lemmas): fix theorem names, now nil_append and cons_append 2017-01-10 09:10:33 -08:00
Gabriel Ebner
b8f1b16cfe chore(init/meta/smt/congruence_closure): remove unnecessary line 2017-01-10 09:07:37 -08:00
Leonardo de Moura
a43b856086 feat(library/init/meta/smt): add simp tactics to smt_tactic
We can simplify the target without affecting the smt state
2017-01-09 19:19:48 -08:00
Leonardo de Moura
5050e40aec feat(library/init/meta/smt): add slift smt tactic 2017-01-09 19:07:54 -08:00
Leonardo de Moura
b1c1d2dfa4 feat(library/init/meta): improve dsimp tactic notation 2017-01-09 17:31:35 -08:00
Leonardo de Moura
fa4d47edd8 chore(library/init/algebra/ring): document messy problem in the algebraic hierarchy 2017-01-08 23:35:39 -08:00
Leonardo de Moura
f56250d41e chore(library/init/data/nat/lemmas): mark nat.add_zero as protected 2017-01-07 14:17:56 -08:00
Leonardo de Moura
0c4c41ae54 feat(library/init/meta): produce nicer error message for overloaded simp/ematch lemma 2017-01-07 14:13:46 -08:00
Leonardo de Moura
c29a2bdac9 feat(library/init/meta/tactic): add eta reduction tactic 2017-01-06 19:56:10 -08:00
Leonardo de Moura
d333c444cd test(tests/lean/run): add tactic examples 2017-01-06 18:48:03 -08:00
Leonardo de Moura
5e3f26ec95 feat(library/tactic/smt/congruence_closure): propagate not_exists 2017-01-06 14:00:36 -08:00
Leonardo de Moura
13a11b4374 feat(library/init/meta/interactive): add get_eqn_lemmas_for tactic, allow user to provide definition name as an argument to simp 2017-01-06 11:45:09 -08:00
Leonardo de Moura
db70c78704 feat(library/equations_compiler): make sure automatically generated equational lemmas use internal names 2017-01-06 11:40:34 -08:00
Leonardo de Moura
15eaf30192 feat(library/tactic/smt/smt_state): allow user to provide a function ("to be unfolded") in the ematch_using tactic 2017-01-06 00:33:58 -08:00
Leonardo de Moura
7e4b79b221 feat(library/tactic/smt/smt_state): add ematch_using tactic 2017-01-06 00:24:25 -08:00
Leonardo de Moura
4a76579cd0 feat(library/tactic/smt): add tactics for getting/setting ematching lemmas 2017-01-05 20:35:57 -08:00
Leonardo de Moura
7ba889b5cf feat(frontends/lean/tactic_notation): try/repeat for smt_tactic in interactive mode 2017-01-05 18:31:57 -08:00
Gabriel Ebner
4d4e47921a fix(library/init/core): mark all rfl-lemmas as lemmas 2017-01-05 18:09:28 -08:00
Leonardo de Moura
82f8eeb280 feat(frontends/lean/definition_cmds): generate equational lemmas for regular definitions that were elaborated without using the equation compiler 2017-01-05 18:02:14 -08:00