Leonardo de Moura
4dbae58646
fix(library/equations_compiler): make sure _unsafe_rec auxiliary definitions contain all local constants used in the safe one
...
cc @kha
2019-03-28 12:57:15 -07:00
Leonardo de Moura
1f197b5293
feat(library/equations_compiler/unbounded_rec): check whether f._unsafe_rec and f have the same type
...
`f._unsafe_rec` is the auxiliary definition created by the equation
compiler to help the code generator to produce better code.
2019-03-28 12:39:44 -07:00
Leonardo de Moura
b74a9b63de
feat(library/equations_compiler/partial_rec): improve base case synthesis
2019-03-28 10:19:57 -07:00
Leonardo de Moura
9b47d134ae
feat(library/equations_compiler/partial_rec): consider elements before : when constructing base case
2019-03-27 13:49:23 -07:00
Leonardo de Moura
62d7cc6b37
feat(library/init/wf): remove wf_term_hack
2019-03-27 12:41:16 -07:00
Leonardo de Moura
895bf2c91d
feat(library/equations_compiler/partial_rec): try assumption if inhabitant could not be found
2019-03-27 12:24:24 -07:00
Leonardo de Moura
9a071c18e7
feat(library/equations_compiler): add support for partial definitions
2019-03-27 11:09:32 -07:00
Leonardo de Moura
ef5fac1481
chore(library/equations_compiler): add partial_rec skeleton
2019-03-27 08:37:59 -07:00
Leonardo de Moura
9ddc778ac3
feat(library/equations_compiler/equations): add m_is_partial to equation header
2019-03-26 16:18:43 -07:00
Leonardo de Moura
039e7fab48
refactor(library): add suffixes.h with commonly used suffixes such as brec_on
2019-03-21 15:06:43 -07:00
Leonardo de Moura
0888dee25e
chore(*): meta ==> unsafe
2019-03-15 15:04:40 -07:00
Leonardo de Moura
0f9c52367d
feat(library/equations_compiler/elim_match): prune equations occurring after equation that contains only pattern variables
2019-02-24 18:21:22 -08:00
Leonardo de Moura
cd4b8c0c28
fix(library/equations_compiler/unbounded_rec): it was ignored m_gen_code flag
2019-02-12 17:48:11 -08:00
Sebastian Ullrich
d214df63f1
fix(library/equations_compiler/compiler): eta-expand recursive occurrences earlier
2018-12-18 15:30:38 +01:00
Sebastian Ullrich
ac1bb5dfb0
feat(library/equations_compiler/wf_rec): eta-expand unapplied recursive calls
2018-12-06 13:23:12 +01:00
Leonardo de Moura
a551fbe892
chore(library): remove dead code: comp_val
2018-11-14 16:50:21 -08:00
Leonardo de Moura
65815c512c
chore(library/vm): remove interaction_state
2018-10-23 11:32:56 -07:00
Leonardo de Moura
4cb6b1f9d5
chore(library/tactic): reduce dependencies
2018-10-23 11:32:56 -07:00
Leonardo de Moura
69070f43eb
chore(library/local_context): remove user_name indexing
...
The datastructures at `local_context` used to manage used user_names
introduce a lot of overhead. They do guarantee that `get_unused_name` is
`O(log(n))`, but they slowdown much more common operations such as:
local declaration creation/deletion. We create/delete local declarations
much more often than we use `get_unused_name`.
The corelib build time is now 34.18 secs on my desktop. It was 39.5 secs.
2018-10-17 09:24:40 -07:00
Leonardo de Moura
5d726eb210
feat(library/compiler/compiler): switch to new compiler frontend
...
We also rename `vm_compiler` module to `emit_bytecode`.
We will eventually replace this module with the new IR emitter.
2018-10-08 17:38:17 -07:00
Leonardo de Moura
6b8008a222
feat(library/compiler): new compiler entry point (skeleton)
2018-10-05 17:30:27 -07:00
Leonardo de Moura
990fbe3c30
feat(library/compiler): provide options to vm_compile
2018-09-30 08:50:40 -07:00
Leonardo de Moura
4f53e505b0
fix(library/compiler): we need to unfold auxiliary nested _match applications eagerly
2018-09-18 14:17:37 -07:00
Leonardo de Moura
3ebf1db2dc
feat(library/compiler): treat f._meta_rec applications as f applications
2018-09-17 09:48:14 -07:00
Leonardo de Moura
2abe11ce63
chore(library): _meta_aux ==> _meta_rec
2018-09-17 09:08:12 -07:00
Leonardo de Moura
23e5136ea2
fix(library/equations_compiler/wf_rec): do not generate code for auxiliary *._pack functions added by equation compiler
...
In the new equation compiler, we should not generate code in the
equation compiler.
2018-09-12 22:05:52 -07:00
Leonardo de Moura
3ec73b7156
fix(library/equations_compiler/compiler): avoid pull_nested_rec_fn by unfolding auxiliary declarations
...
The idea is to mimic the behavior of meta definitions.
This is a temporary fix. The new equation compiler will have to provide
a better solution for this problem.
2018-09-12 18:17:50 -07:00
Leonardo de Moura
3e5f59d6df
chore(kernel): remove expr.quote constructor
...
In Lean4, we will reify expressions.
2018-09-07 22:08:08 -07:00
Leonardo de Moura
13fbd8304e
chore(library,frontends/lean): use is_constructor, is_recursor, is_inductive helper functions
...
They do not throw exception if the constant is not declared in the environment.
2018-09-07 20:36:42 -07:00
Leonardo de Moura
85465885f3
chore(library/type_context): remove "frozen local instances"
...
We will re-implement the type class resolution algorithm, and the new
implementation will not rely on a persistent cache. We will improve
performance by:
1) Using better indexing data-structures.
2) Using a local cache during the search.
2018-09-07 13:17:37 -07:00
Leonardo de Moura
5d00936a8f
chore(*): remove some old_type_checker dependencies
2018-09-07 08:48:21 -07:00
Leonardo de Moura
58e91559d0
feat(*): use new inductive datatype module
2018-09-06 18:09:22 -07:00
Leonardo de Moura
8ed89c6ac3
chore(library): remove normalize.cpp
...
The command `#reduce` was also temporarily removed.
2018-09-04 10:51:14 -07:00
Leonardo de Moura
dd03747d22
chore(kernel): univ_param vs lparam, level_param_names ==> names, and other inconsistencies
2018-09-03 13:05:42 -07:00
Sebastian Ullrich
39cdae50ee
feat(library,frontends/lean): use mdata instead of hacky cache for position information in preterms
2018-09-02 18:08:41 -07:00
Leonardo de Moura
161431e995
feat(kernel): implement new mutual_definition declaration object
...
This commit also removes the old `environment::add_meta` hackish method.
2018-08-28 10:30:44 -07:00
Leonardo de Moura
4917ab0c65
chore(library): remove congr_lemma
2018-08-23 16:48:43 -07:00
Leonardo de Moura
d334bb1fa7
chore(*): remove more stuff
2018-08-23 15:56:31 -07:00
Leonardo de Moura
88c8c560a9
chore(library/equations_compiler): do not generate equation lemmas
2018-08-23 14:04:37 -07:00
Leonardo de Moura
22ba0a1155
chore(library): remove inverse.cpp
...
We used this module to implement inductive_compiler pack/unpack functions
2018-08-23 13:16:27 -07:00
Leonardo de Moura
8e351d46a1
chore(library/equations_compiler): remove support for pack/unpack
...
We don't need it anymore because we removed inductive_compiler/nested.cpp
2018-08-23 13:16:27 -07:00
Leonardo de Moura
82095cc018
refactor(kernel): split declaration into declaration and constant_info
...
This is just another step towards the design described at commit 16598391a07d4a
2018-08-22 17:53:11 -07:00
Leonardo de Moura
f3e99286bb
chore(kernel): remove certified_declaration
2018-08-22 12:11:34 -07:00
Leonardo de Moura
e9f843ddf6
refactor(kernel/expr): remove mlocal_* functions
...
The constructors `mvar` and `fvar` have different memory layouts.
2018-06-22 14:25:31 -07:00
Leonardo de Moura
ede1a51d60
refactor(kernel/declaration): remove self_opt flag from reducibility hints
...
This flag was used by the kernel to decide whether the following
heuristic should be used to avoid unfolding `f` at `is_def_eq`.
f a =?= f b
-----------
a =?= b
This heuristic was introduced at Lean1 after a discussion with
Georges Gontier. Since this discussion, we added support for
caching failures of this heuristic. This proved to be much more
effective to attack the performance problems.
Moreover, we do not even use this flag in the `type_context::is_def_eq`
used during elaboration.
The current codebase contains only one place where this flag was set to
`false`: coercions generated at structure_cmd. This change was
made at commit
1c70514231
in the Lean2 codebase when we were not caching failures and
the kernel type checker was also used during elaboration.
2018-06-22 09:02:50 -07:00
Leonardo de Moura
01ea596aea
refactor(kernel/expr): implement expr using runtime/object
2018-06-21 16:05:33 -07:00
Leonardo de Moura
fd5bfc7dfe
refactor(kernel): simplify binder_info
...
Now, it is an enumeration type like its Lean counterpart.
2018-06-20 15:31:40 -07:00
Leonardo de Moura
c5714c2fac
chore(kernel): remove expr.macro constructor
...
We are now ready to implement `expr` using `runtime/object`.
2018-06-19 17:54:43 -07:00
Leonardo de Moura
9e7e600ad7
feat(kernel): add expr.proj constructor
...
TODO: implement infer_proj and reduce_proj
2018-06-19 15:45:49 -07:00
Leonardo de Moura
d87dfbfb03
chore(library/equations_compiler): remove equations macro
2018-06-19 13:41:08 -07:00