Leonardo de Moura
3adcf30d2f
feat(library/init/meta/smt_tactic): add assert/assertv/define/definev/pose/note for smt_tactic
2017-01-03 17:12:00 -08:00
Leonardo de Moura
b636f03bb9
test(tests/lean/run/using_smt1): missing test
2017-01-03 15:13:15 -08:00
Leonardo de Moura
d546671849
chore(library/local_context): style
2017-01-03 15:00:46 -08:00
Leonardo de Moura
554cef1d36
feat(library/tactic/smt/congruence_closure): propagate disequalities
2017-01-03 14:53:27 -08:00
Leonardo de Moura
34073c6f32
feat(library/tactic/smt/smt_state): improve smt_goal formatting
2017-01-03 13:50:25 -08:00
Leonardo de Moura
51efc6c178
fix(library/tactic/smt/congruence_closure): missing propagation
2017-01-03 13:48:14 -08:00
Leonardo de Moura
d546dc57cd
feat(library/tactic/smt/smt_state): use simplifier in the preprocessing step
2017-01-03 11:58:00 -08:00
Leonardo de Moura
2262f70545
test(tests/lean/run/using_smt3): add zeta/nozeta test
2017-01-03 11:28:41 -08:00
Leonardo de Moura
27aa8ae4ed
chore(emacs/README): remove fill-column-indicator
2017-01-03 11:26:57 -08:00
Scott Morrison
54ee157fa9
fix(emacs): bug in suggested Emacs init
...
The original code set the variable `lean-required-packages`, but then expected `lean-mode-required-packages`.
I've also added a hint about where to find your emacs init file; this was something I had to learn to follow these instructions.
A question for follow-up: the requirements sections states that `fill-column-indicator` is a dependency, but the suggested init file does not attempt to install this. Should this be fixed?
2017-01-03 11:25:58 -08:00
Scott Morrison
a85e89f555
fix(app_builder.h): fixing a typo in an error message
2017-01-03 11:23:01 -08:00
Jeremy Avigad
d9eab0cb19
chore(extra/latex/*): update to changes in syntax
2017-01-03 11:22:04 -08:00
Leonardo de Moura
78f4ab605e
feat(library/tactic/smt): preprocessing configuration options
2017-01-03 11:06:33 -08:00
Leonardo de Moura
c904437d57
fix(frontends/lean/elaborator): crash when elaborating invalid structure instance
2017-01-03 11:04:14 -08:00
Leonardo de Moura
7f4693a26d
chore(library/vm/vm_nat): add default value at force_to_unsigned
2017-01-03 10:26:36 -08:00
Leonardo de Moura
abb63cbfa6
fix(frontends/lean/elaborator): cactch app_exception when trying to create coercion
...
closes #1279
2017-01-03 09:03:00 -08:00
Leonardo de Moura
61bf8d5902
test(tests/lean/run/blast_unit): add old blast unit propagation tests
2017-01-02 19:38:31 -08:00
Leonardo de Moura
de8491474c
feat(library/tactic/smt/congruence_closure): more propagation rules for implication, and cleanup
2017-01-02 19:35:12 -08:00
Leonardo de Moura
a7cd840c74
fix(library/tactic/smt/congruence_closure): incorrect condition
2017-01-02 19:33:55 -08:00
Leonardo de Moura
2239791eab
fix(library/tactic/smt/congruence_closure): typo
2017-01-02 18:55:45 -08:00
Leonardo de Moura
cefccd0e47
feat(library/tactic/smt): perform "unit propagation" in the congruence closure module
2017-01-02 18:49:26 -08:00
Leonardo de Moura
ca6d3743c7
feat(library/tactic/smt): add mk_eq_true_intro mk_of_eq_true mk_eq_false_intro mk_not_of_eq_false
2017-01-02 13:39:16 -08:00
Leonardo de Moura
b200a86240
feat(library/tactic/smt): simplify congruence_closure internalization, visit lemmas at unit_propagation
2017-01-02 12:23:32 -08:00
Leonardo de Moura
316507081c
feat(library/tactic/smt): unit propagation interface
2017-01-02 10:28:26 -08:00
Leonardo de Moura
6e53d73e61
feat(library/tactic/smt): add cc_propagation_handler
2017-01-02 09:58:57 -08:00
Leonardo de Moura
a516d384ae
fix(library/compiler/erase_irrelevant): make sure io monad actions are not erased by dead code elimination optimization
2017-01-02 01:42:36 -08:00
Leonardo de Moura
32cc36214a
feat(library/init/meta/smt_tactic): allow user to select simp attribute to be used during SMT preprocessing, use preprocessing at intros too
2017-01-01 22:26:26 -08:00
Leonardo de Moura
50b25ad45f
feat(library/init/meta/smt_tactic): add smt_tactic.destruct, and a few combinators
2017-01-01 14:50:34 -08:00
Leonardo de Moura
4db7c05fb8
feat(frontends/lean/elaborator): generalize try_monad_coercion
2017-01-01 14:50:01 -08:00
Leonardo de Moura
effe19d334
feat(library/tactic/smt/smt_state): add smt_tactic.intros, define smt_state in Lean as (list smt_goal)
2017-01-01 14:17:03 -08:00
Leonardo de Moura
90096a3ee8
feat(library/init/meta/smt_tactic): add smt_tactic.close
2017-01-01 11:56:36 -08:00
Leonardo de Moura
19154e1ff3
chore(library/tactic/smt/smt_state): typo
2017-01-01 10:41:09 -08:00
Leonardo de Moura
d7e894d197
fix(util/rb_tree): typo
2017-01-01 10:38:41 -08:00
Leonardo de Moura
d2e935522c
feat(library/tactic/smt/smt_state): unique names at intro_all
2017-01-01 09:44:39 -08:00
Scott Morrison
548ca37c47
fix(library/init/meta/interactive): correcting a typo in a comment
2017-01-01 09:34:32 -08:00
Leonardo de Moura
68629b2e5f
feat(library/init/category/transformers): disable instance has_monad_lift_t ==> has_coe
...
It produces non-termination because it triggers sub-problems of the
form (has_monad_lift_t t ?M), and this kind of sub-problem is bad
for the transitive closure rule:
instance has_monad_lift_t_trans (m n o) [has_monad_lift n o] [has_monad_lift_t m n] : has_monad_lift_t m o
The trick above only behaves well for synthesis subproblems that do not
contain sub-variables.
Note that the sub-problem (has_monad_lift_t t ?M) is created by a
similar rule used at has_coe_t.
instance {a : Type u₁} {b : Type u₂} {c : Type u₃} [has_coe a b] [has_coe_t b c] : has_coe_t a c
AND
instance {m n} [has_monad_lift_t m n] {α} : has_coe (m α) (n α) :=
We workaround the issue by disabling
instance {m n} [has_monad_lift_t m n] {α} : has_coe (m α) (n α)
and adding instances of it. Example:
meta instance (α : Type) : has_coe (tactic α) (solver α) := ...
meta instance (α : Type) : has_coe (tactic α) (prover α) := ...
meta instance (α : Type) : has_coe (tactic α) (smt_tactic α) := ...
2017-01-01 09:15:25 -08:00
Leonardo de Moura
a44a975388
feat(library/type_context,frontends/lean/elaborator): add class_exception (for max depth reached), ignore them during coercion resolution (just add a trace message)
2017-01-01 08:51:09 -08:00
Leonardo de Moura
6320168c90
chore(library/init/meta/stactic): delete dead file
2016-12-31 18:26:04 -08:00
Leonardo de Moura
35cc334b10
feat(library/init/meta): smt_tactic skeleton
2016-12-31 18:22:23 -08:00
Leonardo de Moura
66bc3c796a
feat(frontends/lean/elaborator): add extra coercion resolution rule for monads
...
We also removed the notation (♯tac) since it is not needed anymore.
@gebner, the comment at elaborator.cpp explains why you had to use the ♯
notation. The workaround is a little bit hackish, but I think it is
worth it. We will use monad lifts in many different places.
2016-12-31 13:50:15 -08:00
Leonardo de Moura
85f88c4174
refactor(library/data/monad/transformers): move transformers to init
2016-12-31 11:37:13 -08:00
Gabriel Ebner
ae7c8f4070
fix(shell/lean_js): the and_comm name is taken now
2016-12-31 15:19:58 +01:00
Gabriel Ebner
c5e0ea2600
fix(shell/lean): make progress display work on emscripten
2016-12-31 15:16:03 +01:00
Gabriel Ebner
c90530193f
fix(library/st_task_queue): handle null dependencies
2016-12-31 15:15:49 +01:00
Gabriel Ebner
6fa246032f
fix(library/native_compiler): get_exe_location does not exist on emscripten
2016-12-31 15:15:20 +01:00
Gabriel Ebner
a06d9adfec
fix(CMakeLists): do not link to libdl on emscripten
2016-12-31 15:14:53 +01:00
Gabriel Ebner
f076630511
fix(CMakeLists): override MULTI_THREAD for emscripten
2016-12-31 15:13:12 +01:00
Leonardo de Moura
fd4fffea27
chore(frontends/lean/info_manager): cleanup old code
2016-12-30 18:59:15 -08:00
Leonardo de Moura
5f87ec3356
feat(library/tactic): allow user to write their own pretty printer for tactic states
2016-12-30 18:58:50 -08:00
Leonardo de Moura
7a06912427
test(tests/lean/run): add test for destruct tactic
2016-12-30 18:38:35 -08:00