Commit graph

13774 commits

Author SHA1 Message Date
Leonardo de Moura
26da50ab0e feat(library/vm/vm_string): efficient iterator.extract
@kha I've added

   iterator.extract : iterator -> iterator -> option string

It returns `none` if the iterators are "incompatible".
If this function is inconvenient to use, we can change it and return the
empty string in these cases.

Given iterators `it1` and `it2`, if they are sharing the same string
object in memory, then the cost is O(pos(it2) - pos(it1)).
If not, we have an extra O(N) step where we check whether the strings
being iterated by it1 and it2 are equal (`N` is the size of the strings).
In most applications, I believe the iterators will share the string
object.

I didn't test the code much. BTW, I found an unrelated bug at
vm_string.cpp. So, I'm not very confident this code is rock solid.
2018-01-10 13:27:28 -08:00
Leonardo de Moura
78708b4697 fix(library/vm/vm_string): bug at iterator.set_curr 2018-01-10 13:25:26 -08:00
Leonardo de Moura
8e172afdc1 fix(library/type_context): typo 2018-01-09 16:55:44 -08:00
Leonardo de Moura
5cd0f25c1e doc(doc/changes): describe new "smart unfolding" feature 2018-01-09 16:47:32 -08:00
Leonardo de Moura
60be2bf2aa feat(frontends/lean/builtin_cmds): use type_context to implement #reduce command 2018-01-09 16:42:52 -08:00
Leonardo de Moura
0c5c1a27c6 refactor(frontends/lean, library/equations_compiler): move smart unfolding auxiliary function generation to equations_compiler module 2018-01-09 16:27:36 -08:00
Leonardo de Moura
a55b641651 chore(library/type_context): add mk_smart_unfolding_name_for 2018-01-09 16:19:59 -08:00
Leonardo de Moura
7841314795 feat(library/type_context): add option type_context.smart_unfolding 2018-01-09 16:05:26 -08:00
Leonardo de Moura
a923f3e72d doc(library/type_context): remove refl lemma comment, and document smart unfolding 2018-01-09 15:48:06 -08:00
Leonardo de Moura
c2bd8626d7 fix(library/type_context): put back same_head_symbol heuristic
The timeout at qed_perf_bug test demonstrates why it is useful.
2018-01-09 15:31:33 -08:00
Leonardo de Moura
532fa735c6 chore(library/type_context): remove global 2018-01-09 15:25:30 -08:00
Leonardo de Moura
c60b594839 chore(library/type_context): remove unnecessary #include 2018-01-09 15:18:58 -08:00
Leonardo de Moura
96792cd9aa chore(tests/lean): fix tests 2018-01-09 15:09:32 -08:00
Leonardo de Moura
6ab792733d feat(library/type_context): smart unfolding
closes #1794
2018-01-09 15:09:08 -08:00
Leonardo de Moura
bff40665b0 fix(library/aux_definition): make sure aux_definition level params are sorted
This modification guarantees that the order of universe parameters in a
declaration `f` is identical to the one in `f._meta_aux` (if it exists).
2018-01-09 13:12:23 -08:00
Leonardo de Moura
e0bdb10ab4 fix(library/type_context): clenaup whnf_head_pred
The code had a few leftovers from the old `whnf_pred` method.
We don't use `whnf_pred` anymore.
2018-01-08 11:31:03 -08:00
Leonardo de Moura
600a32d323 chore(library/equations_compiler/pack_mutual): _mutual should be a suffix instead of prefix 2018-01-08 10:43:34 -08:00
Leonardo de Moura
587540f11b feat(frontends/lean): add abbreviation command
This command is not just a cosmetic feature.
We need it to defined `id_rhs` before the tactic framework is defined.
We want `id_rhs` to be used in all definitions generated by the equation
compiler. Right now, it is only used in definitions defined after the
tactic framework.
2018-01-05 15:40:59 -08:00
Leonardo de Moura
d2ae028cbe chore(library/type_context): missing CACHE_CODE 2018-01-05 14:10:28 -08:00
Leonardo de Moura
b7de24715b fix(util/rbtree): make sure traversal methods do not crash if given function updates the tree
This is a fix for a nasty bug at `type_context::set_instance_fingerprint`.
This method traverses the local context `m_lctx` and invokes `is_class`
which may invoke `whnf`, and `whnf` may temporarily update the local
context. The local context is implemented using a `rb_tree`.
Note that the updates performed by `whnf` are temporary, but it
its representation in memory may be different.
2018-01-05 14:10:28 -08:00
Leonardo de Moura
43d7bac49b feat(library/init/meta): add support for new unify at rw tactic 2018-01-04 13:05:55 -08:00
Leonardo de Moura
040722c7e7 feat(library/init/meta): add unify config option to apply_cfg
This commit also fixes a problem in the `apply` tactic error messages.
2018-01-04 12:51:59 -08:00
Leonardo de Moura
e1b0b72bf0 chore(library/type_context): update design notes 2018-01-04 11:38:42 -08:00
Leonardo de Moura
7db5d79c76 chore(doc/faq): typo 2018-01-03 15:43:48 -08:00
Leonardo de Moura
6079189162 doc(faq): add FAQ 2018-01-03 15:39:02 -08:00
Leonardo de Moura
22270d37cf feat(library/type_context): m_update => m_update_left/m_update_right 2018-01-03 13:49:42 -08:00
Leonardo de Moura
e9650d835d chore(library/type_context): cleanup metavar method names
This commit also fixes some corner case bugs at is_def_eq
2018-01-03 13:49:42 -08:00
Leonardo de Moura
8621be6335 fix(frontends/lean): closes #1898 2018-01-02 12:33:00 -08:00
Sebastian Ullrich
acf4b56cd4 fix(library/process): uses bash's convention for exit codes 2017-12-30 19:31:55 +01:00
Sebastian Ullrich
93c90a9f5c fix(library/process): flush stdout before forking 2017-12-30 19:31:55 +01:00
Sebastian Ullrich
6216d6147c fix(leanpkg/main): avoid recursively executing leanpkg
This failed on Windows because CreateProcess was looking for a file named `leanpkg.exe`.
2017-12-30 19:31:55 +01:00
Sebastian Ullrich
2586f5b6f2 feat(system/io): get_cwd/set_cwd 2017-12-30 19:31:55 +01:00
Sebastian Ullrich
3442634181 fix(library/process): inheriting IO handles on Windows 2017-12-30 19:31:55 +01:00
Sebastian Ullrich
37e2f085e4 chore(shell/CMakeLists): leanpkg integration tests 2017-12-30 19:31:55 +01:00
Sebastian Ullrich
adc0d250fc fix(shell/lean): show progress messages only when stdout is a terminal 2017-12-30 17:39:53 +01:00
Sebastian Ullrich
6e02ce9b34 fix(.travis.yml): support combining $TEST_LEANPKG_REGISTRY and $UPLOAD 2017-12-22 11:54:29 +01:00
Sebastian Ullrich
a36376a6cf fix(frontends/lean/builtin_cmds): #eval: set message caption 2017-12-22 11:04:46 +01:00
Sebastian Ullrich
5eaa6efab9 chore(.travis.yml): fix Travis on OS X 2017-12-21 08:28:44 -08:00
Leonardo de Moura
d0dfb3f9f9 fix(library/tactic/simp_lemmas): closes #1863 2017-12-20 15:12:02 -08:00
Mario Carneiro
56c54a478f fix(init/coe): use Sort instead of Type in subtype coe 2017-12-20 14:02:03 -08:00
Sebastian Ullrich
7e4f348b8c chore(script/test_registry): Replace with leanpkg. Execute in every artifact-producing build configuration. 2017-12-20 14:01:45 -08:00
Leonardo de Moura
ddf014cc7f feat(library/init/version): add lean.githash : string 2017-12-20 14:00:41 -08:00
Leonardo de Moura
c6ddc51c2b fix(library/app_builder): typo at mk_congr
closes #1893
2017-12-20 13:13:55 -08:00
Leonardo de Moura
a2dc2b6549 fix(util): null_output_channel
On OSX, Lean was often crashing when using trace messages.
I identified a problem in the thread finalization process.
In OSX, the `silent_ios_helper` at `library/trace.cpp` was being
finalized after the `null_streambuf` at `util/null_ostream.cpp`.
There was also a memory corruption problem also related to
`null_streambuf`.

This commit fixes this problem by using the following recipe
for creating null output stream buffers in C++.

https://stackoverflow.com/questions/11826554/standard-no-op-output-stream
2017-12-20 11:50:41 -08:00
Leonardo de Moura
8de8771ee0 chore(library/vm/vm_parser): remove leftover comment 2017-12-17 09:52:44 -08:00
Leonardo de Moura
8b835f9ab6 fix(frontends/lean): fixes #1890
It fixes the issue by propagating the correct information to the
equation compiler.

The fix may be a little bit hackish, but it is comapatible with
the approach we are already using: store `m_is_meta` flag in the equation
macro.

Disclaimer: we may still have other instances of this bug, since
the information may still be propagated incorrectly in other places.

I will not refactor this code right now nor accept any PR that
changes the current design. I am busy in other parts of the code
base and do not have time to do the context switch required for
implementing this kind of change and/or review the PR and make sure I'm
happy with it.
2017-12-17 09:42:06 -08:00
Leonardo de Moura
f7bc884ae8 chore(kernel/type_checker): fix compilation warning msgs 2017-12-17 08:44:51 -08:00
Gabriel Ebner
9ef95c9dff chore(gitignore): ignore autogenerated version.lean file 2017-12-17 15:49:51 +01:00
Gabriel Ebner
860cc95730 fix(library/compiler/rec_fn_macro): do not type-check in non-meta declarations 2017-12-17 15:47:52 +01:00
Leonardo de Moura
e89eece98c feat(library/init): add lean.version : nat × nat × nat
closes #1873
2017-12-15 17:48:26 -08:00