Commit graph

5296 commits

Author SHA1 Message Date
Leonardo de Moura
c5d614d4d9 feat(library/norm_num): store the local context 2015-10-08 13:22:37 -07:00
Leonardo de Moura
ce6e1c9694 feat(library/class_instance_synth): add helper mk_class_instance procedure 2015-10-08 13:10:41 -07:00
Leonardo de Moura
2c7d245bbe fix(library/blast/blast): bug when translating goal metavariables into
blast mref's
2015-10-08 13:10:41 -07:00
Leonardo de Moura
5d3ed8a634 fix(library/blast/hypothesis): hypotheses are initially inactive 2015-10-08 13:10:41 -07:00
Leonardo de Moura
e4f0f6a9b4 feat(library): numeral normalization skeleton 2015-10-08 12:49:12 -07:00
Leonardo de Moura
3bb09e9959 fix(library/blast): typos 2015-10-06 08:35:24 -07:00
Leonardo de Moura
c626e2e3c6 refactor(library/blast): divide hypotheses in: assumption, active and todo
The sets active and todo are disjoint.

A metavariable declaration can only depend on assumptions.
2015-10-04 21:59:37 -07:00
Leonardo de Moura
44881552b4 refactor(library/blast): refactor hypothesis object: merge m_value and m_justification fields 2015-10-04 21:27:39 -07:00
Leonardo de Moura
7b883cae8f feat(library/blast): simplify metavar_decl 2015-10-04 18:24:21 -07:00
Leonardo de Moura
4ab14e709e feat(library/blast): finish is_def_eq/unifier for blast tactic 2015-10-03 18:19:05 -07:00
Leonardo de Moura
a446c54b87 fix(tests/kernel/max_sharing): max_sharing on OSX 2015-10-03 12:12:21 -07:00
Leonardo de Moura
cd48114c47 fix(library/blast/infer_type): type of mref's 2015-10-02 15:53:22 -07:00
Leonardo de Moura
0a3fbda050 feat(library/blast): convert universe metavariables into uref's 2015-10-02 15:50:41 -07:00
Leonardo de Moura
442cbff578 feat(library/blast): add blast tactic is_def_eq procedure (aka unification)
We still have to implement subst_mref, assign_mref, and occurs check.
2015-10-02 15:21:28 -07:00
Leonardo de Moura
d324d54d21 fix(kernel/expr): add global expressions storing Prop and Type.{1} to
hash-consing cache when max-sharing is enabled
2015-10-02 15:04:10 -07:00
Leonardo de Moura
aadac02bec feat(library/blast): add infer_type for blast tactic 2015-10-02 13:11:17 -07:00
Leonardo de Moura
ad51339a28 feat(library/blast): add whnf for blast tactic 2015-10-01 16:21:17 -07:00
Leonardo de Moura
68a34bd1ba feat(library/projection): add get_projection_info_map 2015-10-01 16:10:27 -07:00
Leonardo de Moura
3cf11dac87 feat(kernel/instantiate): make sure instantiate_type_univ_params and instantiate_value_univ_params caches are reset when we enable max-sharing 2015-10-01 15:42:33 -07:00
Leonardo de Moura
45594e86c7 feat(kernel/abstract): make sure Pi/Fun cache is reset when we enable max-sharing 2015-10-01 15:28:55 -07:00
Leonardo de Moura
5051c0031e feat(frontends/lean): add '#accessible' command for debugging purposes 2015-09-30 18:50:28 -07:00
Leonardo de Moura
44baaac53e feat(library/private): add is_private predicate 2015-09-30 18:50:09 -07:00
Leonardo de Moura
a17a6fd660 chore(frontends/lean/pp): fix style 2015-09-30 17:47:46 -07:00
Leonardo de Moura
c9af007994 chore(frontends/lean): fix style 2015-09-30 17:40:35 -07:00
Leonardo de Moura
6153ccd253 fix(frontends/lean/parse_table): compilation warning 2015-09-30 17:40:18 -07:00
Sebastian Ullrich
8a96cb6218 fix(frontends/lean/pp): extend needs_space_sep to two-token lookahead 2015-09-30 17:39:21 -07:00
Sebastian Ullrich
0fdae28439 fix(util/sexpr/format): LINE is a token separator 2015-09-30 17:38:57 -07:00
Sebastian Ullrich
da08079af9 feat(frontends/lean): allow specifying notation spacing via quoted symbols
Unquoted tokens inherit their spacing from the respective reserved definition.
2015-09-30 17:36:32 -07:00
Sebastian Ullrich
8f96b725e3 feat(frontends/lean): save transitions instead of actions in notation::parse_table 2015-09-30 17:36:32 -07:00
Sebastian Ullrich
189a300b11 feat(frontends/lean): improve pretty printing space insertion heuristic 2015-09-30 17:36:32 -07:00
Sebastian Ullrich
8fd8ff2773 fix(frontends/lean): ignore reserved notation for pretty printing
Because reserved notation uses `Prop` as a dummy expression, pretty
printing `Prop` unnecessarily invokes pp_notation on every reserved
notation entry.
2015-09-30 17:36:32 -07:00
Leonardo de Moura
cb2f93ee6a fix(kernel/expr,kernel/level): performance problem
The method unordered_set::clear takes time O(n) where n is the number of
buckets in the hashtable used to implement the set.
Moreover, it does not reduce the number of buckets to 0.
That is, it keeps `n` empty buckets.

This creates performance problems if the number of buckets gets really
huge at one point.
The tst6 at tests/kernel/expr.cpp demonstrates the problem
2015-09-30 17:25:13 -07:00
Leonardo de Moura
d07bbe7e8c fix(kernel/expr): must take binder annotations into account in the hash-consing tables 2015-09-30 17:24:41 -07:00
Leonardo de Moura
57035d3162 feat(kernel/level,library/blast/expr): add universe level hash consing support in the kernel, simplify blast/expr even more 2015-09-30 13:31:42 -07:00
Leonardo de Moura
ac7c0fffd8 refactor(library/blast): simplify blast/expr 2015-09-30 12:54:03 -07:00
Leonardo de Moura
c5603e456a feat(kernel/expr): replace "opportunistic" caching with precise caching
We also removed compilation option LEAN_CACHE_EXPRS
2015-09-30 12:29:43 -07:00
Leonardo de Moura
63c8966816 refactor(library/blast): change how we mark fixed/frozen hypothesis 2015-09-29 14:08:14 -07:00
Leonardo de Moura
eff60d835a fix(library/blast/expr): typo 2015-09-29 12:44:56 -07:00
Leonardo de Moura
bce193ed2d feat(library/blast/state): make sure the type/value of hypotheses and target is a closed term. 2015-09-29 12:42:20 -07:00
Leonardo de Moura
352d81e56a feat(library/blast/state): add assertion to make sure blast state does not contain local constants. 2015-09-29 12:32:42 -07:00
Leonardo de Moura
c652eeeac6 feat(library/data/expr): add support for regular local constants in blast tactic
We need them when inferring types and checking whether two expressions
are definitionally equal or not.

Remark: they are temporary objects, and should never be included in the
blast state object.
2015-09-29 12:29:33 -07:00
Leonardo de Moura
21193156ef refactor(library/blast): rename lref to href (hypothesis reference) 2015-09-29 12:13:20 -07:00
Leonardo de Moura
58b06d12b0 feat(library/kernel_bindings): expose get_ios in the Lua API
It gives access to the global io_state object.
2015-09-29 10:55:08 -07:00
Leonardo de Moura
be76512756 feat(library/blast/blast): normalize hypotheses and unfold reducible constants when converting goal into blast state 2015-09-29 10:42:35 -07:00
Leonardo de Moura
ca059107cf fix(library/blast/state): incorrect 'replace' 2015-09-29 10:42:00 -07:00
Leonardo de Moura
df39d2f368 feat(library/blast): add helper functions to access blast tactic thread local state/context 2015-09-29 10:04:11 -07:00
Leonardo de Moura
9622b62537 fix(library/blast/blast): update local2lref 2015-09-29 09:31:25 -07:00
Leonardo de Moura
459f31f28b feat(library/blast): add basic blast_exception 2015-09-29 09:02:58 -07:00
Leonardo de Moura
cb31189c30 chore(library/blast/branch): fix style 2015-09-28 19:07:43 -07:00
Leonardo de Moura
48e8b8b866 feat(library/blast): basic sanity checking for blast data-structures 2015-09-28 18:55:24 -07:00
Leonardo de Moura
465a939146 feat(library/bast): convert a blast branch back into a goal 2015-09-28 18:28:11 -07:00
Leonardo de Moura
3f751c170b feat(library/blast): finish goal -> state translation 2015-09-28 17:39:30 -07:00
Leonardo de Moura
913d4526cd feat(library/blast/expr): improve performance of abstract_lrefs 2015-09-28 16:42:55 -07:00
Leonardo de Moura
885f5745c4 refactor(library/blast): revise how goal meta-vars are compiled into blast mrefs 2015-09-28 16:40:19 -07:00
Leonardo de Moura
d3937aa02d refactor(library/blast): use simpler encoding for lref and mref 2015-09-28 13:02:15 -07:00
Leonardo de Moura
7cb66cdfae fix(emacs/lean-syntax): fixes #837 2015-09-28 08:45:35 -07:00
Leonardo de Moura
f01fd744cf feat(library/blast): convert goal into blast state 2015-09-25 14:44:00 -07:00
Leonardo de Moura
33f46fd137 feat(library/blast): parse blast tactic and invoke stub 2015-09-25 12:45:16 -07:00
Leonardo de Moura
e5b2cd1564 refactor(library/blast): rename goal to branch 2015-09-25 11:58:51 -07:00
Leonardo de Moura
f73051c674 fix(CMakeLists.txt): do not generate DLL when using cross-compilation
It is not clear why it doesn't work.
This is not a big because we do not use cross-compilation anymore to
generate the official Lean for Windows. We use MSys2 instead.
2015-09-25 10:40:41 -07:00
Leonardo de Moura
97cf839665 feat(api): annotate which procedures in the API may throw high-level exceptions
We say an exception is low-level (non high-level) when it is related to
memory exhaustion, system errors, and interruptions.
2015-09-23 18:39:34 -07:00
Leonardo de Moura
86e8508711 refactor(library/blast): we don't need blast::justification 2015-09-23 18:13:18 -07:00
Leonardo de Moura
7be1c015d1 checkpoint 2015-09-23 00:42:36 -07:00
Leonardo de Moura
2411fa3d2b feat(library/blast/expr): add instantiate_rev 2015-09-21 17:12:45 -07:00
Leonardo de Moura
c5921fca6d refactor(library/blast): remove dead code
We don't need context anymore. The "context" is the blast goal object.
2015-09-21 16:22:53 -07:00
Leonardo de Moura
c0cf54e8d4 chore(library/blast): fix compilation warning 2015-09-21 16:21:21 -07:00
Leonardo de Moura
bb24421232 feat(library/blast): add hash consing for expressions (and universe levels) created in blast
We had to reimplement the expr API: replace, abstract, instantiate.

Remark: blast expressions do not use metavariables and local constants,
but the new mref and lref expressions.
2015-09-21 16:17:11 -07:00
Leonardo de Moura
4cfebe7f1c refactor(kernel): move instantiate_univ_cache to separate .h file 2015-09-21 16:08:34 -07:00
Leonardo de Moura
9c09b0750b chore(kernel/expr): remove dead code 2015-09-21 15:43:51 -07:00
Leonardo de Moura
a7c2d798de refactor(kernel): move replace_cache to separate .h file 2015-09-21 15:24:45 -07:00
Leonardo de Moura
28a5ca5809 fix(frontends/lean): fixes #830 2015-09-18 07:51:02 -07:00
Leonardo de Moura
dd5bb8e7f7 chore(library/tactic/apply_tactic): remove dead code 2015-09-16 08:41:02 -07:00
Leonardo de Moura
b7271c39af chore(library/blast,runtime/cpp): fix style 2015-09-16 07:50:00 -07:00
Leonardo de Moura
5028d794ce refactor(library,library/blast): move context to blast 2015-09-16 07:49:39 -07:00
Leonardo de Moura
1259f52fa8 chore(runtime/cpp/lean_runtime): add assertion to make sure we are satisfying alignment constraints 2015-09-16 07:38:00 -07:00
Leonardo de Moura
46f7123cc8 fix(runtime/cpp): typo 2015-09-16 07:34:08 -07:00
Leonardo de Moura
00a59a50b6 feat(library/context): add "context"-like object 2015-09-15 17:14:39 -07:00
Leonardo de Moura
df3100d2cd fix(library/local_context): bug in abstract_locals procedure 2015-09-12 17:17:13 -07:00
Floris van Doorn
732897340d fix(types): change some definitions to theorems 2015-09-11 23:35:21 -07:00
Floris van Doorn
e84b22864f feat(hott): various changes in the HoTT library 2015-09-11 23:35:21 -07:00
Floris van Doorn
fd89aa77a3 feat(hott): prove Yoneda lemma 2015-09-11 23:35:21 -07:00
Leonardo de Moura
d3e6880df0 chore(compiler/util,library/aux_recursors): fix style 2015-09-11 23:27:43 -07:00
Leonardo de Moura
de2906ee8e fix(compiler): missing files 2015-09-11 23:24:09 -07:00
Leonardo de Moura
3b420057fe feat(compiler/util): add is_recursive_rec_app 2015-09-11 17:51:15 -07:00
Leonardo de Moura
6a020c65a4 refactor(compiler/simp_pr1_rec): rename variable to avoid confusion 2015-09-11 17:50:57 -07:00
Leonardo de Moura
fd2e4616cf fix(compiler/simp_pr1_rec): missing recursor nested inside recursor 2015-09-11 17:27:42 -07:00
Leonardo de Moura
088350c2aa refactor(compiler): rename rec_args.* to util.* 2015-09-11 17:15:06 -07:00
Leonardo de Moura
49a574dbbf refactor(compiler): rename elim_rec to preprocess_rec 2015-09-11 17:12:32 -07:00
Leonardo de Moura
3d10c9daf8 feat(compiler): add simplification step for definitions generated using definitional package 2015-09-11 15:02:30 -07:00
Leonardo de Moura
f134960492 feat(compiler): add auxiliary procedure for extracting which minor premise arguments are recursive 2015-09-11 15:01:12 -07:00
Leonardo de Moura
ea759cb1c9 feat(compiler): add eta expansion 2015-09-11 11:23:23 -07:00
Leonardo de Moura
b31ab7d77a feat(compiler,frontends/lean): add #compile command for debugging purposes, add compiler module 2015-09-11 10:49:07 -07:00
Leonardo de Moura
8666c92bae feat(library,library/definitional): tag auxiliary recursors automatically generated by Lean 2015-09-11 10:08:54 -07:00
Rob Lewis
8e428f2d3f fix(src/library/definitional/equations.cpp): fix typo in error message 2015-09-11 08:52:53 -07:00
Leonardo de Moura
84a80b343a chore(runtime/cpp): fix style 2015-09-11 08:44:18 -07:00
Leonardo de Moura
e36fde4d45 feat(runtime/cpp): add runtime library for Lean -> C++ compiler 2015-09-11 08:44:18 -07:00
Soonho Kong
f941af03ba feat(CMakeLists.txt): install *.md in standard/hott libraries
close #823
2015-09-10 18:13:47 -04:00
Leonardo de Moura
88739f0199 fix(tests/shared/env): memory leaks in test program 2015-09-09 10:02:18 -07:00
Leonardo de Moura
f452cabc34 feat(api/exception): add lean_exception_get_detailed_message 2015-09-08 18:00:23 -07:00
Leonardo de Moura
eec3780c6d feat(api): add API (lean_exception_to_pp_string) for pretty printing exceptions 2015-09-08 17:46:07 -07:00
Leonardo de Moura
7289e386cb feat(api/lean_expr): add lean_macro_def_eq and lean_macro_def_to_string 2015-09-08 16:51:32 -07:00
Leonardo de Moura
36d2c63ad0 feat(api): add APIs for parsing files, commands and expressions 2015-09-08 16:44:33 -07:00
Leonardo de Moura
1fdbd681cc feat(frontends/lean/builtin_exprs): name hypothesis in suffices
closes #817
2015-09-03 16:09:39 -07:00
Jeremy Avigad
7c966e3d02 fix(src/emacs/lean-syntax.el): highlight identifiers after 'proposition' and 'corollary' 2015-09-03 15:38:27 -07:00
Leonardo de Moura
57115688ea chore(util/thread): fix style 2015-09-03 15:07:55 -07:00
Leonardo de Moura
ade3f80089 fix(util/thread,init/init): initialization problem 2015-09-03 14:43:50 -07:00
Leonardo de Moura
3c50a9cff8 fix(util/thread): LEAN_AUTO_THREAD_FINALIZATION on OSX 2015-09-03 14:18:31 -07:00
Leonardo de Moura
1dc1574ad4 fix(frontends/lean/parse_table): do not add 'no_info' annotation in tactic expressions 2015-09-02 20:51:06 -07:00
Leonardo de Moura
634c0b5e9d feat(library/tactic,frontends/lean): propagate new options back to elaborator 2015-09-02 20:34:14 -07:00
Leonardo de Moura
6f88e06472 fix(tests/shared/CMakeLists): typos in test scripts 2015-09-02 12:49:43 -07:00
Leonardo de Moura
524e507022 fix(util/thread): make sure threads are finalized when using the Lean C API and threads are created by the host system 2015-09-02 12:23:10 -07:00
Floris van Doorn
a8964adb9c fix(hott): make sure there are no sorry's visible 2015-09-01 15:17:46 -07:00
Floris van Doorn
7e52c49dce feat(hott): many changes is the HoTT library
Prove that 'is_left_adjoint F' is a mere proposition, although this proof is commented out because it takes ~10 seconds
2015-09-01 15:17:46 -07:00
Floris van Doorn
c24fd508b6 feat(hott/types): add more about pathovers in type constructors, prove that double negation elimination doesn't hold universally 2015-09-01 15:17:46 -07:00
Simon Cruanes
8ce3d44302 doc(vim/README): add a readme for vim syntax coloring 2015-09-01 15:08:16 -07:00
Simon Cruanes
0a307bf76c fix(vim): small fixes 2015-09-01 15:08:07 -07:00
Simon Cruanes
94b68a8263 fix(vim/syntax/lean): match notations in vim syntax 2015-09-01 15:07:54 -07:00
Simon Cruanes
3188a42259 feat(vim): add basic syntax support for vim 2015-09-01 15:07:43 -07:00
Joe Hendrix
79b77b1011 fix(api): lean_ios_is_std returned incorrect result 2015-09-01 14:40:39 -07:00
Joe Hendrix
91dc9c7bd9 fix(api): fix typos in function name and comment 2015-09-01 14:40:34 -07:00
Leonardo de Moura
c84e886c7b fix(frontends/lean/notation_cmd): fixes #808
This commit and 2b1d2c fixes #808
2015-08-31 18:05:58 -10:00
Leonardo de Moura
08169c5ac2 fix(library/unifier): fixes #809
Daniel is correct when he says the interaction between choice
case-splits, delta case-splits, and coercions can be subtle.

I believe the following condition
https://github.com/leanprover/lean/blob/master/src/frontends/lean/elaborator.cpp#L111
reduces counter-intuitive behavior. Example, the coercion should not
influence the resulting type.
BTW, by removing this condition, many files in the library broke when I
tried to compile from scratch

      make clean-olean
      make

I used the following workaround. Given a delta-delta constraint

           f a =?= f b

If the terms are types, and no case-split will be performed, then
the delta-delta constraint is eagerly solved.
In principle, we don't need the condition that the terms are types.
However, many files break if we remove it. The problem is that many files in the standard
library are abusing the higher-order unification procedure. The
elaboration problems are quite tricky to solve.
I use the extra condition "the terms are types" because usually if they
are, "f" is morally injective, and we don't really want to unfold it.

Note that the following two cases do not work

     check '{1, 2, 3}
     check insert 1 (insert 2 (insert 3 empty))

Well, they work if we the num namespace is open, and they are
interpreted as having type (finset num)
2015-08-31 17:59:30 -10:00
Leonardo de Moura
2b1d2c21ad fix(frontends/lean/util): bug when parsing priorities and numerals are overloaded 2015-08-31 15:08:21 -10:00
Leonardo de Moura
0fb52a9a13 feat(api): add lean_get_recursor_name 2015-08-25 03:46:28 -07:00
Leonardo de Moura
1299e6ab24 test(tests/shared/env): add inductive types test 2015-08-25 03:46:28 -07:00
Leonardo de Moura
bdd8fae14d feat(api): add lean_inductive API 2015-08-25 03:46:28 -07:00
Leonardo de Moura
45163acf25 refactor(kernel/inductive): use local constants to represent introduction rules 2015-08-25 03:46:28 -07:00
Leonardo de Moura
3c4b3c1ad6 test(tests/shared/env): add total order simple tests 2015-08-23 19:55:45 -07:00
Leonardo de Moura
78e9a57e06 feat(api): add total orders for lean_name, lean_univ and lean_expr APIs 2015-08-23 19:42:22 -07:00
Leonardo de Moura
8c30067f8c fix(util/stackinfo): lazy thread initialization
We also add a multithread example for the C API.
This example reproduces a problem reported by Joe Hendrix.
2015-08-23 19:08:02 -07:00
Leonardo de Moura
e03c0ae93d chore(api/module): fix style 2015-08-23 09:55:25 -07:00
Leonardo de Moura
38b0a6e22c test(tests/shared/env): add type checker tests 2015-08-23 09:49:33 -07:00
Leonardo de Moura
23a490f3f1 feat(api): add lean_type_checker API 2015-08-23 09:34:31 -07:00
Leonardo de Moura
2926b41e9f fix(tests/shared/env): memory leak 2015-08-23 09:24:05 -07:00
Leonardo de Moura
b42e561bb1 feat(api): expose lean_expr pretty printing function 2015-08-23 09:09:17 -07:00
Leonardo de Moura
3798493d99 test(tests/shared/env): add import module test 2015-08-23 08:54:11 -07:00
Leonardo de Moura
6f78304f31 feat(api): APIs for importing/exporting modules 2015-08-23 08:30:55 -07:00
Leonardo de Moura
5263ef4a74 feat(api): add lean_ios API 2015-08-23 08:19:25 -07:00
Leonardo de Moura
98a27c53de refactor(api/env): use module procedures 2015-08-23 07:49:06 -07:00
Leonardo de Moura
c83b72e9b6 test(tests/shared/env): add tests for lean_env API 2015-08-22 13:35:35 -07:00
Leonardo de Moura
0aff6bd747 feat(api): add lean_env API 2015-08-22 12:37:22 -07:00
Leonardo de Moura
62e396bec6 test(tests/shared): add some tests for lean_expr C API 2015-08-22 11:08:07 -07:00
Leonardo de Moura
a7e4cd94c2 feat(api): add lean_decl API 2015-08-22 10:41:33 -07:00
Leonardo de Moura
8272ff61f6 fix(tests/shared/name): access violation 2015-08-21 18:33:06 -07:00
Leonardo de Moura
2b6033f42e feat(api): add lean_expr API 2015-08-21 17:45:13 -07:00
Leonardo de Moura
a3c404ac3b feat(library/tactic/apply_tactic): do not report elaboration failure in apply tactic when proof_state.report_failure() is false 2015-08-21 15:45:52 -07:00
Leonardo de Moura
9bae1eee29 feat(api/univ): add lean_list_univ API 2015-08-21 15:25:12 -07:00
Leonardo de Moura
35d3c6f5a5 test(tests/shared/name): add tests for lean_list_name API 2015-08-21 15:12:43 -07:00
Leonardo de Moura
adeba5c05e feat(api/name): add lean_list_name API 2015-08-21 15:04:19 -07:00
Leonardo de Moura
3747ba095a fix(frontends/lean/elaborator): incorrect assertion
It is supposed to be "!first implies is_local(from)"

fixes #807
2015-08-20 17:56:20 -07:00
Leonardo de Moura
c32a95bb13 chore(tests/shared/options): fix compilation warning 2015-08-19 08:13:58 -07:00
Leonardo de Moura
87349dc355 feat(frontends/lean/token_table): add 'proposition' keyword 2015-08-19 08:05:31 -07:00
Leonardo de Moura
3a72cd9621 fix(frontends/lean): rename multiword keyword "suffices to show" to "suffices" 2015-08-18 17:57:53 -07:00
Daniel Selsam
0942e94321 fix(library/export): typos 2015-08-18 17:49:03 -07:00
Leonardo de Moura
2b52198702 fix(library/unfold_macros): fixes #806 2015-08-18 17:46:47 -07:00
Leonardo de Moura
3ce8c5d6f7 feat(frontends/lean): add "suffices to show A, from B, C" construct 2015-08-18 17:04:38 -07:00
Leonardo de Moura
a18983c1aa fix(api/lean_univ): typo 2015-08-18 16:01:50 -07:00
Leonardo de Moura
858971c3a5 test(tests/shared): add test for the universe C API 2015-08-18 15:32:27 -07:00
Leonardo de Moura
d627414f9b feat(api): expose universe expressions in the C API 2015-08-18 15:07:44 -07:00
Leonardo de Moura
0909c8f08f chore(CMakeLists): use --export-all in cygwin 2015-08-18 13:57:01 -07:00
Leonardo de Moura
53bf7f5ff1 fix(src/tests/shared/name): invalid delete 2015-08-18 13:56:06 -07:00
Leonardo de Moura
81baa64c77 chore(src/api/options): fix style 2015-08-18 12:43:58 -07:00
Leonardo de Moura
a1798ed331 test(tests/shared): add test for the options C API 2015-08-18 12:18:33 -07:00
Leonardo de Moura
da11f7738d feat(api): expose configuration options in the C API 2015-08-18 11:57:27 -07:00
Leonardo de Moura
e8e315ff14 refactor(api): uniform names 2015-08-18 11:01:46 -07:00
Leonardo de Moura
617f55b947 chore(src/api): workaround style 2015-08-18 10:13:07 -07:00
Leonardo de Moura
52c4133021 test(tests/shared/name.c): add anonymous unique test 2015-08-18 10:06:50 -07:00
Leonardo de Moura
549eec8a06 test(tests/shared/name.c): test exception 2015-08-17 18:22:59 -07:00
Leonardo de Moura
9d486a4e88 feat(tests/shared): add test for the hierarchical name C API 2015-08-17 17:48:09 -07:00
Leonardo de Moura
42d41fb276 feat(api): expose hierarchical names in the C API 2015-08-17 17:23:10 -07:00
Leonardo de Moura
21c41f50ea fix(frontends/lean/elaborator): fixes #803 2015-08-17 14:56:41 -07:00
Leonardo de Moura
4d3ed6ca43 feat(init/init): automatically initialize lean shared library 2015-08-17 14:18:32 -07:00
Leonardo de Moura
cb7ca51dcb feat(library/unfold_macros): avoid unnecessary get_value 2015-08-17 13:03:08 -07:00
Leonardo de Moura
b07a364d2f feat(frontends/lean/parser): process multiple parsing actions
closes #800
2015-08-17 09:42:10 -07:00
Leonardo de Moura
d913c04e90 feat(frontends/lean/parse_table): add simple notion of "compatible" parsing actions
See issue #800
2015-08-17 08:41:30 -07:00
Leonardo de Moura
933850e0d1 fix(library/shared_environment): compilation warning 2015-08-17 08:41:12 -07:00
Leonardo de Moura
edb4c09bc1 fix(frontends/lean,kernel/inductive): compilation errors in Debug mode 2015-08-16 19:02:48 -07:00
Leonardo de Moura
ea04414058 feat(frontends/lean): allow user to overload notation containing foldr/foldl and/or scoped expressions
see new tests for a summary of new features

see issue #800
2015-08-16 18:24:30 -07:00
Leonardo de Moura
ffde40a500 fix(frontends/lean/parse_table): missing condition 2015-08-16 15:35:17 -07:00
Leonardo de Moura
eb8f586dba fix(library/normalize): fixes #801 2015-08-16 14:22:02 -07:00
Leonardo de Moura
1d6bebf3a3 feat(frontends/lean/parse_table): start support for multiple "actions" in parsing tables 2015-08-16 13:52:06 -07:00
Leonardo de Moura
5f5642c4ce fix(kernel/inductive): compilation error with clang++ 2015-08-15 15:06:57 -07:00
Leonardo de Moura
7bc8673786 feat(library/module): efficient inductive_reader
Do not check imported inductive declarations when trust level is greater than 0.
2015-08-15 14:48:49 -07:00
Leonardo de Moura
e80d9685e5 refactor(kernel/inductive): add certified_inductive_decl object
We will use this object to implement a more efficient import procedure
2015-08-15 13:26:38 -07:00
Leonardo de Moura
b21d85d19e chore(library/coercion): fix style 2015-08-14 18:49:01 -07:00
Daniel Selsam
7223293a93 feat(library/coercion): improve error message when coercion has no viable source 2015-08-14 18:44:44 -07:00
Daniel Selsam
5bef45b1fd feat(library/coercion): improve error message when target is unacceptable 2015-08-14 18:44:44 -07:00
Daniel Selsam
f4e1e9d671 feat(library/coercion): closes #794
Include level information in primary coercion error message if
pp_options are set to display levels.
2015-08-14 18:44:43 -07:00
Leonardo de Moura
6c934229f7 feat(kernel,library/module): only module reader can add declarations without type-checking them 2015-08-14 18:37:17 -07:00
Leonardo de Moura
11558df6be chore(util/serializer): fix style 2015-08-14 18:34:33 -07:00
Leonardo de Moura
d1f13d2871 perf(library/module): skip checksum if trust level is very high 2015-08-14 18:23:12 -07:00
Leonardo de Moura
d3d1b58fb4 perf(util/serializer): minor performance improvement 2015-08-14 18:13:08 -07:00
Leonardo de Moura
cc8b5d2d6e perf(library/unfold_macros): skip contains_untrusted_macro if trust level is very high 2015-08-14 18:10:19 -07:00
Leonardo de Moura
849b99d244 perf(library/module): use block read 2015-08-14 17:56:21 -07:00
Leonardo de Moura
54a49bbf2e feat(util/serializer): simple compression trick
reduces the standard library .olean files from 7.2 Mb to 6.1 Mb
2015-08-14 15:27:44 -07:00
Leonardo de Moura
5a6a4b45c1 fix(library/definitional/equations): fixes #796 2015-08-14 14:39:23 -07:00
Leonardo de Moura
8c4e5c82ab fix(tests/shared/CMakeFiles): make sure the working directory is the one containing the DLL 2015-08-13 12:31:30 -07:00
Leonardo de Moura
5f8b600024 fix(CMakeLists): use --export-all option when creating DLL on Windows 2015-08-13 12:14:24 -07:00
Leonardo de Moura
3de290db35 fix(tests/shared): include shared_test in the test suite 2015-08-13 11:52:38 -07:00
Leonardo de Moura
52138b8232 fix(CMakeLists): dylib generation 2015-08-13 11:50:41 -07:00
Leonardo de Moura
98bfb8467a test(test/shared): add small program for testing shared library 2015-08-13 11:48:54 -07:00
Leonardo de Moura
8746484b8f fix(CMakeLists): DLL generation 2015-08-13 11:38:33 -07:00
Leonardo de Moura
498afc1e6f feat(CMakeLists): add shared library 2015-08-13 11:21:05 -07:00
Leonardo de Moura
602626803b fix(frontends/lean/builtin_cmds): 'print axioms' and theorem queue 2015-08-11 21:08:45 -07:00
Leonardo de Moura
5d8d226640 fix(frontends/lean/parser): add support for decimals
Decimal numbers are notation for rationals.
If rat.of_num is not available, then an error is generated.

closes #793
2015-08-11 18:44:48 -07:00
Leonardo de Moura
66a59d5b51 feat(frontends/lean/util): remove hack that overrides priority namespace
closes #789
2015-08-11 18:01:40 -07:00
Leonardo de Moura
0b8f57841a feat(frontends/lean/decl_cmds): closes #791 2015-08-11 17:53:33 -07:00
Soonho Kong
6443de67d4 feat(emacs/lean-mode): lean-exec-at-pos uses timer to wait until flycheck process is over
close #790
2015-08-11 20:17:53 -04:00
Daniel Selsam
40471ca8e3 doc(frontends/lean/elaborator): assert invariant in visit_app 2015-08-11 17:02:38 -07:00
Leonardo de Moura
23118371d1 refactor(library/aliases): cleanup 2015-08-11 06:41:56 -07:00
Soonho Kong
00582934ec feat(CMakeLists.txt): update CXX_FLAGS_EMSCRIPTEN
Add: -O3 -s ALLOW_MEMORY_GROWTH=1 --llvm-lto 1

Close leanprover/tutorial#96
2015-08-10 02:03:39 -04:00
Soonho Kong
938dae7b19 refactor(emacs/lean-syntax.el): clean up regexps for syntax 2015-08-08 09:55:16 -07:00
Leonardo de Moura
1f34c72192 fix(frontends/lean/parser): fixes #770 2015-08-08 09:48:31 -07:00
Leonardo de Moura
dc2e702373 feat(library/unifier): generate approximate solution for universe constraints of the form (max u ?m =?= max u v)
closes #777
2015-08-08 09:29:59 -07:00
Leonardo de Moura
6c5832a564 feat(frontends/lean/decl_cmds): allow recursive examples
closes #774
2015-08-08 08:26:25 -07:00
Leonardo de Moura
06f20694c8 fix(frontends/lean/builtin_exprs): fixes #768 2015-08-08 04:20:17 -07:00
Leonardo de Moura
d46dbce86e feat(library/tactic/tactic): apply substitution in 'then' combinator
closes #778
2015-08-08 03:42:21 -07:00
Jeremy Avigad
d6bde18b46 feat,refactor(library/data/{finset,set}/*,src/emacs/lean-input.el): add powerset and notation, and some tidying 2015-08-07 13:45:15 -07:00
Leonardo de Moura
5568085ab9 fix(frontends/lean/elaborator): closes #771
Produce nicer error message when type/goal is a metavariable and
universe metavariables have already been instantiated with universe
parameters.
2015-08-07 13:29:22 -07:00
Leonardo de Moura
6a079fdd2d fix(library/tactic/exact_tactic): fixes #779 2015-08-07 13:29:22 -07:00
Leonardo de Moura
f21647899f feat(frontends/lean/builtin_exprs): rename 'show' hidden name to 'this'
This is useful if 'show' is recursive
2015-08-07 13:29:21 -07:00
Soonho Kong
f9b069b6a5 fix(emacs/lean-company.el): set timeout for company-lean--import-candidates
Custom variable lean-company-import-timeout is added (default: 1sec).

Close #766
2015-08-06 22:53:49 -04:00
Soonho Kong
a4014fb532 feat(emacs/lean-util.el): add lean-find-files 2015-08-06 22:48:00 -04:00
Soonho Kong
7d1895928a fix(emacs/lean-mode.el): use original extension when make temp-file
close #767
2015-08-05 12:51:09 -04:00
Soonho Kong
795728267d doc(emacs/README.md): update MELPA instruction 2015-08-03 09:27:16 -04:00
Leonardo de Moura
60ba3d15ff feat(library/data/matrix): add basic matrix module 2015-08-01 19:33:31 +01:00
Leonardo de Moura
1f304ad4b9 fix(frontends/lean/pp): pretty printing 'binder'
This commit also replaces many occurrences of 'binders' with 'binder'.
2015-07-31 11:27:38 -07:00
Leonardo de Moura
8f5a760b89 feat(frontends/lean/elaborator): display the whole proof state in option "--goal"
see issue #755
2015-07-31 08:56:17 -07:00
Leonardo de Moura
f264adfa92 fix(library/export): bug in --export-all option 2015-07-30 17:23:38 -07:00
Leonardo de Moura
9bf64c10fd feat(library/export): export the whole environment when using "--expor-all" 2015-07-30 15:04:49 -07:00
Soonho Kong
bed751a2d7 feat(emacs/lean-settings.el): add lean-keybinding customize group
close #758
2015-07-30 11:33:17 -07:00
Leonardo de Moura
656b642c4a fix(frontends/lean): identifier size when using unicode
see issue #756
2015-07-30 11:32:24 -07:00
Leonardo de Moura
a39cac4fad feat(frontends/lean): improve '--info' command line option
see issue #756
2015-07-30 11:05:39 -07:00
Soonho Kong
c390550340 feat(emacs/lean-mode.el): add show-goal-at-pos and show-id-keyword-info in the menu 2015-07-30 10:46:47 -07:00
Soonho Kong
46a79ec43d feat(emacs/lean-mode.el): add lean-show-id-keyword-info
close #756
2015-07-30 10:46:10 -07:00
Leonardo de Moura
cc4f18c062 feat(frontends/lean): add "--info" command line option for extracting identifier/keyword information
see issue #756
2015-07-30 10:18:03 -07:00
Leonardo de Moura
be61fb0566 feat(frontends/lean/elaborator): add "noncomputable theory" command, display "noncomputable" when printing definitions
When the command "noncomputable theory" is used, Lean will not sign an
error when a noncomputable definition is not marked as noncomputable
2015-07-29 17:54:35 -07:00
Leonardo de Moura
384ccf2b6c feat(frontends/lean/elaborator): change behavior of "show goal" for incomplete "by tactic"
If "by tactic" did not completely solved the goal, then we show the
final state when the user presses "C-c C-g"
2015-07-29 17:34:42 -07:00
Leonardo de Moura
b3707ab54a feat(library/tactic/unfold_rec): fixes #753 2015-07-29 17:13:02 -07:00
Leonardo de Moura
ed41a01a51 fix(frontends/lean/elaborator): fixes #755 2015-07-29 16:41:30 -07:00
Leonardo de Moura
0bda39c8ac feat(frontends/lean): check for noncomputability when moving theorems from theorem_queue to environment 2015-07-29 13:01:07 -07:00
Leonardo de Moura
69ead0ddd8 feat(frontends/lean/decl_cmds): reject unnecessary "noncomputable" annotations 2015-07-29 13:01:07 -07:00
Leonardo de Moura
74be3031b1 feat(frontends/lean/decl_cmds): sign an error if "noncomputable" keyword is used in the HoTT library or with non-definitions 2015-07-29 13:01:06 -07:00
Soonho Kong
8a9f774611 fix(emacs/lean-mode.el): lean-exec-at-pos don't ask to save
close #752
2015-07-29 10:28:18 -07:00
Soonho Kong
5d159ea664 fix(emacs/lean-mode.el): fix wrong parens in lean-show-goal-at-pos 2015-07-28 22:11:35 -07:00
Leonardo de Moura
308af87b69 feat(library): add 'noncomputable' keyword for the standard library 2015-07-28 21:56:35 -07:00
Leonardo de Moura
a009db2902 feat(library): add module for tracking noncomputable definitions 2015-07-28 18:15:26 -07:00
Leonardo de Moura
7e8a394caf chore(tests/lean): fix style and adjust tests 2015-07-28 18:15:25 -07:00
Leonardo de Moura
b81d4d50f1 feat(frontends/lean/bultin_cmds): add 'print axioms <declname>' command that prints axioms a giving declaration depends on 2015-07-28 18:15:25 -07:00
Leonardo de Moura
8048cbd6f2 feat(kernel): do not hide semi-constructive axioms 2015-07-28 18:15:25 -07:00