Leonardo de Moura
454ec00f17
feat(frontends/lean/pp): pretty print recursive calls
2016-05-05 18:10:55 -07:00
Leonardo de Moura
9a247d6ac4
feat(compiler): add auxiliary macro for compiling recursive functions
2016-05-05 17:21:45 -07:00
Leonardo de Moura
f5325f2e23
feat(compiler/lambda_lifting): try to reduce cases_on after major premise has been processed
2016-05-04 17:24:21 -07:00
Leonardo de Moura
2e970d67ba
fix(compiler/preprocess_rec): add extra comp_irrelevant step
2016-05-04 17:17:45 -07:00
Leonardo de Moura
37bc76ff09
feat(compiler/lambda_lifting): preprocess nonrecursive recusor applications using the same approach used for cases_on applications
2016-05-04 17:17:03 -07:00
Leonardo de Moura
a4ec6a3a17
feat(compiler, frontends/lean): add 'inline' definitions, and add compiler preprocessing step for unfolding them
2016-05-04 16:53:25 -07:00
Leonardo de Moura
7006c84214
feat(compiler/lambda_lifting): avoid unnecessary lambda lifting steps
...
It doesn't make sense to apply lambda lifting to lambda-expressions such as
(fun x, f x)
since we can reduce it to `f`
2016-05-03 18:48:31 -07:00
Leonardo de Moura
3dac0f6bb6
fix(compiler/simp_pr1_rec): make sure simplification support reflexive datatypes
...
Example:
inductive tree (A : Type) :=
| leaf : A → tree A
| node : (nat → tree A) → tree A
definition tree_fn : tree nat → nat
| (tree.leaf a) := a
| (tree.node f) := tree_fn (f 0)
2016-05-03 18:22:12 -07:00
Leonardo de Moura
19c87dd711
fix(compiler/simp_pr1_rec): make sure simplification is not affected by the comp_irrelevant annotation
2016-05-03 17:53:37 -07:00
Leonardo de Moura
79b8622ce5
feat(compiler/lambda_lifting): add support for cases_on recursor
...
We still have to implement support for the recursive case.
2016-05-03 17:37:56 -07:00
Leonardo de Moura
8c9cf4b0a8
feat(compiler/preprocess_rec): simplify cases_on applications
2016-05-03 17:37:27 -07:00
Leonardo de Moura
fd83b711b6
fix(library/type_context): make sure aux_recursors are not unfolded in whnf_pred IF the given predicate returns false for them.
2016-05-03 17:26:53 -07:00
Leonardo de Moura
8c878e8196
refactor(library/aux_recursors): make sure is_aux_recursor returns true for manually defined nat.cases_on
2016-05-03 17:26:11 -07:00
Leonardo de Moura
156068609f
feat(compiler/preprocess_rec): do not unfold cases_on
2016-05-03 15:42:20 -07:00
Leonardo de Moura
1c1ecdc3a9
feat(compiler/compiler_step_visitor): add visit_app
2016-05-03 15:41:50 -07:00
Leonardo de Moura
ea3fae060f
chore(compiler/preprocess_rec): use tout
2016-05-02 18:18:53 -07:00
Leonardo de Moura
da79cd7d95
feat(frontends/lean/pp): add option pp.hide_binder_types
2016-05-02 18:16:27 -07:00
Leonardo de Moura
85e7003524
refactor(compiler): expose primitive for marking computationally irrelevant terms
2016-05-02 17:33:49 -07:00
Leonardo de Moura
007d82107d
feat(compiler): add basic function inliner
2016-05-02 17:24:13 -07:00
Leonardo de Moura
da8f37d7cc
feat(compiler): mark computationally irrelevant terms
2016-05-02 16:23:54 -07:00
Leonardo de Moura
5d770f9575
feat(compiler): add lambda lifting
2016-05-01 19:33:51 -07:00
Leonardo de Moura
2fca1ac2a4
feat(library/type_context): add method mk_let
...
It is identical to mk_lambda, but makes sure all locals are actually let-decls
2016-05-01 19:32:54 -07:00
Leonardo de Moura
889bdec2f7
feat(util/rb_tree): add unsigned_rev_cmp
2016-05-01 19:30:51 -07:00
Leonardo de Moura
048376d8fd
feat(library/locals): add auxiliary method
2016-05-01 19:01:47 -07:00
Leonardo de Moura
bd18516ddd
fix(library/local_context): typo
2016-05-01 19:01:30 -07:00
Leonardo de Moura
7bf3e2ffbb
fix(compiler/simp_pr1_rec): typo
2016-05-01 16:47:53 -07:00
Leonardo de Moura
d86772e986
fix(library/type_context): compilation errors in debug mode
2016-05-01 12:05:42 -07:00
Leonardo de Moura
d64a8d24f9
fix(library/replace_visitor): remove replace_visitor_closed, it does not handle nested let-expr correctly
2016-05-01 12:04:28 -07:00
Leonardo de Moura
f2c10b0cee
feat(compiler): add compiler_step_visitor helper class
2016-05-01 12:02:42 -07:00
Leonardo de Moura
847e1c60e7
refactor(compiler/util): use new kernel type_checker
2016-05-01 10:49:36 -07:00
Leonardo de Moura
e2c1c7f3a4
feat(compiler): add mk_fresh_constant
2016-05-01 10:21:59 -07:00
Leonardo de Moura
92325f9295
fix(compiler/preprocess_rec): fix expand_aux_recursors_fn
2016-04-28 17:41:08 -07:00
Leonardo de Moura
21daa18950
chore(compiler/simp_pr1_rec): cleanup
2016-04-28 17:40:34 -07:00
Leonardo de Moura
0b3e23892b
refactor(library/replace_visitor): add replace_visitor_closed
2016-04-28 17:09:02 -07:00
Leonardo de Moura
836b3bfe95
refactor(compiler/preprocess_rec): make sure expand_aux_recursors does not depend on old code
2016-04-28 16:40:24 -07:00
Leonardo de Moura
f05e52e59f
fix(library/init/nat): recursor attribute should be in the top-level since nat was defined in the top-level
2016-04-28 16:34:37 -07:00
Leonardo de Moura
5fc90adf6b
feat(kernel): add whnf_cond to kernel type_checker
2016-04-28 16:08:03 -07:00
Leonardo de Moura
bf5e443418
feat(frontends/lean): add #compile command back
2016-04-28 15:59:38 -07:00
Leonardo de Moura
0b812bc91d
fix(kernel/declaration): typo and restoring trusted flag for constants
2016-04-28 15:59:09 -07:00
Leonardo de Moura
c14bee0bbd
feat(library/type_context): add whnf_pred helper method
2016-04-28 15:33:20 -07:00
Leonardo de Moura
7932872487
feat(kernel/declaration): untrusted constant declarations
...
This feature is useful for implementing the new tactic framework
2016-04-28 15:16:24 -07:00
Leonardo de Moura
54f68226f4
chore(frontends/lean): disable old tactic framework and blast
2016-04-25 16:22:15 -07:00
Leonardo de Moura
fdea718d9d
chore(frontends/lean): remove all #include "library/tactic.*" from frontends/lean
2016-04-25 15:41:12 -07:00
Leonardo de Moura
d88098f38d
chore(frontends/lean): remove some of the tactic support
2016-04-25 15:26:56 -07:00
Leonardo de Moura
de64750621
chore(frontends/lean): disable expressions that use tactic framework
2016-04-25 15:07:26 -07:00
Leonardo de Moura
a29eaf0067
feat(kernel): add 'trusted' flag for definitions
2016-04-11 15:49:29 -07:00
Leonardo de Moura
4728b03f20
refactor(kernel/type_checker): do not use definitional depth in the kernel type checker
2016-04-11 14:53:02 -07:00
Leonardo de Moura
d66406a1f4
feat(frontends/lean): add #elab command for testing new elaborator
2016-04-05 17:03:23 -07:00
Leonardo de Moura
03809e7973
refactor(frontends/lean): elaborator_context
2016-04-05 16:19:06 -07:00
Leonardo de Moura
2577be6344
chore(frontends/lean): remove useless elaborator options
2016-04-05 16:03:10 -07:00