Gabriel Ebner
6fa246032f
fix(library/native_compiler): get_exe_location does not exist on emscripten
2016-12-31 15:15:20 +01: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
5d825483c4
refactor(library/init/meta/interactive): tactic.interactive.types ==> interactive.types
...
Motivation: we will use auto-quotation for other tactic monads
2016-12-30 18:06:41 -08:00
Leonardo de Moura
b86494f0d4
feat(library/tactic): add destruct tactic that is similar to cases, but does not use revert/intro/clear
...
This tactic is useful for building more complex tactics using ematch and
cc because it does not invalidate cc_state nor ematch_state.
2016-12-30 17:05:24 -08:00
Leonardo de Moura
9c069a3eda
refactor(library/tactic/congruence): rename directory to smt
2016-12-30 13:15:19 -08:00
Leonardo de Moura
a0e9d38241
feat(library/init/meta/congruence_tactics): allow user to configure congruence_closure module
2016-12-30 12:42:10 -08:00
Leonardo de Moura
79043177ee
fix(library/tactic/congruence/congruence_closure): bug in the interface between cc and ac modules
2016-12-29 19:25:29 -08:00
Leonardo de Moura
84cc00b1ea
fix(library/tactic/ac_tactics,library/tactic/congruence/theory_ac): crash when mixing different AC symbols
2016-12-29 18:38:40 -08:00
Leonardo de Moura
a500059672
refactor(library/unfold_macros): use replace_visitor_with_tc to implement unfold_macros
...
This commit also fixes a potential peformance problem at
unfold_macros (it was eagerly expanding let-expressions).
2016-12-29 18:11:33 -08:00
Leonardo de Moura
73bf232fea
fix(library/module): deadlock?
...
This commit also undoes the hackish workaround used at e33bd2e665
@gebner Could you please take a quick look at this fix, and check
whether it makes sense?
2016-12-29 17:56:50 -08:00
Leonardo de Moura
e33bd2e665
chore(library/unfold_macros): checking whether commit 7f86ad64eb broke the remote build
2016-12-29 16:18:13 -08:00
Leonardo de Moura
3faa72de24
chore(library/tactic/ac_tactics): style
2016-12-29 15:36:38 -08:00
Leonardo de Moura
4f463d6b85
fix(library/tactic/congruence/theory_ac): typo
2016-12-29 15:04:04 -08:00
Leonardo de Moura
b3d15b196d
feat(library/tactic/ac_tactics,library/tactic/congruence/theory_ac): add superpose transition
2016-12-29 14:54:25 -08:00
Leonardo de Moura
846caf53f7
refactor(library/tactic/ac_tactics,library/tactic/congruence/theory_ac): minimize number of AC macros
2016-12-29 13:15:42 -08:00
Leonardo de Moura
7ccbf0eb02
feat(library/tactic/congruence/theory_ac): add collapse transition
2016-12-29 11:24:36 -08:00
Leonardo de Moura
7d17840e3f
feat(library/tactic/congruence/theory_ac): add compose transition
2016-12-29 11:11:44 -08:00
Leonardo de Moura
deaf252acf
chore(library/tactic/congruence/theory_ac): improve trace messages
2016-12-29 09:59:11 -08:00
Leonardo de Moura
9065cf0350
feat(library/tactic/congruence/theory_ac): add internalization, interface with congruence closure module, and trivial/simp/orient transitions
...
Still missing: superpose, collapse and compose transitions.
2016-12-28 21:35:16 -08:00
Leonardo de Moura
bb37b33237
fix(library/tactic/ac_tactics): binary.left_comm ==> left_comm
2016-12-28 21:23:07 -08:00
Leonardo de Moura
7f86ad64eb
chore(library/unfold_macros): add definition for disabling optimization
2016-12-28 21:23:07 -08:00
Leonardo de Moura
80670abb8f
fix(library/tactic/congruence/congruence_closure): assertion violation
2016-12-28 08:55:24 -08:00
Leonardo de Moura
1d519e4c7b
feat(library/tactic/congruence): add theory AC skeleton
2016-12-27 21:38:03 -08:00
Leonardo de Moura
4d0404bd6d
chore(library): define rb_expr_tree and rb_expr_map
2016-12-27 20:29:31 -08:00
Leonardo de Moura
b5c1b429e7
feat(library/tactic/ac_tactics): add ac_manager helper class
2016-12-27 17:57:56 -08:00
Leonardo de Moura
7c06306154
chore(library/type_context): reduce redundancy
2016-12-27 17:19:19 -08:00
Leonardo de Moura
d3795b20dd
feat(library/defeq_canonizer): remove thread local cache
...
The goal is to avoid hard to debug behavior because any tactic (e.g., simp/dsimp/cc) using
defeq_canonize was breaking referential transparency.
2016-12-27 12:56:39 -08:00
Daniel Selsam
1af202f816
feat(library/tactic/simp_lemmas.cpp): tracing for invalid simp_lemmas
2016-12-27 11:45:07 -08:00
Leonardo de Moura
fb54126d08
fix(library/tactic/congruence/congruence_closure): do not assume instances have been canonized.
2016-12-27 11:19:45 -08:00
Leonardo de Moura
773389f9df
feat(library/init/meta/congruence_tactics): add cc_state.gmt and cc_state.inc_gmt
2016-12-27 10:49:20 -08:00
Leonardo de Moura
f719991c71
feat(library/tactic/congruence/congruence_closure): propagate projection over constructor equality
2016-12-26 19:47:29 -08:00
Leonardo de Moura
941bbd3e96
fix(library/tactic/congruence/congruence_closure): crash when processing partially applied constructors
2016-12-26 18:51:03 -08:00
Leonardo de Moura
15f1c6bab2
chore(library/tactic/congruence/ematch): style
2016-12-26 18:23:57 -08:00
Leonardo de Moura
6661faf3da
fix(library/tactic/congruence/congruence_closure): but at add_occurrence
2016-12-26 18:13:06 -08:00
Leonardo de Moura
8419219ca6
feat(library/tactic/congruence/congruence_closure): add trace.debug.cc option
2016-12-26 18:13:02 -08:00
Leonardo de Moura
148d34b3bf
feat(library/tactic/congruence/congruence_closure): merge annotated term with term being annotated
2016-12-26 16:30:18 -08:00
Leonardo de Moura
9e46818563
feat(library/tactic/congruence): ematching
2016-12-26 15:52:18 -08:00
Leonardo de Moura
6a5f6a84cd
feat(library/tactic/congruence/hinst_lemma): add heuristic instantiation lemmas
2016-12-25 20:11:58 -08:00
Leonardo de Moura
9b35adfc8c
feat(library/tactic/congruence/congruence_closure): add support for constructor equalities
2016-12-25 12:47:17 -08:00
Leonardo de Moura
7f4160bb4b
feat(library/constructions): add helper procedures for building injection and inconsistency proofs for constructor equalities
2016-12-25 12:44:33 -08:00
Leonardo de Moura
a30081a715
feat(library/tactic/congruence/congruence_closure): interpreted values in the same equivalence class
2016-12-25 11:09:55 -08:00
Leonardo de Moura
b313328cb9
feat(library/equations_compiler): int constants
2016-12-25 10:00:18 -08:00
Leonardo de Moura
f9fb041e04
fix(library/comp_val): mk_int_val_ne_proof
...
There was a typo in the proof generation. The weird part is that the
proof was valid, but it was very inefficient to check.
The proof was valid because ((n:int) ≥ m) reduces to true/false if n and
m are integer numerals. Thus, if ((n:int) ≥ m) holds then `trivial` is a
valid proof.
However, the reduction is extremely inefficient since it relies on
computations in unary.
In the buggy version, we provided a proof for (a >= 0) where (b >= 0)
was expected. However, both types are definitionally equal to true.
This is why the proof worked.
2016-12-24 15:54:48 -08:00
Leonardo de Moura
3061d8b9a3
feat(library): add mk_int_val_ne_proof
2016-12-24 15:22:31 -08:00
Leonardo de Moura
8f401c8752
chore(library/tactic/congruence/congruence_closure): remove unnecessary field
2016-12-24 09:14:25 -08:00
Leonardo de Moura
0906d84c92
fix(library/tactic/congruence/congruence_closure): proof generation for congruence with different arity
2016-12-24 09:12:10 -08:00
Leonardo de Moura
424a6acb68
fix(library/tactic/congruence/congruence_closure): missing proof construction step
2016-12-24 08:43:04 -08:00
Leonardo de Moura
a176bd324d
fix(library/tactic/congruence/congruence_closure): check_eq_true
2016-12-23 22:24:39 -08:00
Leonardo de Moura
a13d3c83c9
fix(library/tactic/congruence/congruence_closure): heq bug and add more tests
2016-12-23 21:57:49 -08:00
Leonardo de Moura
b1b694a532
fix(library/tactic/congruence/congruence_closure): bugs, and add basic cc tactic
2016-12-23 19:30:45 -08:00