Commit graph

9310 commits

Author SHA1 Message Date
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
a36376a6cf fix(frontends/lean/builtin_cmds): #eval: set message caption 2017-12-22 11:04:46 +01:00
Leonardo de Moura
d0dfb3f9f9 fix(library/tactic/simp_lemmas): closes #1863 2017-12-20 15:12:02 -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
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
Leonardo de Moura
0252393eb5 doc(library/type_context): relax preconditions for using is_def_eq in new implementation 2017-12-15 17:37:33 -08:00
Leonardo de Moura
f0352d31a1 feat(library/type_context, library): inout ==> out modifier in type class declarations
@kha: I decided to implement this change before I start the
type_context modifications. The change did not affect the corelib and
test suite much. The only annoying problem is that `out` cannot be
used to name locals anymore.
2017-12-15 14:46:47 -08:00
Leonardo de Moura
9503ceb832 doc(library/type_context): improve docstring for new design
cc @kha
2017-12-15 13:20:26 -08:00
Leonardo de Moura
7106bcf7a5 chore(frontends/lean/inductive_cmds): remove app_builder dependency 2017-12-15 11:35:34 -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
aed2c442a3 chore(library/app_builder): add assertion stating that app_builder::mk_app arguments do not contain tmp metavars 2017-12-15 11:22:15 -08:00
Leonardo de Moura
8850099e3d chore(library/tactic/smt): remove app_builder dependency 2017-12-15 11:18:41 -08:00
Leonardo de Moura
0492e49a3f fix(library/type_context): fixes #1888 2017-12-15 08:49:45 -08:00
Leonardo de Moura
73c4ea7e35 chore(library/type_context): typos and missing remarks 2017-12-14 18:26:41 -08:00
Leonardo de Moura
f0f2fc42b6 doc(library/type_context): design notes for new type_context 2017-12-14 17:57:28 -08:00
Leonardo de Moura
6c44dd1b7f feat(frontends/lean): add hide command
cc: @kha
2017-12-13 11:53:21 -08:00
Leonardo de Moura
5fa857dc69 fix(library/tactic/tactic_state): do not diplay case for empty tag 2017-12-11 16:27:03 -08:00
Leonardo de Moura
d44996e034 feat(library/init/meta): propagate tag information 2017-12-10 19:15:41 -08:00
Leonardo de Moura
e23db3970a feat(library/init/meta/tactic): apply tactic return parameter name associated with new metavars 2017-12-10 12:11:58 -08:00
Leonardo de Moura
41cfa1bf63 feat(library/init/meta/tactic): induction tactic returns constructor/param names 2017-12-10 09:46:39 -08:00
Leonardo de Moura
c65376d71c chore(library/constructions/brec_on): suffix _1 is not needed when naming brec_on functional param
Reason: we removed support for mutually inductive datatypes from the
kernel.

This change is relevant for the new goal tagging feature.
2017-12-10 09:37:12 -08:00
Leonardo de Moura
f288205cce feat(library/tactic): goal tagging 2017-12-09 16:29:03 -08:00
Leonardo de Moura
ef784ce7b8 fix(library/tactic/simp_lemmas): auto_params when adding simp lemmas 2017-12-09 09:47:39 -08:00
Leonardo de Moura
4f1f15a425 refactor(library/init/meta/match_tactic): cleanup match_tactic interface 2017-12-06 12:52:41 -08:00
Leonardo de Moura
1b34160396 feat(library/tactic/tactic_state): display number of goals 2017-12-06 11:20:09 -08:00
Leonardo de Moura
a056e87350 fix(library/init/meta/injection_tactic): add support for ginductive datatypes 2017-12-06 09:39:20 -08:00
Sebastian Ullrich
14b2c343d0 chore(util/debug): show current task in assertion message 2017-12-05 17:15:55 -08:00
Leonardo de Moura
bc89ebc19c feat(kernel/inductive): improve how induction hypotheses are named
See doc/changes.md
2017-12-05 15:58:09 -08:00
Leonardo de Moura
a2f55e5d7b feat(library/tactic/induction_tactic): new name generator for induction and cases tactics 2017-12-05 14:57:36 -08:00
Leonardo de Moura
458958b9fc feat(kernel/inductive): use ih to name induction hypothesis (instead of ih_1) when there is only one 2017-12-05 13:50:24 -08:00
Leonardo de Moura
54004d4972 fix(library/tactic/cases_tactic): try to clear input hypothesis when performing dependent elimination
The `induction h` tactic tries to clear hypothesis `h` after it is
applied. But, before this commit, `cases h` would only try to clear `h`
when performing non-dependent elimination. This was problematic when
writing tactic scripts for automating proofs.
2017-12-05 11:03:46 -08:00
Leonardo de Moura
51a87212fa chore(frontends/lean/inductive_cmds): remove copy&paste code 2017-12-04 15:56:04 -08:00
Sebastian Ullrich
450ca5834c fix(frontends/lean/parser): fix debug build 2017-11-30 17:47:49 +01:00
Sebastian Ullrich
0ca9eb16c1 fix(library/type_context): preprocess_class: always solve universe mvars in inout 2017-11-29 17:21:02 -08:00
Leonardo de Moura
4fdf452b17 fix(library/type_context): make sure all assigned metavariables are substituted 2017-11-29 17:19:15 -08:00
Leonardo de Moura
04f3684681 fix(library/tactic/cases_tactic): debug build 2017-11-29 15:05:19 -08:00
Sebastian Ullrich
c521a2d3c7 fix(library/type_context): do not cache queries containing tmp mvars 2017-11-29 14:43:33 -08:00
Leonardo de Moura
960832045f fix(library/type_context): failure condition 2017-11-29 14:35:58 -08:00
Leonardo de Moura
a411e6337c chore(library/type_context): typo 2017-11-29 14:35:36 -08:00
Leonardo de Moura
49b5fbe2c2 fix(library/type_context): add missing update
We also improved the comments, and documented alternative designs that
have been considered.
2017-11-28 08:07:11 -08:00
Leonardo de Moura
641a4548b6 fix(library/tactic/cases_tactic): use inj_arrow instead no_confusion when index is a nested and/or mutually recursive datatype
The `no_confusion` construction is only generated for inductive
datatypes supported in the kernel.
Before this commit, given `h : T`, `cases h` could leak the internal encoding
used by the inductive compiler WHEN a nested and/or mutual inductive
datatype is used to index the inductive datatype `T`.
The new test exposes the problem.

The solution implemented in this commit uses inj_arrow lemmas
generated by the inductive compiler. We only use the lemmas
if the target is a proposition. If it is not, we sign an error.
The reason for this limitation is documented in the source code.

cc @jroesch @dselsam

Jared: the information leakage has been fixed. So, students will not be
confused by the internal encoding used in the inductive compiler.
I added the example I posted on slack as a new test.
Note that, the workaround I used has been removed.
2017-11-27 21:56:35 -08:00
Sebastian Ullrich
7c63b2f046 fix(frontends/lean/parser): unicode pattern aliases 2017-11-27 12:43:15 +01:00