Sebastian Ullrich
5955e3fce8
chore(library/init/lean/parser/parsec): proper namespacing
2018-07-12 10:35:22 +02:00
Sebastian Ullrich
72b255d4e1
chore(library/init/lean/parser/parser_t): rename module and type to parsec to avoid nested use of parser
2018-07-12 10:35:20 +02:00
Sebastian Ullrich
e57117a9b3
chore(library/init/lean/parser/parser_t): revert introduction of parser_t
2018-07-11 18:44:04 +02:00
Sebastian Ullrich
6fa4e56fbe
feat(library/init/lean/parser/syntax): add and test reprinter
2018-07-11 14:34:50 +02:00
Sebastian Ullrich
b2f9b2c180
feat(library/init/lean/parser/{syntax,reader}): store whitespace around tokens
2018-07-11 14:34:50 +02:00
Sebastian Ullrich
67d93ff051
fix(library/init/lean/parser/reader/token): fix loops running out of fuel
2018-07-06 15:56:01 +02:00
Sebastian Ullrich
ab19966d65
feat(library/init/lean/parser/reader): automatically promote tokens through readers
2018-07-05 18:01:17 +02:00
Sebastian Ullrich
fbdb73665f
test(tests/lean/reader1): start testing the tokenizer on core.lean and fix a comment bug
2018-07-05 16:51:48 +02:00
Sebastian Ullrich
6b6c16b6d6
chore(library/init/lean/parser/reader/module): remove theory command
...
We plan to allow `noncomputable`, as well as more modifiers, on `namespace/section`
2018-07-05 10:42:52 +02:00
Sebastian Ullrich
80745ba776
chore(library/init/data/string/basic): rename string.iterator's next_to_string to remaining_to_string
...
The old name implied that `curr` was not part of its result
2018-07-05 10:42:37 +02:00
Sebastian Ullrich
8ef87818ce
feat(library/init/lean/parser/reader): implement basic tokenizer
2018-07-05 10:42:37 +02:00
Sebastian Ullrich
d0e53be0dd
feat(library/init/lean/parser/parser_t): improve str's error message and allow error messages without 'unexpected' part
...
Showing the expected string at the initial position is much more helpful than
showing "unexpected <char>"
2018-07-05 10:20:25 +02:00
Sebastian Ullrich
9e51ff5580
feat(library/init/data/string/basic): add forward and is_prefix_of_remaining to iterator
2018-07-05 10:20:25 +02:00
Sebastian Ullrich
47f18661c5
refactor(library/init/lean/parser/parser_t): remove some uses of lift
2018-06-29 16:39:45 +02:00
Sebastian Ullrich
4e2234fd3a
feat(library/init/control/state): remove monad_state.lift to avoid allocating tuples
2018-06-28 09:56:26 +02:00
Leonardo de Moura
bda46cc9ac
feat(kernel): add inductive_decl type on top of runtime/object, and ajust kernel/inductive.cpp
2018-06-26 12:16:33 -07:00
Leonardo de Moura
bb0b43798c
feat(kernel/declaration): add wrappers for accessing inductive/constructor/recursor declarations
2018-06-25 15:01:02 -07:00
Leonardo de Moura
f62256853c
refactor(library/init/lean/declaration): use lean.declaration to implement init.meta.declaration
2018-06-25 13:08:13 -07:00
Leonardo de Moura
9c6238e1ac
refactor(kernel/declaration): reducibility hints as runtime/object
2018-06-25 08:04:44 -07:00
Leonardo de Moura
ef6ed1e660
feat(library/init/lean/declaration): add lean.declaration
2018-06-23 10:19:26 -07:00
Leonardo de Moura
fdbb1964e0
chore(library/init/lean/expr): document mvar new design
2018-06-22 15:06:36 -07:00
Leonardo de Moura
1063905d07
chore(kernel/expr): reorder constructors and fix typo
2018-06-22 12:39:16 -07:00
Leonardo de Moura
91d2ad5925
chore(library/init/meta): remove level and expr unused functions
2018-06-22 10:54:43 -07:00
Leonardo de Moura
318530cf07
refactor(library/init/meta/expr): use lean.expr
...
`expr` is finally non-meta
2018-06-22 10:29:56 -07:00
Leonardo de Moura
c30f40e4ac
feat(library/init/meta/level): use lean.level
2018-06-22 10:29:49 -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
0a5d5b9036
fix(library/init/data/list/basic): list.lt
2018-06-21 09:16:58 -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
Leonardo de Moura
140e906267
chore(library/equations_compiler): remove equation and no_equation macros
2018-06-19 13:41:07 -07:00
Leonardo de Moura
b4f4924be4
chore(library/equations_compiler): remove as_pattern macro
2018-06-19 13:41:07 -07:00
Leonardo de Moura
c0a9b0bb4b
chore(frontends/lean): remove field_notation macro
...
In the new parser, field_notation will be a syntax object.
2018-06-19 13:41:07 -07:00
Sebastian Ullrich
51d3ff21eb
feat(library/init/control/state): monad_state: add specialized MonadState methods + modify
...
Absent inlining, these may perform better than `lift` when e.g. used with an
implementation based on unboxed tuples
2018-06-19 13:01:15 +02:00
Leonardo de Moura
970d14afa9
refactor(frontends/lean/structure_instance): implement structure instances using mdata
2018-06-18 15:57:42 -07:00
Leonardo de Moura
f948892505
refactor(frontends/lean/choice): use mdata to implement choice
2018-06-18 14:21:11 -07:00
Leonardo de Moura
b84090aaca
feat(library/annotation): remove annonation macro
...
We now use the new `expr.mdata` constructor.
2018-06-18 13:39:02 -07:00
Leonardo de Moura
0847571ea6
feat(kernel): add mdata constructor
2018-06-18 13:36:22 -07:00
Sebastian Ullrich
70970ce5e0
feat(library/init/lean/parser/reader): add simplistic implementation of a tiny initial part of the Lean reader
...
Maybe 'reader' isn't the best name.
2018-06-18 19:23:58 +02:00
Sebastian Ullrich
bf9bf19215
doc(library/init/lean/parser/parser_t): some monad_parser documentation
2018-06-18 13:50:05 +02:00
Leonardo de Moura
a49de9ccd3
feat(library/init/lean): add kvmap
...
We use it to implement `expr.mdata` and `options`
2018-06-15 16:05:11 -07:00
Leonardo de Moura
e80ad07590
chore(library/init/core): remove dead code
2018-06-15 16:05:11 -07:00
Sebastian Ullrich
7ae87705c2
feat(library/init/lean/parser/parser_t): introduce monad_parser
2018-06-15 17:48:20 +02:00
Leonardo de Moura
71fc35af1d
chore(library/vm): remove meta rb_map
...
We should use the non-meta rbmap that is implemented in Lean.
2018-06-14 17:34:43 -07:00
Leonardo de Moura
0394018e98
chore(library/init/lean/macro): update TODO
2018-06-14 16:28:34 -07:00
Leonardo de Moura
882fa6e71f
fix(library/init/meta/expr): order does not match C++ implementation
2018-06-14 16:12:02 -07:00
Leonardo de Moura
73e067d361
feat(kernel): add expression literals
2018-06-14 14:55:14 -07:00
Leonardo de Moura
3e846e1fc9
chore(library): remove unnecessary inaccessible annotations
2018-06-14 11:33:00 -07:00
Leonardo de Moura
70fc656931
refactor(library/init/data/nat/basic): remove nat.less_than_or_equal inductive predicate
...
We now define nat.le using (nat.ble : nat -> nat -> bool) function.
We will add builtin support for reducing `nat.ble` efficiently when the arguments are the to be added nat literals.
2018-06-14 11:30:09 -07:00
Leonardo de Moura
021bc40e95
feat(library/init/lean/expr): new lean.expr type
2018-06-13 15:44:15 -07:00