Leonardo de Moura
b7e79dea29
fix(frontends/lean/parser): bug in parse_double
2015-11-08 14:04:56 -08:00
Leonardo de Moura
ee347772d7
feat(library/meng_paulson): ignore class and class-instances when computing set of relevant theorems
2015-11-08 14:04:56 -08:00
Leonardo de Moura
023ec1ba76
feat(library): add Meng&Paulson heuristic for selecting theorems
2015-11-08 14:04:56 -08:00
Leonardo de Moura
d64b410bbd
feat(library): add declaration statistics
2015-11-08 14:04:56 -08:00
Leonardo de Moura
6df31d3406
refactor(library/data/nat/basic): mark some theorems as protected to avoid overloading
2015-11-08 14:04:56 -08:00
Leonardo de Moura
2b3af47fcf
feat(frontends/lean/pp): pretty print "num numerals" too
...
This is an useful for "eval" demos
2015-11-08 14:04:56 -08:00
Leonardo de Moura
7838ed386d
refactor(frontends/lean/pp,library/init/reserved_notation): pretty print "nat numerals" nicely even when namespace nat is not open
2015-11-08 14:04:56 -08:00
Leonardo de Moura
cd144993c0
chore(frontends/lean/prenum,library/tactic/rewrite_tactic): fix style
2015-11-08 14:04:56 -08:00
Leonardo de Moura
b777375469
fix(frontends/lean/parser): decimals
2015-11-08 14:04:56 -08:00
Leonardo de Moura
38c433dbec
fix(frontends/lean/util): bug when parsing priorities
2015-11-08 14:04:55 -08:00
Leonardo de Moura
1f5d950b46
feat(frontends/lean/inductive_cmd): add options for disabling the automatic generation of auxiliary recursors
2015-11-08 14:04:55 -08:00
Leonardo de Moura
d1e111fd6c
fix(hott,frontends/lean,library,library/tactic): make sure we can still compile the HoTT library
2015-11-08 14:04:55 -08:00
Leonardo de Moura
26eb6fa849
feat(*): new numeral encoding
2015-11-08 14:04:55 -08:00
Leonardo de Moura
8ee214f133
checkpoint: new numeral encoding
2015-11-08 14:04:55 -08:00
Leonardo de Moura
8f18532a39
fix(emacs/lean-syntax): syntax highlight for [coercions]
2015-11-08 14:04:55 -08:00
Leonardo de Moura
744d1cba3d
feat(library,hott,frontends/lean): avoid keywords with hyphen
2015-11-08 14:04:54 -08:00
Leonardo de Moura
a618bd7d6c
refactor(library): use type classes for encoding all arithmetic operations
...
Before this commit we were using overloading for concrete structures and
type classes for abstract ones.
This is the first of series of commits that implement this modification
2015-11-08 14:04:54 -08:00
Soonho Kong
a25b43f1e8
feat: do not generate leanstatic.a in EMSCRIPTEN build
2015-11-03 18:22:05 -05:00
Sebastian Ullrich
7c047def97
feat(frontends/lean/parser): recognize padded Exprs terminators
2015-10-13 09:52:35 -07:00
Sebastian Ullrich
dbfebd5409
feat(frontends/lean/scanner): add more checks to read_quoted_symbol
2015-10-13 09:52:35 -07:00
Sebastian Ullrich
6c34718cbc
chore(library,frontends/lean): remove option pp.extra_spaces
...
Obsoleted by improved pretty printer spacing
2015-10-13 09:52:35 -07:00
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