Commit graph

5143 commits

Author SHA1 Message Date
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