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
Soonho Kong
1829e64a76
feat(emacs/lean-server.el): lean-server-consume-all-async-tasks restart lean-server if necessary
...
related issue: #263
2015-07-28 18:14:16 -07:00
Leonardo de Moura
80e3da0526
fix(library/util): fixes #751
2015-07-28 16:30:20 -07:00
Leonardo de Moura
ad5d792a8e
feat(library,shell): add --export-all command line option
2015-07-28 15:54:44 -07:00
Soonho Kong
a5da840593
fix(emacs/lean-mode.el): typo
2015-07-28 14:46:59 -07:00
Soonho Kong
0fed6129df
feat(emacs/lean-mode): add lean-show-goal-at-pos
...
which is bound to 'C-c C-g' by default. Depending on the current char,
it invokes lean-server with either '--goal' or '--hole' option.
close #749
2015-07-28 14:17:36 -07:00
Leonardo de Moura
cfa9412f96
fix(frontends/lean): "show goal" localization, add "position", support "by tactic"
2015-07-28 12:48:12 -07:00
Leonardo de Moura
0dc8dc999e
fix(library/tactic/rewrite_tactic): crash when trying to unfold constructor
2015-07-28 12:43:56 -07:00
Soonho Kong
f71987612f
fix(emacs/lean-syntax.el): update lean-info syntax highlight
...
close #748
2015-07-28 11:51:01 -07:00
Soonho Kong
72f0fc29fd
fix(emacs/lean-mode.el): check header and footer in lean-exec-at-pos-extract-body
...
close #747
2015-07-28 11:13:31 -07:00
Leonardo de Moura
08b23d8b4f
test(tests/lean/extra): add test for "show goal" feature
2015-07-27 21:03:16 -07:00
Soonho Kong
e61a61da8b
feat(emacs/lean-mode.el): use lean-info-mode in lean-exec-at-pos
2015-07-27 20:26:28 -07:00
Leonardo de Moura
91f83835bb
fix(frontends/lean/elaborator): "show goal" command line option for nested "begin...end" blocks
2015-07-27 20:11:27 -07:00
Soonho Kong
a9630edfed
feat(emacs/lean-mode.el): handle delimiter for lean-exec-at-pos
...
Related issue: #499
2015-07-27 19:28:16 -07:00
Daniel Selsam
ee11fca69b
refactor(src/library/export): disambiguate export keywords
2015-07-27 19:08:26 -07:00
Leonardo de Moura
b4504357b2
fix(shell/lean): do not update cache file in query mode
...
query mode is "show goal" and "show hole" command line options
2015-07-27 19:00:36 -07:00
Leonardo de Moura
d50fa26ca2
fix(frontends/lean/parser): caching problem when using "show hole" and "show goal" command line options
2015-07-27 18:55:20 -07:00
Leonardo de Moura
0786841c71
feat(frontends/lean): use uniform delimiter
2015-07-27 18:45:33 -07:00
Leonardo de Moura
3fb16d6287
feat(frontends/lean): add "show hole" command line option
2015-07-27 18:42:57 -07:00
Leonardo de Moura
68370d5c8e
feat(frontends/lean): process "show goal" command line option
2015-07-27 17:44:43 -07:00
Daniel Selsam
214b5b8b58
refactor(src/library/export): prefix export keywords with #
2015-07-27 15:07:12 -07:00
Leonardo de Moura
b2bd6b1ff8
feat(library/simplifier): simplification sets for hypothesis and conclusion
2015-07-27 14:59:21 -07:00
Leonardo de Moura
966e0109ff
feat(library/simplifier): initialize simplification set.
2015-07-27 14:59:21 -07:00
Leonardo de Moura
4131bb3dec
feat(util/name_set): add to_name_set auxiliary function
2015-07-27 14:59:21 -07:00
Soonho Kong
6de86ff749
fix(emacs/lean-mode.el): attach sentinel to lean-exec-at-pos
...
Close #499
Usage:
(add-hook 'lean-mode-hook '(lambda ()
(lean-define-key-binding "\C-c\C-g"
'(lean-exec-at-pos "lean-goal" "*Lean Goal*" "--goal"))))
2015-07-27 13:17:16 -07:00
Leonardo de Moura
5c7a20e5bd
fix(library/unifier): crash when unifying constraints of the form (pr t =?= s)
...
where pr is a projection and t is a stuck term
see issue #737
2015-07-24 11:52:46 -07:00
Leonardo de Moura
bcf057f4f3
feat(frontends/lean): display '[congr]' attribute when printing theorems
2015-07-23 18:52:59 -07:00
Leonardo de Moura
3e6b80d38c
feat(library/util): disable local constant purification when pretty printing goals
...
This feature generates confusion.
2015-07-23 18:52:59 -07:00
Leonardo de Moura
f1a19a10c4
fix(library/util): incorrect hypothesis renaming when pretty printing goals
2015-07-23 18:52:59 -07:00
Leonardo de Moura
e221d38790
feat(library/tactic/assert_tactic): allow duplicate names for hypotheses in assert tactic
2015-07-23 18:52:59 -07:00
Leonardo de Moura
e0209a1532
feat(frontends/lean): better error localization for 'have'-expressions in tactic mode
2015-07-23 18:52:59 -07:00
Leonardo de Moura
946308b187
feat(frontends/lean): allow anonymous 'have'-expressions in tactic mode
2015-07-23 18:52:59 -07:00
Leonardo de Moura
5f4576a7f7
test(tests/lean): add test for '[congr]' attribute validation
2015-07-23 18:52:59 -07:00
Leonardo de Moura
844caf32e4
feat(frontends/lean/bultin_cmds): add 'print [congr]' command for displaying active congruence rules
2015-07-23 18:52:59 -07:00
Leonardo de Moura
3329dc0ec7
feat(library/simplifier/simp_rule_set): add '[congr]' attribute validation
2015-07-23 18:52:58 -07:00
Leonardo de Moura
933f056fff
feat(library/simplifier): add API for extracting simplification rules defined in a given namespace
2015-07-22 18:47:56 -07:00
Leonardo de Moura
18dd7c13f9
feat(frontends/lean): add '[congr]' attribute
2015-07-22 17:21:47 -07:00
Leonardo de Moura
a07b42ad9e
refactor(library/simplifier): the simplifier expects relations to be transitivie and reflexive
2015-07-22 15:46:00 -07:00
Leonardo de Moura
cc396cba76
feat(frontends/lean): allow backticks in binder declarations
2015-07-22 13:54:47 -07:00
Leonardo de Moura
8085123119
refactor(library/simplifier): rename 'rewrite_rule' to 'simp_rule'
2015-07-22 10:39:30 -07:00
Leonardo de Moura
e969c7a8d6
refactor(library): remove 'simp' hack
2015-07-22 10:13:19 -07:00
Leonardo de Moura
092c8d05b9
feat(frontends/lean,library): rename '[rewrite]' to '[simp]'
2015-07-22 09:01:42 -07:00
Leonardo de Moura
b5c287d3d1
refactor(library/simplifier): cleanup
2015-07-22 08:39:55 -07:00
Leonardo de Moura
e74c6eef3d
feat(library/simplifier): add 'simp.funext' and 'simp.propext' options
2015-07-21 18:23:10 -07:00
Leonardo de Moura
0c0f07332e
feat(library/simplifier/simp_tactic): add simp tactic configuration options
2015-07-21 16:15:04 -07:00
Leonardo de Moura
b02b3d362f
feat(library/simplifier): add simplifier procedure skeleton
2015-07-21 15:08:56 -07:00
Leonardo de Moura
9a85a95893
fix(cmake/Modules/CleanOlean.cmake): problem with 'clean-olean'
...
For some reason it was not working anymore on OSX
2015-07-20 23:21:51 -07:00
Leonardo de Moura
b9451549d1
feat(frontends/lean): add type
notation for referencing hypotheses
2015-07-20 21:43:47 -07:00
Leonardo de Moura
18dd57978d
feat(CMakeLists.txt): .dmg generation
2015-07-20 20:33:33 -07:00
Leonardo de Moura
a99c44b644
fix(CMakeLists.txt): disable problematic tests on Windows
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2015-07-20 08:14:31 -07:00
Leonardo de Moura
812ddf1ef5
feat(frontends/lean): add 'suppose'-expression
...
It is a variant of 'assume' that allow anonymous declarations.
2015-07-19 12:15:12 -07:00
Leonardo de Moura
92f8eb173b
feat(frontends/lean): use 'this' as the name for anonymous 'have'-expression
2015-07-18 13:36:05 -05:00
Soonho Kong
c72e661a9e
feat(CMakeLists.txt): add option USE_GITHASH (default:on)
...
related issue: #733
2015-07-17 16:55:22 -04:00
Soonho Kong
014a5ea83e
fix(emacs/load-lean.el): add let-alist
...
close #729
2015-07-15 16:07:35 -07:00
Leonardo de Moura
f5c546e810
feat(frontends/lean/parse_simp_tactic): add simp tactic parser
2015-07-14 14:21:39 -04:00
Leonardo de Moura
3ab0e07ba9
feat(frontends/lean): add simp tactic frontend stub
...
This commit also removes the fake_simplifier. It doesn't work anymore
because simp is now a reserved word.
2015-07-14 09:54:53 -04:00
Leonardo de Moura
84b439507b
chore(library/tactic): fix style
2015-07-13 19:43:33 -04:00
Leonardo de Moura
c2edc330ef
fix(library/tactic/rewrite_tactic): remove incorrect assertion
2015-07-13 19:19:12 -04:00
Leonardo de Moura
267545ca0c
feat(frontends/lean): parse 'with_options' tactical
...
see issue #492
2015-07-13 19:13:41 -04:00
Leonardo de Moura
9c5bf98ed6
feat(library/tactic): add 'with_options' tactical
...
see issue #494
2015-07-13 18:34:31 -04:00
Leonardo de Moura
0f714e36b0
feat(library/tactic): add 'location' macro
2015-07-13 17:56:42 -04:00
Leonardo de Moura
58291024a9
fix(library/simplifier/ceqv): polish conditional rewrite internalization procedure
2015-07-13 16:40:18 -04:00
Leonardo de Moura
3cb8568fb5
feat(library/simplifier): we can "rewrite" with transitive relations
...
The simplifier does not really need the relation to be an equivalence.
Transitivity is the main required property (we need to chain rewrites
together).
2015-07-12 14:24:05 -04:00
Leonardo de Moura
f8d472c9f1
feat(frontends/lean/parse_rewrite_tactic): change the semantics of rewrite[↑f] when f is recursive
...
After this commit it behaves like 'unfold f'.
That is, it will unfold f even if it fails to fold recursive
applications. Now, only 'esimp[f]' will not unfold f-applications when
it cannot fold the recursive applications.
This commit also closes #692 . It is part of a series of commits that
addresses this issue.
closes #692
2015-07-12 13:20:21 -04:00
Leonardo de Moura
4c0a656ecc
fix(library/tactic/unfold_rec): support indexed families + brec_on at unfold_rec
...
see issue #692
2015-07-12 12:45:05 -04:00
Leonardo de Moura
584f9e3f49
fix(library/tactic/unfold_rec): support indexed families at unfold_rec
...
This commit also removes many (now unnecessary) folds from the HoTT
library.
See issue #692
We still have to implement support for recursive definitions based on
brec_on that recurse over inductive families.
2015-07-12 12:32:58 -04:00
Leonardo de Moura
7fa5c3e5da
feat(library/tactic/unfold_rec): take '[recursor]' annotations into account at unfold_rec
2015-07-12 11:33:40 -04:00
Leonardo de Moura
b0ac78c2cb
feat(library/user_recursors): add is_user_defined_recursor predicate
2015-07-12 11:25:50 -04:00
Leonardo de Moura
8e8e08cfe7
feat(library/tactic): use occurrence object in unfold tactic family
2015-07-11 18:53:45 -04:00
Leonardo de Moura
554a42b407
fix(library/tactic/unfold_rec): add annother brec pattern that should be checked in the unfold recursive definition tactic
2015-07-10 22:16:23 -04:00
Leonardo de Moura
a9515ac7a4
feat(library/tactic/rewrite_tactic): try to fold nested recursive applications after unfolding a recursive function
...
See issue #692 .
The implementation still has some rough spots.
It is not clear what the right semantic is.
Moreover, the folds in e_closure could not be eliminated automatically.
2015-07-08 21:19:18 -04:00
Leonardo de Moura
967f9ece8e
fix(frontends/lean/notation_cmd): workaround incorrect warning produced by clang++ on OSX
2015-07-07 21:01:48 -07:00
Leonardo de Moura
6ffbb05118
feat(library/definitional/no_confusion): add [unfold] hint to no_confusion
2015-07-07 20:07:13 -07:00
Leonardo de Moura
26574e29a9
feat(library/normalize,frontends/lean): allow multiple arguments in [unfold] hint
...
closes #693
2015-07-07 18:01:57 -07:00
Leonardo de Moura
a27b20cd9c
feat(frontends/lean/notation_cmd): allow local notation to override reserved notation
...
closes #712
2015-07-07 17:30:46 -07:00
Leonardo de Moura
4b1b3e277f
feat(frontends/lean): rename '[unfold-c]' to '[unfold]' and '[unfold-f]' to '[unfold-full]'
...
see issue #693
2015-07-07 16:37:06 -07:00
Leonardo de Moura
991ff67b45
refactor(library/relation_manager): cleanup and add API for declaring a relation that may not be reflexive, symmetric nor transitive
2015-07-07 15:58:24 -07:00
Leonardo de Moura
fb833a724b
fix(src/frontends/lean/parser): add extra annotations to workaround with clang 6.0.0
2015-07-06 16:39:47 -07:00
Leonardo de Moura
b0c56273e2
fix(frontends/lean/elaborator): fixes #724
2015-07-06 15:19:19 -07:00
Leonardo de Moura
c843690d27
fix(frontends/lean/elaborator): fixes #719
2015-07-03 12:37:28 -07:00
Leonardo de Moura
7de7c5b73d
feat(library/definitional/projection): define projections using auxiliary macro
2015-07-02 10:49:49 -07:00
Leonardo de Moura
c15bcf1354
refactor(library/projection): remove projection macro from library
2015-07-02 08:48:13 -07:00
Leonardo de Moura
dd145926a2
fix(library/coercion): compilation warning
2015-07-02 07:26:00 -07:00
Leonardo de Moura
4ae9f3ea81
feat(library/coercion): new coercion manager
...
closes #668
2015-07-01 16:32:34 -07:00
Leonardo de Moura
fe26c37fcb
refactor(library/tc_multigraph): improve tc_multigraph API
2015-07-01 16:01:40 -07:00
Leonardo de Moura
765865ed41
chore(library/tc_multigraph): remove dead code
2015-07-01 15:48:55 -07:00
Leonardo de Moura
d44d576194
refactor(library/coercion): simplify coercion module API
2015-07-01 14:40:12 -07:00
Leonardo de Moura
d5c38777af
refactor(library/coercion): simplify coercion_class
2015-07-01 14:29:23 -07:00
Leonardo de Moura
0f5b7a36f5
chore(library/coercion): remove lua bindings for coercion module
...
Reason: we will refactor the coercion module.
See issue #668
2015-07-01 14:08:49 -07:00
Leonardo de Moura
667f647b27
feat(kernel/expr_eq_fn): add small optimization
2015-07-01 09:19:36 -07:00
Leonardo de Moura
cabe30ba71
feat(frontends/lean): allow user to assign priorities to notation declarations
2015-06-30 17:10:27 -07:00
Leonardo de Moura
a1d1a8272a
refactor(frontends/lean): move parse_priority to util
2015-06-30 16:22:52 -07:00
Leonardo de Moura
4ea57196ff
chore(frontends/lean/parser_config): remove dead code
2015-06-30 16:04:00 -07:00
Leonardo de Moura
880f212494
feat(library/class): allow transitive instances that have instances arguments
2015-06-30 14:54:12 -07:00
Leonardo de Moura
9a9e975bc8
feat(frontends/lean/migrate_cmd): ignore derived transitive instances in the migrate command
2015-06-30 14:00:41 -07:00
Leonardo de Moura
d20f831602
feat(library/class): add is_derived_trans_instance predicate
2015-06-30 13:59:02 -07:00
Leonardo de Moura
e7c3c887b6
feat(kernel/type_checker): add 'check' procedure that uses 'opaque_hints'
...
The hints only affect performance. If a declaration type checks assuming
some constants are opaque, it should also type check without this
assumption. Of course, it may be much slower.
2015-06-30 13:12:34 -07:00
Leonardo de Moura
772ed111e5
refactor(kernel): move extra_opaque_converter to kernel, and rename it to hint_converter
2015-06-30 12:59:28 -07:00
Leonardo de Moura
e635d9be9f
refactor(kernel): rename get_weight to get_height at declaration
...
Motivation:
- It is the standard name for the concept: declaration height
- Avoid confusion with the expression weight
2015-06-30 12:59:10 -07:00
Leonardo de Moura
1e6550eda6
feat(kernel/default_converter): take into account the 'theorem' annotations in the converability checker
...
The idea is that we should seldon need to unfold theorems.
The convertability checker should use that.
When the convertability checker was implemented, theorems were opaque in
Lean. So, this hint was not needed.
This modification is another workaround for the performance problem with
the migrate command at library/data/real/division.lean.
This solution is better than applying proof irrelevance eagerly because
it also addresses similar problems in the HoTT library which does not
support proof irrelevance.
This commit also enables the conv_opt for all theorems.
2015-06-30 10:42:26 -07:00
Leonardo de Moura
acc0832928
feat(kernel/default_converter): add "eager" proof irrelevance optimization
2015-06-29 19:10:39 -07:00
Leonardo de Moura
b5444c1314
refactor(frontends/lean/builtin_cmds): allow "constant" edges in the instance transitive closure graph
2015-06-29 18:57:05 -07:00
Leonardo de Moura
9cefe708ee
feat(frontends/lean/builtin_cmds): display derived instances
2015-06-29 11:06:59 -07:00
Leonardo de Moura
0fc2efe88e
fix(library/tactic/rewrite_tactic): fixes #702
2015-06-28 20:37:17 -07:00
Leonardo de Moura
95720b1670
fix(frontends/lean/elaborator): fixes #687
2015-06-28 19:58:57 -07:00
Leonardo de Moura
1b864a838f
fix(library/tactic/induction_tactic.cpp): condition for checking whether 'induction' tatic is applicable or not
...
fixes #690
2015-06-28 13:07:02 -07:00
Leonardo de Moura
88844f6261
chore(src/library/user_recursors): add missing include
2015-06-28 12:53:48 -07:00
Leonardo de Moura
2f75768243
feat(library/tactic/rewrite_tactic): fail when nothing is rewritten
...
fixes #686
2015-06-28 12:05:00 -07:00
Leonardo de Moura
d1eaa7bcda
feat(frontends/lean/parse_rewrite_tactic): accept trailing comman in rewrite tactic
...
see issue #695
2015-06-28 11:45:30 -07:00
Leonardo de Moura
4a4ef48344
fix(frontends/lean/parse_rewrite_tactic): fixes #691
2015-06-28 11:28:05 -07:00
Leonardo de Moura
869ad261c5
fix(frontends/lean/elaborator): fixes #689
2015-06-27 16:19:38 -07:00
Leonardo de Moura
8616ed096e
fix(library/composition_manager): typo
2015-06-27 14:12:26 -07:00
Leonardo de Moura
ca0aa4eb47
feat(library/composition_manager): simplify compositions of the form (mk ... (proj (mk ...)) ...)
...
closes #666
2015-06-27 14:07:32 -07:00
Leonardo de Moura
3fa1829b22
feat(frontends/lean/migrate_cmd): add profile for migrate command
2015-06-27 14:07:32 -07:00
Leonardo de Moura
3215af3926
feat(frontends/lean): add '[trans-instance]' attribute
...
see issue #666
2015-06-27 14:07:29 -07:00
Leonardo de Moura
430dc21a28
feat(library/composition_manager): disable conversion optimization for automatically generated compositions
...
see issue #666
2015-06-27 14:07:22 -07:00
Leonardo de Moura
bd0e9d958d
feat(library/tc_multigraph): shorter names for transitive edges
...
see issue #666
2015-06-27 14:07:15 -07:00
Leonardo de Moura
859ef441a0
feat(library/class): transitive instances
...
see issue #666
2015-06-27 14:06:56 -07:00
Leonardo de Moura
68785b8bed
fix(library/tactic/generalize_tactic): fixes #711
2015-06-26 19:35:30 -07:00
Leonardo de Moura
6da49b1d56
fix(shell/lean): fixes #710
2015-06-26 19:15:47 -07:00
Leonardo de Moura
1886b71c17
fix(library/unifier): fixes #705
2015-06-26 19:10:46 -07:00
Leonardo de Moura
e3e9220ab9
fix(library/tactic/rewrite_tactic): fixes #708
2015-06-26 18:41:08 -07:00
Leonardo de Moura
c61e6f6595
feat(library/unifier): add new rule for constraints of the form (pr ...) =?= t, where (pr ...) is a "stuck" projection application
2015-06-26 17:18:29 -07:00
Leonardo de Moura
0b7859f387
feat(library,frontends/lean): add support for projections in the elaborator
...
The idea is to simulate the computation rules such as
pr1 (mk a b) ==> a
in the elaborator
2015-06-26 17:18:29 -07:00
Leonardo de Moura
31a4ee2ac3
fix(library/inductive_unifier_plugin): avoid potential assertion violation
2015-06-26 17:18:29 -07:00
Leonardo de Moura
a680114fd8
fix(library/tactic/rewrite_tactic): potential crash in the rewrite tactic
2015-06-26 17:18:29 -07:00
Floris van Doorn
c8eee66c5b
feat(hott/relation): add equivalence closure of a relation
2015-06-25 22:31:41 -04:00
Floris van Doorn
ea0f57aef5
feat(hott): various clean-up and small additions
2015-06-25 22:31:40 -04:00
Leonardo de Moura
5581b735f4
feat(library/constants.txt): add poly_unit and poly_unit.star
2015-06-25 17:36:34 -07:00
Floris van Doorn
fa1979c128
feat(datatypes): let the type of unit be the lowest non-Prop universe
...
The definitional package (brec_on and cases_on) now use poly_unit instead of unit
closes #698
2015-06-25 17:33:46 -07:00
Leonardo de Moura
919c4ea8ee
feat(frontends/lean/calc_proof_elaborator): cleanup communication between unifier and calc_proof_elaborator
2015-06-24 14:14:44 -07:00
Leonardo de Moura
a2389fb664
refactor(kernel/default_converter): move delay_check code to postpone_is_def_eq method
2015-06-22 13:59:32 -07:00
Leonardo de Moura
76477aedd1
refactor(kernel): move is_stuck predicate to converter
2015-06-22 11:37:14 -07:00
Leonardo de Moura
5687c24944
refactor(library/tactic/induction_tactic): cleanup
2015-06-22 10:23:54 -07:00
Leonardo de Moura
54496709a2
refactor(kernel/default_converter): add virtual method reduce_def_eq
...
The idea is to allow us to customize the default converter outside of
the kernel.
2015-06-22 10:04:19 -07:00
Leonardo de Moura
a518a45239
refactor(kernel/default_converter): separate lazy_delta_reduction procedure
2015-06-22 08:45:05 -07:00
Leonardo de Moura
1c70514231
feat(frontends/lean/structure_cmd): disable conversion optimization for automatically generated coercions
2015-06-21 16:57:37 -07:00
Leonardo de Moura
aeea8f83c4
feat(library/composition_manager): check if existing definition is definitionally equal
2015-06-21 16:53:08 -07:00
Leonardo de Moura
e3062c64e2
feat(util/timeit): avoid scientific notation when displaying runtimes
2015-06-21 14:52:27 -07:00
Leonardo de Moura
b8243934de
feat(library/tc_multigraph): finish transitive closed multigraph
2015-06-20 20:25:20 -07:00
Leonardo de Moura
3626bd83bf
refactor(util/sexpr/format): remove format constructors using std::initializer_list
...
For some reason lean.js (Lean compiled using emscripten) crashes when
this kind of constructor is used.
2015-06-20 14:02:18 -07:00
Leonardo de Moura
d28c26b6eb
feat(util/sexpr/format): small change
...
The idea is to avoid unnecessary memory allocations.
It may also help with the lean.js problem we are fighting with.
2015-06-19 21:21:28 -07:00
Leonardo de Moura
c6ad37a651
chore(src/library/tc_multigraph): fix typo
2015-06-19 21:12:11 -07:00
Leonardo de Moura
38394d85dd
fix(util/sexpr/format): potential access memory violation
2015-06-19 20:26:35 -07:00
Leonardo de Moura
accc9dc38b
chore(util/sexpr/format): remove unnecessary method
2015-06-19 20:11:42 -07:00
Leonardo de Moura
6872761c67
fix(library/tc_multigraph): typos
2015-06-19 20:11:31 -07:00
Leonardo de Moura
1f753aeccb
feat(library): add tc_multigraph skeleton
2015-06-19 20:05:05 -07:00
Leonardo de Moura
70fc05294b
refactor(library/local_context): avoid hack in local_context
2015-06-18 15:41:00 -07:00
Leonardo de Moura
694eef7f6a
fix(util/sexpr/format): retract change that may be creating problems for emscripten
2015-06-18 10:49:13 -07:00
Leonardo de Moura
42c236eb2e
chore(shell/emscripten): fix style
2015-06-18 10:23:49 -07:00
Leonardo de Moura
a24b06254b
test(tests/shell): add unit test for emscripten_shell
2015-06-18 10:20:26 -07:00
Leonardo de Moura
a6fe4cbce6
refactor(shell): move emscripten_shell to a separate file
2015-06-18 09:53:23 -07:00
Leonardo de Moura
a4c0699e81
feat(library/tactic/constructor_tactic): restore 'constructor' tactic old semantics, add 'fconstructor' tactic
...
See issue #676
Add new test demonstrating why it is useful to have the old semantics
for 'constructor'
2015-06-17 23:48:54 -07:00
Leonardo de Moura
bf71d9f342
fix(library/tactic/rewrite_tactic): fixes #682
2015-06-17 18:49:02 -07:00
Leonardo de Moura
2109dff46a
feat(frontends/lean): remove unnecessary flag
2015-06-17 17:23:20 -07:00
Leonardo de Moura
ce8f2a1674
feat(library/class): allow any constant to be marked as a class
...
closes #679
2015-06-17 16:26:45 -07:00
Leonardo de Moura
9e6e406f73
feat(frontends/lean): add '#compose' command for testing composition manager
2015-06-17 14:42:25 -07:00
Leonardo de Moura
c59e1f49db
feat(library): add composition manager
2015-06-17 14:41:50 -07:00
Leonardo de Moura
14c33c4e01
feat(kernel/error_msgs): add workaround for issue #669
...
This issue should fix the new problem reported at #669 .
It only disables beta-reduction in the pretty printer for application
type mismatch at (f n) when f is a lambda expression.
2015-06-17 12:00:25 -07:00
Leonardo de Moura
f60cdee14b
fix(library/tactic/rewrite_tactic): memory leak
2015-06-16 15:47:21 -07:00
Leonardo de Moura
0ae24faae3
feat(library/tactic/constructor_tactic): use 'fapply' in 'constructor' tactic
...
closes #676
2015-06-16 12:03:31 -07:00
Leonardo de Moura
2277b170f6
feat(library/tactic/exact_tactic): use 'append' instead of 'orelse' at eassumption 'tactic'
2015-06-16 11:58:10 -07:00
Leonardo de Moura
169f956143
fix(library/tactic): remove dead code
2015-06-16 11:57:37 -07:00
Leonardo de Moura
d8620ef4c9
fix(kernel,library,frontends/lean): improve error messages
...
see #669
2015-06-14 19:44:00 -07:00
Leonardo de Moura
8699d2dfb7
feat(library/tactic/rewrite_tactic): display list of overloads occurring in a failed rewrite step
2015-06-14 16:30:18 -07:00
Leonardo de Moura
382d4d32b7
feat(frontends/lean): 'override' command and '#<namespace> <expr>' notation also override aliases
...
Before this commit they were only overriding notation declarations.
2015-06-14 15:48:36 -07:00
Leonardo de Moura
01f8f3c11d
fix(frontends/lean): memory access violation
2015-06-14 15:37:45 -07:00
Leonardo de Moura
45684588cc
fix(frontends/lean/nested_declaration): compilation error in debug mode
2015-06-13 13:10:10 -07:00
Leonardo de Moura
8a85e4ee87
feat(frontends/lean/builtin_cmds): improve print <id>
when <id>
is a not yet revealed theorem
...
We add a remark saying the command `reveal <id>` should be used to
access `<id>` definition.
2015-06-13 12:12:22 -07:00
Leonardo de Moura
591fb91f34
fix(frontends/lean/builtin_cmds): fixes #671
2015-06-13 11:35:03 -07:00
Leonardo de Moura
9fbf267a3f
feat(library/tactic/rewrite_tactic): when 'rewrite' step fails apply esimp and try again
...
closes #670
2015-06-12 19:48:58 -07:00
Leonardo de Moura
3d9b557cfd
feat(frontends/lean): allow the user to mark subterms that should be automatically abstracted into new definitions
...
closes #484
2015-06-12 17:49:26 -07:00
Leonardo de Moura
7bad9fe554
feat(library/error_handling/error_handling): set 'pp.beta' to false when displaying errors
...
see issue #669
2015-06-12 14:46:51 -07:00
Leonardo de Moura
4694f47ea4
refactor(frontends/lean/decl_attributes): move decl_attributes to a separate module
2015-06-12 13:38:57 -07:00
Leonardo de Moura
69be4c720c
fix(library/tactic/subst_tactic): bug in 'subst' tactic
2015-06-12 12:11:44 -07:00
Leonardo de Moura
25cbc5c154
fix(kernel/expr): remove 'cast_binder_info'
...
We should put it back when we decide to implement it.
We also fix the bogus comment at src/frontends/lean/parser.cpp.
see issue #667
2015-06-11 18:11:22 -07:00
Leonardo de Moura
8b7dc4e03a
feat(frontends/lean): apply eta-reduction in postprocessing step
...
Perhaps, we should add an option to disable this new feature.
Remark: this commit makes commit 46d418a
redundant.
I'm keeping 46d418a
because we may retract this commit in the future.
2015-06-10 16:29:30 -07:00
Leonardo de Moura
f64784378a
fix(frontends/lean/pp): make pp_have more robust
...
We should not assume the argument of a have_annotation is a lambda.
2015-06-10 16:26:20 -07:00
Leonardo de Moura
8b062b4448
feat(kernel/default_converter): add support for stuck terms at try_eta_expansion_core
2015-06-10 15:19:39 -07:00
Leonardo de Moura
ca43f6e62e
refactor(frontends/lean): add postprocess procedure and cleanup
2015-06-10 15:19:35 -07:00
Leonardo de Moura
4b91cfccff
feat(frontends/lean/builtin_exprs): make notation ( e : T )
builtin
...
In the previous approach, the following (definitionally equal) term was being generated
(fun (A : Type) (a : A), a) T e
2015-06-10 14:52:59 -07:00
Leonardo de Moura
46d418af3d
feat(library/abbreviation): apply eta-reduction when expanding abbreviations
2015-06-10 14:52:59 -07:00
Leonardo de Moura
f3d50963ce
fix(library/idx_metavar): compilation problem in debug mode
2015-06-09 14:37:17 -07:00
Leonardo de Moura
e3a0e62859
fix(library/unifier): try to generate approximate solution for flex-flex constraints before discarding them
...
fixes #662
2015-06-09 14:36:31 -07:00
Leonardo de Moura
f7dd85a935
chore(*): fix 'breif' typos
2015-06-08 16:54:55 -07:00
Leonardo de Moura
627e05c9e6
fix(library/tactic/rewrite_tactic): improve krewrite
2015-06-08 16:46:28 -07:00
Leonardo de Moura
d6a483fe84
feat(library): add idx_metavar module
2015-06-08 16:02:37 -07:00
Leonardo de Moura
496189feed
feat(kernel/default_converter): cache failures for (f t =?= f s) heuristic
...
See item 4 at
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/lean-discuss/oJXwW5wT2Ds/d1Dgr8B-pE0J
See also
https://github.com/leanprover/lean/pull/659
2015-06-08 10:41:30 -07:00
Leonardo de Moura
0e099b5fd8
feat(library/tactic/rewrite_tactic): apply beta&eta reduction before rewriting steps, add option 'rewrite.beta_eta' (default true) to control new feature.
2015-06-06 20:43:52 -07:00
Leonardo de Moura
1cbace9df6
feat(library/tactic/congruence_tactic): add congruence lemma generator
...
The generated congruence theorems ignore arguments that are subsingleton types.
2015-06-05 22:00:10 -07:00
Leonardo de Moura
d0d3f9bb41
refactor(kernel,library,frontends/lean): add helper functions, and cleanup collect_locals
2015-06-05 17:29:36 -07:00
Leonardo de Moura
c76d92284f
feat(library/pp_options): add 'pp.all' option
2015-06-05 08:41:46 -07:00
Leonardo de Moura
4d52d4c790
fix(library/init/quot): prove quot.exact
2015-06-05 08:04:55 -07:00
Floris van Doorn
ff41886a32
feat(nat/bquant): give instances for quantification bounded with le
...
also add theorems c_iff_c to logic/connectives, where c is a connective
2015-06-04 20:14:13 -04:00
Floris van Doorn
ff01774fd7
renaming(hit): rename type_quotient to quotient, and quotient to set_quotient
...
This renaming is because type_quotient is a nonstandard name. I've had a discussion with Egbert
Rijke, Steve Awodey and Dan Licata, and the consensus for a better name was 'quotient'. I had to
make changes in src/kernel/hits/hits.cpp, I renamed g_type_quotient* by g_hit_quotient* (to avoid
name clash the standard library quotient, although I don't know whether that name clash would
matter).
2015-06-04 20:14:13 -04:00
Leonardo de Moura
134740182d
fix(frontends/lean): fixes #652
2015-06-03 21:53:51 -07:00
Leonardo de Moura
c8ad1874a2
fix(library/util): compilation error in debug mode
2015-06-03 17:39:03 -07:00
Leonardo de Moura
68688ecdf6
fix(library/tactic/subst_tactic): in the standard mode, use dependent elimination in the subst tactic (when needed)
...
Before this commit, the subst tactic was producing an type incorrect
result when dependent elimination was needed (see new test for an example).
2015-06-03 17:36:04 -07:00
Leonardo de Moura
dce86b3a84
feat(library/init/logic): add 'eq.drec' (in standard Lean) with a signature very similar to eq.rec
in the HoTT library
2015-06-03 17:29:26 -07:00
Leonardo de Moura
cfb102cbd1
fix(emacs/lean-mode): disable electric-indent-mode
...
closes #636
2015-06-01 22:42:57 -07:00
Leonardo de Moura
b2f8d2000c
fix(library/simplifier/rewrite_rule_set): avoid compiler specific behavior
2015-06-01 22:23:34 -07:00
Leonardo de Moura
d6997300f1
fix(library/private): use environment fingerprint to compute private decls "unique" identifier
...
fixes #648
2015-06-01 22:21:31 -07:00
Leonardo de Moura
4ace996057
fix(library/simplifier): bug in is_permutation_ceqv
2015-06-01 18:07:31 -07:00
Leonardo de Moura
0fbc944cdd
feat(frontends/lean): add '[rewrite]' attribute
2015-06-01 17:58:24 -07:00
Leonardo de Moura
d547698a56
refactor(library,library/tactic): move class_instance_synth to library
...
This module will be needed by the simplifier
2015-06-01 16:30:40 -07:00
Leonardo de Moura
8a89588079
refactor(library,library/tactic): move auxiliary procedures from tactic to library
2015-06-01 16:19:55 -07:00
Leonardo de Moura
b6fde68012
feat(frontends/lean/decl_cmds): avoid funny names when displaying error messages for "examples"
2015-06-01 15:35:28 -07:00
Leonardo de Moura
b62e6bb133
feat(library/simplifier): add rewrite rule sets
2015-06-01 15:15:57 -07:00
Leonardo de Moura
780d313686
fix(library/annotation): add missing == and hash methods for annotation class
...
We have multiple annotations. The default == and hash methods were
ignoring that.
2015-06-01 11:27:46 -07:00
Leonardo de Moura
55608c9b9f
fix(frontends/lean/pp): bug in pp arrow
2015-05-31 17:21:37 -07:00
Leonardo de Moura
ca110012d8
feat(library/tactic): automate "generalize-intro-induction/cases" idiom
...
closes #645
2015-05-30 21:57:28 -07:00