Leonardo de Moura
c48eaed9a4
chore(library): remove relation_manager
2018-09-07 12:35:04 -07:00
Leonardo de Moura
a7d08d2f3d
feat(kernel/inductive/inductive): dependent elimination for inductive predicates
...
In Lean4, we will not generate non dependent recursors for inductive
predicates. The main goal is to make the shape of the automatically
generated recursors more uniform. The non uniform representation is
leftover from Lean2. In Lean2, we wanted to support different kernels
with different features. For example: we could create proof relevant
kernels, no impredicative universe, etc.
Recall that, in a kernel with an impredicative Prop and no proof
irrelevance, inductive predicates without dependent elimination are
weaker that inductive predicates with dependent elimination.
When proof irrelevance is enabled, we can generate the dependent
recursor from the non dependent one. Actually, the module drec.cpp
generates the dependent recursor.
Now, we only support one kind of kernel, and it doesn't make sense
anymore to generate non dependent recursors for inductive predicates.
This would only produce an unnecessary asymmetry on the inductive
datatype module.
Remark: we had to create non dependent recursors to help the elaborator.
This can be avoid if we improve the elaborator. I will do that in the
new elaborator implemented in Lean.
Remark: equation lemmas are broken for definitions that pattern match on
nested inductive datatypes. The problem is the super messy
`prove_eq_rec_invertible_aux` function. This function will not be needed
after I finish the new inductive datatype support in the kernel.
cc @kha
2018-06-12 13:03:26 -07:00
Leonardo de Moura
8b8c2ddf37
chore(library/app_builder): remove dead code
2018-04-12 16:43:11 -07:00
Leonardo de Moura
bdea7d420d
chore(*): type_context ==> type_context_old
2018-03-05 12:38:24 -08:00
Leonardo de Moura
7c1447d615
fix(library/app_builder,library/util): get_level's with slightly different behavior
2017-12-15 11:33:29 -08:00
Leonardo de Moura
47994fe14e
chore(library): remove id_locked
2017-11-22 16:29:04 -08:00
Leonardo de Moura
64f575a2d5
perf(library/equations_compiler): performance problem for definitions that produce many equational lemmas
...
The new test and comment at src/library/equations_compiler/util.cpp
explains the issue.
2017-11-22 16:16:11 -08:00
Leonardo de Moura
9b03309d83
fix(library/equations_compiler): performance problem reported by @dselsam
2017-06-27 15:24:12 -07:00
Leonardo de Moura
4e496b78d5
feat(library/equations_compiler): unpack auxiliary definition
...
We still need to unpack auxiliary lemmas, and propagate information in
the frontend.
2017-05-20 20:34:18 -07:00
Leonardo de Moura
d315e424ff
feat(library/congr_lemma, library/fun_info): make sure opt_param gadget do not confuse the simplifier, fun_info, congr_lemma, etc
...
A definition such as
def f (a : nat) (b : nat := a) (c : nat := a) :=
a + b + c
should *not* be treated as a dependent function.
2017-01-30 20:23:45 -08:00
Leonardo de Moura
e8839cbcdc
feat(library/app_builder): add mk_eq_mpr that removes unnecessary propext
2017-01-20 20:27:41 -08:00
Leonardo de Moura
52c1a15313
feat(library/tactic/smt): add tactics for adding new lemmas to ematch state
2017-01-05 11:44:25 -08:00
Scott Morrison
a85e89f555
fix(app_builder.h): fixing a typo in an error message
2017-01-03 11:23:01 -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
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
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
b1b694a532
fix(library/tactic/congruence/congruence_closure): bugs, and add basic cc tactic
2016-12-23 19:30:45 -08:00
Leonardo de Moura
a4173467c4
feat(library/app_builder): use Semireducible if caller did not specify a transparency_mode and ctx.mode() is Reducible or None
...
see discussion at #1265
2016-12-23 14:41:22 -08:00
Leonardo de Moura
48cd421852
feat(library/tactic/congruence): add congruence closure basics
2016-12-21 20:46:25 -08:00
Leonardo de Moura
e5ba0d7733
chore(*): cleanup
2016-09-27 17:30:57 -07:00
Leonardo de Moura
4875741a37
feat(library/app_builder): add mk_ite
2016-09-02 17:04:01 -07:00
Daniel Selsam
4f8db64e23
refactor(simplifier): many fixes, extensions, and tests
...
fix(simplifier): missing simp rule in prop simplifier
fix(library/unfold_macros): do not look for untrusted macros when using sufficient trust level
2016-08-19 14:57:03 -07:00
Leonardo de Moura
6526a48c50
feat(library/tactic/ac_tactics): add 'perm_ac' tactic
...
TODO: add macro to postpone proof generation
2016-07-03 23:09:25 +01:00
Leonardo de Moura
2ea8b26c4f
refactor(library/io_state): move get_global_ios to io_state module
2016-06-25 20:59:52 -07:00
Leonardo de Moura
7390e8afda
refactor(library/app_builder): simplify app_builder API
2016-06-22 16:57:49 -07:00
Leonardo de Moura
6e007cd12f
fix(library/app_builder): use current context when tracing
2016-06-20 10:29:43 -07:00
Leonardo de Moura
9fad884dd8
feat(library/tactic): add tactic.mk_app for using app_builder
2016-06-14 17:13:10 -07:00
Leonardo de Moura
bceb9aa4f7
refactor(library/app_builder): port app_builder to new type_context
2016-06-14 16:16:07 -07:00
Leonardo de Moura
42cdda227a
feat(library/congr_lemma_manager): add heterogeneous equality congruence lemmas
2016-01-09 15:41:08 -08:00
Leonardo de Moura
403966792d
feat(library/app_builder): add helper heq methods
2016-01-09 12:46:14 -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
9df10a4048
feat(library): add tracing messages to app_builder and congr_lemma_manager
2015-12-08 13:36:11 -08:00
Leonardo de Moura
00e34683f2
feat(library/app_builder): (try to) address not-issue and other reducibility annotation related issues in the app_builder
2015-12-04 16:03:06 -08:00
Leonardo de Moura
c76b04719c
feat(library/app_builder): add lift_from_eq
2015-11-20 10:27:58 -08:00
Daniel Selsam
5ada4312d7
feat(library/blast/forward): propositional forward chaining
2015-11-19 11:44:53 -08:00
Leonardo de Moura
3f6b79227f
refactor(library/blast/congruence_closure,library/app_builder): add helper methods for theorems heavily used in the congruence closure module
2015-11-17 18:57:40 -08:00
Leonardo de Moura
16bcd2f522
feat(congr_lemma_manager): add congruence lemma for equivalence relation over iff/eq
2015-11-17 18:45:22 -08:00
Daniel Selsam
5e8068b2b2
feat(library/blast/simplifier): draft of fusion
2015-11-16 09:13:07 -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
1d1f043192
refactor(library/app_builder): throw exception instead of returning none_expr
2015-11-08 14:05:03 -08:00
Leonardo de Moura
ba477a0e98
feat(library/congr_lemma_manager): handle simple congruence lemmas
2015-11-08 14:05:02 -08:00
Leonardo de Moura
5a48a2cebe
feat(library/app_builder): add mk_sorry method
2015-11-08 14:05:02 -08:00
Leonardo de Moura
f84f024b92
refactor(library/app_builder): change app_builder constructor
2015-11-08 14:05:01 -08:00
Leonardo de Moura
aa697206e8
refactor(library/type_context): rename set_context to set_local_instances
2015-11-08 14:05:01 -08:00
Leonardo de Moura
01259a2d1c
feat(library/app_builder): add helper functions for creating eq.rec applications
2015-11-08 14:05:01 -08:00
Leonardo de Moura
0f631889b7
feat(library/app_builder): add helper methods for creating binary relations, and refl/symm/trans proofs
2015-11-08 14:05:00 -08:00
Leonardo de Moura
b5c40e30ef
feat(library/app_builder): add set_context
2015-11-08 14:05:00 -08:00
Leonardo de Moura
137ec27059
feat(library/app_builder): add constructor for app_builder that may take subclasses of tmp_type_context
...
We need this feature because blast has its own version of tmp_type_context.
2015-11-08 14:05:00 -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
3804281919
refactor(library/app_builder): remove app_builder Lua API
2015-11-08 14:05:00 -08:00