Commit graph

4685 commits

Author SHA1 Message Date
Leonardo de Moura
6f6848968d feat(frontends/lean/coercion_elaborator): "coercion lifting" for backtracking case
closes #252
2015-05-30 16:44:26 -07:00
Leonardo de Moura
ea9c810fca feat(frontends/lean/coercion_elaborator): implement "coercion lifting"
closes #644
2015-05-30 14:45:14 -07:00
Leonardo de Moura
6d2f37857d feat(frontends/lean/builtin_cmds): add 'print [reducible]', 'print [irreducible]' and 'print [quasireducible]' commands 2015-05-29 16:47:29 -07:00
Leonardo de Moura
7a0e198147 feat(kernel,frontends/lean/builtin_cmds): allow kernel extensions to report their builtin constants 2015-05-29 16:28:16 -07:00
Leonardo de Moura
c07d14e94a fix(library/tactic/rewrite_tactic): incorrect assertion 2015-05-29 15:59:03 -07:00
Leonardo de Moura
0ceedbe69e fix(library/normalize): fixes #640 2015-05-29 15:58:59 -07:00
Leonardo de Moura
f48cdccd20 fix(frontends/lean/pp): abbreviation with parameters
closes #639
2015-05-29 15:13:31 -07:00
Leonardo de Moura
a071012346 fix(frontends/lean/pp,library/head_map): handle 'as_atomic' annotation
This commit fixes local notation that contains parameters

see issue #639
2015-05-29 14:51:28 -07:00
Leonardo de Moura
e6099583ad feat(frontends/lean/builtin_cmds): expand abbreviations in the 'check' command
see issue #639
2015-05-29 14:51:07 -07:00
Leonardo de Moura
3b7b268e40 fix(frontends/lean/pp): fixes #634
trying again...
2015-05-29 14:07:38 -07:00
Leonardo de Moura
7f12401ea7 fix(frontends/lean/elaborator): save type information for 'obtain' declarations 2015-05-29 10:16:12 -07:00
Leonardo de Moura
7342f342a9 fix(frontends/lean/pp): fixes #634 2015-05-28 19:43:49 -07:00
Leonardo de Moura
ae0bdaa836 chore(library,util): fix style 2015-05-27 16:46:58 -07:00
Leonardo de Moura
d95c064a29 feat(library/simplifier/ceqv): add to_ceqv procedure 2015-05-27 16:35:56 -07:00
Leonardo de Moura
85409a59d3 feat(library/tactic/rewrite_tactic): add xrewrite and krewrite tactic variants
closes #511
2015-05-27 16:32:43 -07:00
Leonardo de Moura
7d73f4f091 refactor(library,frontends/lean): simplify the creation of custom normalizers 2015-05-27 15:33:20 -07:00
Leonardo de Moura
dc6411b903 feat(library/inductive_unifier_plugin): restrict rule that was generating non-terminating behavior
see issue #632
2015-05-27 14:41:12 -07:00
Leonardo de Moura
47e5633498 feat(frontends/lean/calc_proof_elaborator): avoid unnecessary unfolding in the calc tactic 2015-05-27 12:07:39 -07:00
Leonardo de Moura
77f742ae8e feat(library/relation_manager): add auxiliary functions 2015-05-27 12:07:06 -07:00
Leonardo de Moura
4867dba175 fix(util/stackinfo): saving max stack size on OSX
see issue #628
2015-05-27 08:52:39 -07:00
Leonardo de Moura
ea43f3ea80 fix(frontends/lean/builtin_cmds): fixes #630 2015-05-26 22:19:42 -07:00
Floris van Doorn
c64d73aae4 feat(types.nat): prove that inequalities on nat are mere propositions
Also some small changes in various other locations
2015-05-26 21:37:01 -07:00
Floris van Doorn
8396c4c824 feat(lean-syntax): color abbreviations yellow 2015-05-26 21:37:01 -07:00
Leonardo de Moura
4d1b711247 feat(frontends/lean/elaborator): better error localization when running out of stack space and/or memory in begin-end tactic mode. 2015-05-26 20:09:15 -07:00
Soonho Kong
c4ec89ae6d fix(emacs/lean-flycheck.el): use -concat in lean-flycheck-command 2015-05-26 17:00:05 -04:00
Soonho Kong
1d25f9fa06 fix(emacs/lean-util.el): use f-join instead of lean-concat-paths 2015-05-26 17:00:05 -04:00
Soonho Kong
ce10d5ca08 fix(emacs/lean-flycheck.el): use flycheck-increment-error-columns instead of advice
Comment from @lunaryorn (flycheck author):

"Please don't use an advice to increment error columns. Flycheck has
:error-filters and there is even a built-in one exactly for your use
case: :error-filter flycheck-increment-error-columsn. Generally never
use advises at all in libraries or modes. They are for user
configuration, or as a very last resort only."
2015-05-26 17:00:05 -04:00
Soonho Kong
ac04b996ab fix(emacs/lean-flycheck.el): use flycheck-define-command-checker
Comment from @lunaryorn (flycheck author):

"eval around flycheck-define-checker breaks byte compilation and
scoping. Please use flycheck-define-command-checker if you need to
create :command dynamically."
2015-05-26 17:00:05 -04:00
Leonardo de Moura
0502f46f9b fix(frontends/lean/scanner): another bug related to issue #626 2015-05-26 13:39:42 -07:00
Leonardo de Moura
ed01242bc1 chore(library/tactic/apply_tactic): remove dead code 2015-05-26 12:18:50 -07:00
Leonardo de Moura
25e41b9b09 fix(frontends/lean/scanner): fixes #626 2015-05-26 11:33:38 -07:00
Leonardo de Moura
7f0951b8e7 feat(library/tactic): improve assumption tactic performance 2015-05-25 20:22:37 -07:00
Leonardo de Moura
d0987eb3ac feat(library/tactic): add 'subtvars' tactic 2015-05-25 16:36:44 -07:00
Leonardo de Moura
ab58e538a4 feat(frontends/lean/elaborator): hide auxiliary 'match' hypothesis during elaboration 2015-05-25 15:24:56 -07:00
Leonardo de Moura
a3f23d5233 feat(library/tactic): add improved 'subst' tactic 2015-05-25 15:03:59 -07:00
Leonardo de Moura
24b35eefe6 chore(frontends/lean/elaborator): add assertion for sanity checking 2015-05-25 14:04:27 -07:00
Leonardo de Moura
f13ca3cd9a feat(library/tactic/contradiction_tactic): handle (h1 : p) and (h2 : not p) hypotheses in the contradiction tactic 2015-05-25 10:29:51 -07:00
Leonardo de Moura
88975927e6 fix(library/tactic/relation_tactics): beta-reduce goal before trying to extract head symbol 2015-05-24 18:56:35 -07:00
Leonardo de Moura
004ea80e65 fix(library/tactic/rewrite_tactic): apply beta reduction when selecting patterns 2015-05-24 18:44:30 -07:00
Leonardo de Moura
b83b0c0017 fix(library/tactic/induction_tactic): fixes #619 2015-05-21 18:22:07 -07:00
Leonardo de Moura
f830bf54c2 refactor(*): clarify name_generator ownership 2015-05-21 14:32:36 -07:00
Leonardo de Moura
a7ead5fc14 fix(library/relation_manager): typo 2015-05-21 14:12:28 -07:00
Leonardo de Moura
e3250f0ffd feat(library/simplifier): add conditional equivalence detection 2015-05-21 13:55:23 -07:00
Leonardo de Moura
907d017cbf feat(library/relation_manager): cache information about binary relations 2015-05-21 13:04:33 -07:00
Leonardo de Moura
c2faa0fe98 refactor(library): rename equivalence_manager to relation_manager 2015-05-21 12:25:02 -07:00
Leonardo de Moura
2b4233ee8e fix(library/tactic/induction_tactic): exception handling 2015-05-21 10:15:49 -07:00
Leonardo de Moura
6a87239a5d chore(kernel/justification): fix compilation warning 2015-05-21 10:13:44 -07:00
Leonardo de Moura
76e7f2e7d8 feat(kernel/justification): make sure the code does not depend on the argument order of evaluation generated by a compiler
see issue #618
2015-05-21 07:42:10 -07:00
Leonardo de Moura
89581cead7 fix(frontends/lean/parser): fixes #616 2015-05-20 23:33:41 -07:00
Leonardo de Moura
d6b72ef4d7 feat(library/tactic/induction_tactic): try available recursors until one works
closes #615
2015-05-20 23:23:05 -07:00
Leonardo de Moura
2164ba6f20 fix(library/tactic/induction_tactic): fixes #614 2015-05-20 23:14:11 -07:00
Leonardo de Moura
51d4644832 fix(library/tactic/induction_tactic): fixes #613 2015-05-20 22:26:50 -07:00
Leonardo de Moura
5508e4b132 feat(library/tactic/induction_tactic): type class inference for minor premises
closes #611
2015-05-20 20:48:33 -07:00
Leonardo de Moura
029f374a69 fix(library/tactic/induction_tactic): fixes #610 2015-05-20 20:28:02 -07:00
Leonardo de Moura
2d22bb8ea2 feat(frontends/lean/builtin_cmds): do not unfold proofs in the eval command
In the future, we should probably add an option for unfolding proofs.
2015-05-20 19:14:57 -07:00
Leonardo de Moura
d5da659be7 feat(frontends/lean/elaborator): include overload information in error messages 2015-05-20 17:21:27 -07:00
Leonardo de Moura
76c3757db7 feat(frontends/lean/elaborator): use custom normalizers for detecting whether there are coercions from/to a given type
closes #547
2015-05-20 16:12:12 -07:00
Leonardo de Moura
608984cd4c chore(frontends/lean/elaborator): cleanup ensure fun 2015-05-20 15:10:45 -07:00
Leonardo de Moura
af3f0088f4 feat(frontends/lean): add 'override' (notation) command 2015-05-20 11:42:16 -07:00
Leonardo de Moura
90ea4995f4 fix(emacs/lean-syntax): remove deprecated keywords 2015-05-19 18:34:14 -07:00
Leonardo de Moura
8ce992b077 feat(frontends/lean/builtin_exprs): allow 'obtain' to be used in tactic mode 2015-05-19 16:26:02 -07:00
Leonardo de Moura
c133d26505 feat(frontends/lean/builtin_exprs): change how 'show' is processed in tactics
Unresolved placeholders were not being reported
2015-05-19 16:23:50 -07:00
Leonardo de Moura
5f628d5080 feat(frontends/lean/builtin_exprs): allow 'calc' expressions to be used in tactic mode 2015-05-19 15:54:49 -07:00
Leonardo de Moura
3e87f09d78 feat(library/tactic/induction_tactic): add support for user-defined recursors that contain parameters that should be synthesized by type class resolution 2015-05-19 15:33:46 -07:00
Leonardo de Moura
78ee055de8 feat(library/tactic): add induction tactic with support for user defined recursors
closes #483
closes #492
2015-05-19 13:27:17 -07:00
Leonardo de Moura
5b1491bdbd feat(library/user_recursors): store number of arguments expected by recursor 2015-05-19 12:24:46 -07:00
Leonardo de Moura
1e4285cf41 fix(library/user_recursors): invalid recursor_info for builtin indexed families 2015-05-19 12:19:46 -07:00
Leonardo de Moura
6da2ba331f fix(library/user_recursors): memory access violation 2015-05-19 11:07:31 -07:00
Leonardo de Moura
4f12409c63 fix(library/unifier): assertion violation
This assertion violation was introduced when we added "projection
macros" to speedup the elaboration process.
2015-05-19 10:07:31 -07:00
Leonardo de Moura
937d6ac7b6 fix(frontends/lean/pp): print notation produces incorrect output
fixes #604
2015-05-19 09:57:13 -07:00
Leonardo de Moura
e1c2340db2 fix(frontends/lean): consistent behavior for protected declarations
see https://github.com/leanprover/lean/issues/604#issuecomment-103265608

closes #609
2015-05-18 22:35:18 -07:00
Leonardo de Moura
d8bd3c21b5 feat(frontends/lean/builtin_cmds): display "protected" for protected declarations in the print command 2015-05-18 17:19:34 -07:00
Leonardo de Moura
c53b96c8d3 feat(frontends/lean): print all options for overloaded identifier
closes #608
2015-05-18 17:14:17 -07:00
Floris van Doorn
2144036cdb feat(hott.circle): prove that the fundamental group of the circle is equal to the integers, as groups
Also many minor fixes at various places
2015-05-18 15:59:55 -07:00
Leonardo de Moura
19361f0196 feat(library/unifier): do not fire type class resolution as last resort when type contains metavariables
see discussion at #604
2015-05-18 15:45:23 -07:00
Leonardo de Moura
1fbc85f6df fix(util/list_fn): add missing file
fixes #606
2015-05-18 15:16:29 -07:00
Leonardo de Moura
c61c049152 feat(library/user_recursors): generalize acceptable use-defined recursors
see issue #492
2015-05-18 14:21:10 -07:00
Leonardo de Moura
62082c72a8 fix(library/user_recursors): remove unnecessary restriction on minor premises of user-defined recursors
see issue #492
2015-05-18 10:09:11 -07:00
Leonardo de Moura
830d0ce1a7 fix(library/user_recursors): make sure homotopy.rec_on is recognized as a valid user-defined recursor
see issue #492
2015-05-18 09:57:50 -07:00
Leonardo de Moura
b1ece388a6 feat(frontends/lean,library/tactic/induction_tactic): improve induction tactic notation, expand induction tactic implementation 2015-05-18 09:25:07 -07:00
Leonardo de Moura
4256984803 fix(library/tactic/inversion_tactic): incorrect check 2015-05-18 09:16:07 -07:00
Leonardo de Moura
d41bff8c43 feat(library): add helper function 2015-05-18 09:16:07 -07:00
Leonardo de Moura
84faef5d5d feat(library/tactic/rewrite_tactic): rewrite tactic with 'iff' lemmas 2015-05-14 18:27:13 -07:00
Leonardo de Moura
1dedd2829c fix(library/match): bug in higher-order matcher 2015-05-14 18:27:10 -07:00
Leonardo de Moura
7f8afcf04b fix(frontends/lean/builtin_exprs): bug in 'using' expressions 2015-05-14 17:17:48 -07:00
Sebastian Ullrich
77c20e99ff feat(library/tactic/inversion_tactic): consistent orientation of generated equalities
Generated equalities in proof irrelevant environments were inverted
compared with the documentation and the proof relevant case, which
resulted in newly generated local vars replacing equivalent old ones
instead of the other way around.
2015-05-14 23:32:54 +02:00
Leonardo de Moura
cbcaf5a48e fix(frontends/lean/scanner): block comments
fixes #600
2015-05-13 22:14:28 -07:00
Leonardo de Moura
163577c23a fix(library/normalize): fixes #599 2015-05-13 18:36:16 -07:00
Leonardo de Moura
51a30892a1 chore(examples/ex): move example to library 2015-05-13 17:07:10 -07:00
Leonardo de Moura
e0b39079eb test(tests/lean/extra): add test for issue #597 2015-05-13 15:34:34 -07:00
Leonardo de Moura
ed388b00f1 fix(frontends/lean/builtin_cmds): issue #597 2015-05-13 15:34:34 -07:00
Leonardo de Moura
11fbee269b fix(frontends/lean/parser): must save state of name_generator in parser snapshot
To provide typing and auto-completion information, we create a
background process by starting lean with the option --server.
In "server" mode, we create snapshots of the parser state.
The idea is to be able to quickly reprocess a file when the user makes a
modification. This commit fixes a bug in the snapshot operation.
It was not saving in the snapshots the unique name generator used by the parser.
By creating a fresh name generator, we may accidentally
assign the same internal name to two different constants.
This bug triggered the crash described in issue #593.

This commit fixes the test in the comment
https://github.com/leanprover/lean/issues/593#issuecomment-101768484

This commit also adds a smaller version of the problem to the test suite
2015-05-13 12:28:23 -07:00
Leonardo de Moura
d0582b2537 fix(library/user_recursors): warning 2015-05-13 10:04:38 -07:00
Leonardo de Moura
dd5b221d32 fix(library/user_recursors): warning message 2015-05-13 09:42:32 -07:00
Leonardo de Moura
065a1f7501 feat(library/tactic): add 'induction' tactic skeleton 2015-05-12 20:21:25 -07:00
Leonardo de Moura
2014a4a672 chore(script/gen_tokens_cpp): mark automatically generated global variables as static 2015-05-12 17:15:31 -07:00
Leonardo de Moura
358afcf42c fix(script/gen_tokens_cpp): automatically generated header 2015-05-12 17:11:27 -07:00
Leonardo de Moura
c60f11ab05 refactor(frontends/lean): add script for automatically generating tokens.h and tokens.cpp 2015-05-12 17:07:08 -07:00
Leonardo de Moura
99084dce1c chore(library/user_recursors): fix style 2015-05-12 15:48:24 -07:00
Leonardo de Moura
f403ea984b feat(frontends/lean): add 'print [recursor]' command for debugging purposes 2015-05-12 15:48:24 -07:00