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
Leonardo de Moura
e5a82ef516
feat(frontends/lean): add option for disabling "coercion lifting"
2015-05-30 17:07:42 -07:00
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
Leonardo de Moura
750f6d5a43
feat(library,frontends/lean): validate user defined recursors and add attribute to mark them
...
see issue #492
The user-defined recursors will also be used to implement the blast tactic
2015-05-12 15:48:01 -07:00
Leonardo de Moura
b6fff9fbe1
chore(tests/library/blast/union_find): fix style
2015-05-12 06:24:58 -07:00
Leonardo de Moura
fa70930ef4
feat(library/blast): add union-find datastructure
2015-05-11 16:19:51 -07:00
Leonardo de Moura
9649d540c0
fix(library/tactic/rewrite_tactic.cpp): memory leak
2015-05-11 16:19:17 -07:00
Leonardo de Moura
3d8586088b
fix(frontends/lean/elaborator): problem with 'calc' proofs discussed at issue #592
2015-05-11 13:22:39 -07:00
Leonardo de Moura
4905233eb2
fix(CMakeLists.txt): warning on OSX
2015-05-11 12:55:52 -07:00
Jeremy Avigad
95dae11670
feat(src/emacs/lean-input.el): add abbreviations 'mem', 'subeq', etc.
2015-05-11 09:03:56 -07:00
Leonardo de Moura
c5fb3ec6d0
fix(library/definitional/equations): fixes #541
...
This commit allows recursive applications to have less or more arguments
than the equation left-hand-side.
We add two tests
- 541a.lean recursive call with more arguments
- 542b.lean recursive call with less arguments
2015-05-10 20:37:44 -07:00
Leonardo de Moura
207e8e86da
fix(library/definitional/equations): do not clear eliminated hypotheses when invoking 'cases' tactic from definitional package
2015-05-10 11:08:02 -07:00
Leonardo de Moura
299fd5c919
feat(frontends/lean/pp): pp inaccessible patterns
2015-05-10 11:08:02 -07:00
Leonardo de Moura
e9c8de7bdf
feat(frontends/lean): remove unnecessary option
2015-05-09 11:49:55 -07:00
Leonardo de Moura
bd28396be0
feat(kernel): transparent theorems
...
closes #576
2015-05-09 11:42:29 -07:00
Leonardo de Moura
f63c2d9393
feat(kernel/inductive/inductive): for datatypes that support K, we should try K before normalizing the major premise
2015-05-09 11:23:10 -07:00
Leonardo de Moura
d217655a62
fix(kernel/quotient/quotient): bug in reduction rule for quot.ind
2015-05-09 09:07:03 -07:00
Leonardo de Moura
4e35afedcc
feat(frontends/lean): rename 'wait' to 'reveal'
...
Signed-off-by: Leonardo de Moura <leonardo@microsoft.com>
2015-05-08 20:54:16 -07:00
Leonardo de Moura
f8e2f68ce0
feat(frontends/lean): add 'wait' command
...
This commit also fixes several problems with -j option (parallel
compilation). The .olean files were not missing data when -j was used
see issue #576
2015-05-08 20:05:21 -07:00
Leonardo de Moura
e6566e5814
fix(frontends/lean/parser): incorrect error message
2015-05-08 18:13:44 -07:00
Leonardo de Moura
e59456c19f
feat(frontends/lean): remove 'opaque' keyword
...
see issue #576
2015-05-08 16:45:13 -07:00
Leonardo de Moura
cf7e60e5a6
refactor(kernel): remove "opaque" field from kernel declarations
...
see issue #576
2015-05-08 16:06:16 -07:00
Leonardo de Moura
6c958a25e7
refactor(library/tactic/expr_to_tactic): make sure builtin tactics don't need to be marked opaque
...
This modification is needed since we will remove opaque definitions from
the kernel.
see issue #576
2015-05-08 16:06:16 -07:00
Leonardo de Moura
57ea660963
refactor(*): start process for eliminating of opaque
definitions from the kernel
...
see issue #576
2015-05-08 16:06:04 -07:00
Leonardo de Moura
061e26157e
fix(kernel,library): make sure macros check relevant arguments when kernel is performing full type checking
2015-05-08 12:41:23 -07:00
Leonardo de Moura
72663e8a06
feat(library/tactic/rewrite_tactic): take hypotheses into account when checking rewrite step
2015-05-08 11:34:50 -07:00
Leonardo de Moura
12bad8794b
feat(frontends/lean/pp): use 'assert' instead of 'have ... [visible]'
2015-05-08 10:02:15 -07:00
Jeremy Avigad
9beb70b292
feat(src/emacs/lean-input.el): add 'empty' as abbreviation for emptyset
2015-05-08 20:04:55 +10:00
Leonardo de Moura
0b57f7d00a
refactor(library/tactic): refine interface between tactic and proof-term modes
...
Some constraints were being lost with the previous interface.
This is why we had a workaround in fintype.lean.
We can also remove some hacks we have used in the past.
2015-05-07 18:02:51 -07:00
Leonardo de Moura
12b818b7d3
fix(library/util): "empty" is not universe polymorphic anymore
2015-05-07 16:43:58 -07:00
Floris van Doorn
20e62c9623
fix(lean-syntax): add all metaclasses and the state tactic to syntax
2015-05-07 16:39:03 -07:00
Leonardo de Moura
eb3a236119
fix(library/unifier): typo
...
fixes #588
2015-05-07 16:30:02 -07:00
Leonardo de Moura
88cd6e9a63
chore(library/unifier): remove dead code
2015-05-07 15:49:33 -07:00
Leonardo de Moura
45c8cdc626
fix(kernel/default_converter): discard constraints when optimization fails
2015-05-07 15:02:29 -07:00
Leonardo de Moura
f6a1d1c864
fix(frontends/lean/parser): fixes #584
2015-05-07 14:24:30 -07:00
Leonardo de Moura
aff9257c72
feat(frontends/lean): allow → to be used in calc proofs
...
see issue #586
2015-05-07 12:28:47 -07:00
Leonardo de Moura
b03266be70
feat(library/normalize,frontends/lean): rename '[unfold-m]' hint to '[constructor]', and allow it to be attached to constants
...
closes #587
2015-05-07 12:00:34 -07:00
Leonardo de Moura
5fdf140096
refactor(frontends/lean): simplify local_decls data-structure
...
This is the first step for fixing #584
2015-05-07 11:10:15 -07:00
Leonardo de Moura
ac24f19210
fix(library/tactic/rewrite_tactic): use relaxed type checker when processing rewrite "proof step"
...
That is, the restricted type checker should only be used in the
matching/unification step.
fixes #583
2015-05-07 09:57:23 -07:00
Leonardo de Moura
e0b7017435
feat(frontends/lean): make sure the proof state bit "report errors" is
...
set in the beginning of each begin-end element
see discussion at #583
2015-05-07 09:43:39 -07:00
Leonardo de Moura
5798ac43de
fix(frontends/lean/structure_cmd): 'structure' command must set unfold-c attribute for auxiliary recursors
...
fixes #582
2015-05-07 09:09:07 -07:00
Leonardo de Moura
171530d5cc
fix(frontends/lean/notation_cmd): fixes #585
2015-05-07 08:36:37 -07:00
Leonardo de Moura
16b7bc3922
fix(kernel/default_converter): broken optimization
...
we must also check the universe levels when applying the optimization for
constraints of the form:
f.{l_1 ... l_k} a_1 ... a_n =?= f.{l_1' ... l_k'} b_1 ... b_n
The optimization tries to avoid unfolding f if we can establish that
a_i is definitionally equal to b_i for each i in [1, n]
closes #581
2015-05-06 18:32:41 -07:00
Leonardo de Moura
e841852be4
feat(library/max_sharing): maximize sharing in universe level expressions
2015-05-06 14:26:12 -07:00
Leonardo de Moura
210cae7d6c
fix(library/tactic): we must unfold untrusted macros when type checking intermediate results
...
Example: before this commit, the file librata/data/list/perm.lean would
not type check if the option -t 0 (trust level zero) was provided.
Reason: the intermediate term contained a macro, and macros are not
allowed at trust level zero.
2015-05-06 14:23:58 -07:00
Leonardo de Moura
b5619c2109
fix(library/export): remove workaround from 'export' procedure
...
The workaround was needed due to a bug in the max_sharing procedure
2015-05-06 14:00:57 -07:00
Leonardo de Moura
2ca16a099b
fix(library/max_sharing): conflict with the kernel approximate caching
2015-05-06 13:57:36 -07:00
Leonardo de Moura
613281d622
fix(frontends/lean/builtin_exprs): bug in new 'obtain' expression
2015-05-06 10:01:24 -07:00
Leonardo de Moura
26c662accd
feat(frontends/lean/builtin_exprs): improve new 'obtain' expression
2015-05-06 09:56:57 -07:00
Leonardo de Moura
4cdfc9ee84
feat(frontends/lean/pp): add pretty printing functions for debugging purposes
2015-05-06 07:50:56 -07:00
Leonardo de Moura
84deddcca9
feat(library/tactic/rewrite_tactic): apply 'reflexivity' tactic after 'rewrite' instead of hard coded solution
2015-05-05 20:23:49 -07:00
Leonardo de Moura
c7a20644c0
fix(library/tactic/rewrite_tactic): bug in rewrite tactic (HoTT mode)
...
closes #580
2015-05-05 19:25:15 -07:00
Leonardo de Moura
a4efefb6ff
feat(library/tactic/rewrite_tactic): display type error message when
...
rewrite tactic fails
2015-05-05 19:23:41 -07:00
Leonardo de Moura
7cd444882c
feat(frontends/lean): add 'begin+' and 'by+' that enter tactic mode with the whole context visible
2015-05-05 18:47:25 -07:00
Leonardo de Moura
616f49c2e4
feat(frontends/lean): improved 'obtains' expression
2015-05-05 18:30:16 -07:00
Leonardo de Moura
8aefcc182e
feat(frontends/lean/parser): add 'parse_simple_binders'
2015-05-05 18:30:16 -07:00
Leonardo de Moura
c0c0490db3
feat(library/export): simplify format
2015-05-04 18:22:12 -07:00
Leonardo de Moura
701b0ae66f
feat(library): export environment in textual format
...
closes #577
2015-05-04 18:05:00 -07:00
Leonardo de Moura
6571c47353
feat(library/normalize): add '[unfold-m]' hint
...
See issue #496
2015-05-04 14:23:04 -07:00
Leonardo de Moura
3c8c75470f
fix(library/tactic/exact_tactic): do not report unassigned metavariables in the 'refine' tactic
2015-05-03 21:08:09 -07:00
Leonardo de Moura
87aaf373f4
fix(frontends/lean): fix '#' override notation on the left-hand-side of recursive equations (and match-expressions)
2015-05-03 21:08:09 -07:00
Leonardo de Moura
326048df54
feat(library/tactic/inversion_tactic): clear variables that have been eliminated by cases tactic
...
see discussion at:
https://groups.google.com/forum/#!topic/lean-discuss/oyzgIqdMyNc
2015-05-02 19:33:59 -07:00
Leonardo de Moura
441f1f9fe2
feat(frontends/lean): import error message for "unknown" tactics when parsing
2015-05-02 18:57:58 -07:00
Leonardo de Moura
118189eaac
fix(frontends/lean/elaborator): bug in translation function
...
This commit fixes the bug reported in the lean discussion list:
https://groups.google.com/forum/#!topic/lean-discuss/oyzgIqdMyNc
2015-05-02 18:05:07 -07:00
Leonardo de Moura
e1dc18f6b6
fix(library/tactic/inversion_tactic): check whether eliminator can only eliminate to Prop
...
fixes #571
2015-05-02 17:48:08 -07:00
Leonardo de Moura
e379034b95
feat(library/tactic): improve 'assumption' tactic
...
- It uses the unifier in "conservative" mode
- It only affects the current goal
closes #570
2015-05-02 17:33:54 -07:00
Leonardo de Moura
8c107d6936
fix(frontends/lean/builtin_cmds): bug in export
command
...
Cause: we have two different tokes to represent declarations: [decls] and [declarations]
fixes #568
2015-05-02 16:01:25 -07:00
Leonardo de Moura
b39fe17dee
feat(library/tactic): add 'transitiviy', 'reflexivity' and 'symmetry' tactics
...
closes #500
2015-05-02 15:48:25 -07:00
Leonardo de Moura
cd17618f4a
refactor(library): replace 'calc_trans', 'calc_symm', 'calc_refl' and 'calc_subst' commands with attributes '[symm]', '[refl]', '[trans]' and '[subst]'
...
These attributes are used by the calc command.
They will also be used by tactics such as 'reflexivity', 'symmetry' and
'transitivity'.
See issue #500
2015-05-02 15:15:35 -07:00
Leonardo de Moura
415ca2b93f
feat(library/tactic): add 'congruence' tactic
...
It is the f_equal described at issue #500 .
2015-05-02 12:58:46 -07:00
Leonardo de Moura
2054d67483
chore(library/tactic/rewrite_tactic): fix style
2015-05-01 19:49:48 -07:00
Leonardo de Moura
9dc0388022
fix(library/tactic/rewrite_tactic): bug when rewriting hypotheses
2015-05-01 19:45:23 -07:00
Leonardo de Moura
ac8ba6a3cf
feat(library/tactic): add 'subst' tactic
...
see issue #500
2015-05-01 19:31:24 -07:00
Leonardo de Moura
b0759f3986
fix(library/tactic/rewrite_tactic): bug when rewriting multiple hypotheses
2015-05-01 19:03:43 -07:00
Leonardo de Moura
de369a0a0a
feat(library/tactic/injection_tactic): improve 'injection' tactic
...
see issue #500
2015-05-01 15:49:56 -07:00
Leonardo de Moura
9ba8b284a1
fix(library/tactic/apply_tactic): add eapply, and fix issue #361
2015-05-01 15:08:00 -07:00
Leonardo de Moura
ce5ef5a6cc
feat(frontends/lean): improver parser for tactics of the form 'tac_name <expr> with <ids*>'
2015-05-01 13:06:11 -07:00
Leonardo de Moura
63eb155c7e
feat(library/tactic): add 'injection' tactic
...
see issue #500
2015-05-01 12:45:21 -07:00
Leonardo de Moura
7e9f574ef3
fix(library/tactic/apply_tactic): use internally 'apply' instead of 'fapply' as the default "apply" tactic
...
This changes improves the 'constructor' tactic
2015-04-30 21:58:35 -07:00
Leonardo de Moura
2d9c950144
feat(library/tactic/constructor_tactic): allow 'constructor' tactic without index
...
see issue #500
2015-04-30 21:15:07 -07:00
Leonardo de Moura
15e52b06df
fix(library/tactic/constructor_tactic): bug in constructor tactic
...
see example (constr_tac2.lean) in comment at issue #500
2015-04-30 20:18:24 -07:00
Leonardo de Moura
d18f9c7607
fix(library/tactic/constructor_tactic): use 1 (instead of 0) to reference the first constructor
...
see comment at issue #500
2015-04-30 20:08:00 -07:00
Leonardo de Moura
0b995c4fe3
fix(library/tactic/rewrite_tactic): relax reducibility constraints in some parts of the rewrite tactic
...
fixes #567
2015-04-30 18:22:58 -07:00
Leonardo de Moura
d152f38518
feat(library/tactic): add 'constructor', 'split', 'left', 'right' and 'existsi' tactics
...
see issue #500
2015-04-30 17:52:29 -07:00
Leonardo de Moura
1c6067bac2
feat(library/tactic): add 'exfalso' tactic
...
see issue #500
2015-04-30 15:43:07 -07:00
Leonardo de Moura
d546b019fb
fix(library/tactic/rewrite_tactic): assertion violation when checking
...
dependencies at rewrite tactic
2015-04-30 15:41:57 -07:00
Leonardo de Moura
936e024128
fix(library/tactic/rewrite_tactic): bug in rewrite hypothesis in HoTT mode
2015-04-30 15:30:25 -07:00
Leonardo de Moura
9c8a63caec
feat(library/tactic): add 'contradiction' tactic
...
see issue #500
Remark: this tactic also applies no_confusion to take care of a contradiction
2015-04-30 13:47:40 -07:00
Leonardo de Moura
3233008039
feat(library/tactic): allow user to name generalized term in the 'generalize' tactic
...
closes #421
2015-04-30 11:57:40 -07:00
Leonardo de Moura
3912bc24c8
feat(frontends/lean): nicer syntax for 'intros' 'reverts' and 'clears'
2015-04-30 11:00:39 -07:00
Soonho Kong
018cbe9447
fix(src/CMakeLists.txt): debian deps for static and non-static builds
2015-04-30 12:38:44 -04:00
Soonho Kong
e8d894473e
feat(src/CMakeLists.txt): add cpack support for Debian package
2015-04-30 10:01:34 -04:00
Soonho Kong
c7f1e3737f
fix(src/CMakeLists.txt): add -lpthread only if MULTI_THREAD is ON
2015-04-30 09:55:38 -04:00
Soonho Kong
7bae895c23
refactor(src/CMakeLists.txt): simplify conditions in if
...
There are many places where we do not need 'MATCHES "ON"' or 'MATCHES
"OFF"'. Reference: http://www.cmake.org/cmake/help/v3.0/command/if.html
~~~
if(<constant>)
True if the constant is 1, ON, YES, TRUE, Y, or a non-zero number. False
if the constant is 0, OFF, NO, FALSE, N, IGNORE, NOTFOUND, the empty
string, or ends in the suffix -NOTFOUND. Named boolean constants are
case-insensitive. If the argument is not one of these constants, it is
treated as a variable.
~~~
2015-04-30 09:51:05 -04:00
Leonardo de Moura
c19ec664b8
feat(CMakeLists): add flag suggested by Soonho
...
closes #557
2015-04-29 16:34:14 -07:00
Leonardo de Moura
d6d30f12c6
feat(frontends/lean): add "polymorphic" print command
...
closes #524
2015-04-29 16:17:33 -07:00
Leonardo de Moura
1a28a3c36f
feat(frontends/lean): add 'print inductive' command
2015-04-29 15:22:10 -07:00
Leonardo de Moura
dce7177382
feat(library/tactic/change_tactic): improve 'change' tactic
...
- Better error messages
- Try to solve unification constraints produced during is_def_eq test
addresses comment on issue #531
2015-04-29 13:31:09 -07:00
Leonardo de Moura
d055947243
feat(library/tactic/rewrite_tactic): ignore implicit argument when matching at rewrite tactic
2015-04-29 12:51:33 -07:00
Leonardo de Moura
182a8a542e
feat(library/tactic/rewrite_tactic): store exception "what" message in rewrite trace
2015-04-29 12:46:41 -07:00
Leonardo de Moura
b790ca9806
fix(library/tactic/rewrite_tactic): type check rewriting steps
...
closes #550
2015-04-29 12:16:37 -07:00
Leonardo de Moura
91abba3c3d
refactor(kernel): rename method
2015-04-29 11:46:27 -07:00
Leonardo de Moura
b98c109f73
fix(kernel/hits/hits): bug in reduction rule
...
closes #564
2015-04-29 10:01:46 -07:00
Leonardo de Moura
051615712c
fix(kernel/quotient/quotient): bug in reduction rule
2015-04-29 10:01:17 -07:00
Leonardo de Moura
d2c7b5c319
feat(library/tactic): add 'let' tactic
...
closes #555
2015-04-28 17:24:43 -07:00
Leonardo de Moura
16f237f042
feat(kernel/inductive): remove problematic check
...
see discussion at issue #563
closes #563
2015-04-28 17:21:41 -07:00
Leonardo de Moura
1be72f1faa
feat(frontends/lean): parse argument of unary tactis with rbp=0, tokens may have a different precedence in expression and tactic modes
2015-04-28 13:43:05 -07:00
Leonardo de Moura
4283111198
fix(frontends/lean): missing files
2015-04-28 10:55:04 -07:00
Leonardo de Moura
a23118d357
feat(frontends/lean): add tactic_notation command
...
This addresses the first part of issue #461
We still need support for tactic definitions
2015-04-27 17:46:13 -07:00
Leonardo de Moura
ca8943f45b
feat(library,hott): remove rapply tactic
2015-04-27 15:06:16 -07:00
Leonardo de Moura
88023e9597
fix(shell/lean): missing 'break'
2015-04-27 14:23:01 -07:00
Leonardo de Moura
bdef7aaf40
feat(frontends/lean/pp): add check_system at pretty printer
2015-04-27 14:21:53 -07:00
Leonardo de Moura
a3c3a94a51
feat(util/sexpr/format): add check_system at formatter
2015-04-27 14:21:25 -07:00
Leonardo de Moura
d41e055d1c
feat(frontends/lean/migrate_cmd): catch memory error in the migrate command
2015-04-27 12:58:11 -07:00
Leonardo de Moura
fee2b002fc
fix(util/exception): typo in error message
2015-04-27 12:02:04 -07:00
Leonardo de Moura
dcc94dde82
refactor(kernel): rename may_reduce_later to is_stuck, and make is_stuck more precise
...
It now reflects the definition used in the elaboration paper.
2015-04-27 11:20:15 -07:00
Leonardo de Moura
68383d49de
refactor(shell/lean): remove useless output
...
It was added for implementing the web version, and avoid the need to
simulate a file system in the web browser.
It turns out we decided to use a virtual file system.
2015-04-27 10:15:01 -07:00
Leonardo de Moura
9d01868361
feat(frontends/lean): use rewrite tactic to implement unfold (it has a unfold step)
...
closes #502
2015-04-24 17:23:12 -07:00
Leonardo de Moura
28404fe16d
fix(library/tactic/rewrite_tactic): second problem reported at issue #548
...
closes #548
2015-04-24 16:49:32 -07:00
Leonardo de Moura
4148d6b8cc
fix(library/tactic/rewrite_tactic): first two problems at issue #548
2015-04-24 16:07:00 -07:00
Leonardo de Moura
6134c8822a
fix(frontends/lean/util): assertion violation
...
fixes #559
2015-04-24 15:09:23 -07:00
Leonardo de Moura
f723550d33
feat(frontends/lean/elaborator): decorates error message with free variables introduced by the left-hand-side of the equation
...
closes #528
2015-04-24 14:58:15 -07:00
Leonardo de Moura
4a157ee676
refactor(kernel/justification): create "wrapper" justification
...
It allows us to provide a different pretty printer.
This is a cleanup, and also helps to address issue #528
2015-04-24 14:49:32 -07:00
Leonardo de Moura
8241863abe
feat(kernel/hits): add two builtin HITs: type_quotient and trunc
2015-04-23 15:32:31 -07:00
Soonho Kong
c1b23f29c9
doc(emacs/README.md): add debian case
...
[skip ci]
2015-04-23 15:05:08 -04:00
Leonardo de Moura
2613e7c444
fix(frontends/lean): bug when handling identifiers in tactics
...
This bug was reported by Jeremy in the Lean Google group:
https://groups.google.com/forum/?utm_medium=email&utm_source=footer#!msg/lean-discuss/ZKJ8WPPEVJA/n05x6rPRzvMJ
2015-04-22 16:03:22 -07:00
Floris van Doorn
d4a929febb
feat(lean-input): add some notation
2015-04-22 13:06:11 -07:00
Floris van Doorn
ee4cba4e0b
style(hott): a bit of cleanup
2015-04-22 13:06:11 -07:00
Leonardo de Moura
cdf929d178
fix(frontends/lean/local_decls): missing '{}' around macro
2015-04-22 12:54:42 -07:00
Leonardo de Moura
a526cd92ac
fix(frontends/lean): bug in pretty printer
...
this is related to issue #530
2015-04-22 12:44:08 -07:00
Leonardo de Moura
dc93603b4a
feat(frontends/lean): parameter and variable binder type update
...
see issue #532
2015-04-22 12:28:11 -07:00
Leonardo de Moura
91f21c007a
feat(frontends/lean): remove 'context' command
2015-04-22 11:32:02 -07:00
Leonardo de Moura
53653c3526
fix(frontends/lean): pretty printing in sections with parameters
...
fix #530
2015-04-21 22:44:09 -07:00
Leonardo de Moura
caf28f4053
fix(frontends/lean/decl_cmds): missing condition
2015-04-21 21:08:57 -07:00
Leonardo de Moura
22f6a95cc4
feat(frontends/lean): local notation override global one
2015-04-21 19:55:59 -07:00
Leonardo de Moura
fe9f4dd95f
fix(frontends/lean): another bug in sections with parameters
2015-04-21 19:50:21 -07:00
Leonardo de Moura
3df99e514b
fix(frontends/lean): problems with sections
2015-04-21 19:46:57 -07:00
Leonardo de Moura
52e9ad1a98
feat(frontends/lean): allow persistent notation declaration in sections (when they do not contain parameters)
...
see issue #554
2015-04-21 19:04:06 -07:00
Leonardo de Moura
bf8a7eb9b4
fix(library/scoped_ext): bug in local metadata in sections
...
The problem is described in issue #554
2015-04-21 18:56:28 -07:00
Leonardo de Moura
697a536d9e
fix(library/tactic/inversion_tactic): type incorrect term being built by 'cases' tactic
...
fixes #545
2015-04-20 19:24:52 -07:00
Leonardo de Moura
68d4978953
feat(shell/lean): trap 'std::bad_alloc' and print nicer error message
...
See #489
2015-04-20 17:55:00 -07:00
Leonardo de Moura
47e37a3353
feat(kernel/metavar): add additional assertions
2015-04-20 17:46:06 -07:00
Leonardo de Moura
eb23a30626
feat(library/unifier): additional memory checks
2015-04-20 17:41:08 -07:00
Leonardo de Moura
28dad944c5
fix(library/unifier): cyclic assignment (?M <- ?M)
...
This was producing nonterminating behavior on example described at issue #489
2015-04-20 17:35:37 -07:00
Leonardo de Moura
431eade894
fix(library/tactic/inversion_tactic): incorrect use of optimization
2015-04-20 16:21:44 -07:00
Leonardo de Moura
107763a506
fix(frontends/lean): better error message for 'proof ... qed' blocks containing unsolved placeholders
2015-04-20 15:50:37 -07:00
Leonardo de Moura
df05edf333
feat(frontends/lean): generate warning when 'exit' is used
...
closes #553
2015-04-20 14:45:39 -07:00
Leonardo de Moura
6f6d106a10
feat(library/tactic): add "check_expr" tactic
...
closes #486
2015-04-19 19:00:05 -07:00
Leonardo de Moura
60e320fd79
feat(frontends/lean): protected constants and axioms
...
fixes #527
2015-04-19 17:45:58 -07:00
Leonardo de Moura
b7ca2a0ec9
fix(library/tactic/exact_tactic): exact and or_else
...
fixes #543
2015-04-19 17:23:09 -07:00
Soonho Kong
3d79f89f5e
fix(emacs/lean-mode): lean-execute
...
shell-quote-argument also escapes '~' into '\~' which causes a problem.
This fix first calls 'f-full' to get a absolute path, then call
shell-quote-argument.
close #544
2015-04-16 19:27:42 -04:00
Soonho Kong
20b594e1cd
fix(emacs/lean-mode.el): use 'shell-quote-argument' in lean-execute
...
close #544
2015-04-13 14:19:39 +01:00
Leonardo de Moura
5d95cb0979
feat(library/tactic): add 'refine' tactic
...
closes #482
2015-04-06 18:36:56 -07:00
Leonardo de Moura
412f03b08b
feat(library/tactic/exact_tactic): generate error if 'exact' tactic produces a term containing metavariables
2015-04-06 13:38:53 -07:00
Leonardo de Moura
2bc13f6bfd
feat(library/tactic/exact): enforce goal type during elaboration when executing 'exact' tactic
...
Remark: this was the behavior of the 'sexact' tactic.
This commit also adds the 'rexact' (relaxed exact) tactic which does not
enforce the goal type.
closes #495
2015-04-06 13:23:38 -07:00
Leonardo de Moura
754276a660
feat(frontends/lean): round parenthesis for [tactic1 | tactic2]
...
This commit also replaces the notation for divides
`(` a `|` b `)`
with
a `∣` b
The character `∣` is entered by typing \|
closes #516
2015-04-06 09:24:09 -07:00
Leonardo de Moura
969d17fd12
fix(frontends/lean/elaborator): class inference in tactic mode with trunc
...
closes #477
2015-04-05 17:47:14 -07:00
Leonardo de Moura
d731a4ab13
feat(library/normalize): add '[unfold-f]' hint
...
closes #497
2015-04-05 03:00:13 -07:00
Leonardo de Moura
d591c63840
feat(frontends/lean/decl_cmds): allow local coercions in contexts
...
closes #525
2015-04-04 15:25:07 -07:00
Leonardo de Moura
8c59f17605
feat(frontends/lean): 'using' expression without 'show' or 'have'
...
closes #536
2015-04-04 15:25:07 -07:00
Leonardo de Moura
4ec0e1b07c
feat(frontends/lean): improve calc mode
...
Now, it automatically supports transitivity of the form
(R a b) -> (b = c) -> R a c
(a = b) -> (R b c) -> R a c
closes #507
2015-04-04 08:58:35 -07:00
Leonardo de Moura
1150b19598
perf(frontends/lean/elaborator): do not invoke recursive equation compiler when equations still contain metavariables
2015-04-02 23:37:33 -07:00
Soonho Kong
1f20fb6e9e
feat(emacs/lean-input): add not(¬) and iff(↔)
...
close leanprover/tutorial#81
2015-04-02 22:13:01 -04:00
Leonardo de Moura
ed1acd9fb0
feat(library/init): move propext to init/quot, add Jeremy's funext theorem
2015-04-01 12:36:33 -07:00
Leonardo de Moura
b960e123b1
feat(kernel): add experimental support for quotient types
2015-03-31 22:04:16 -07:00
Leonardo de Moura
4eb270a572
fix(frontends/lean/pp): extra space
2015-03-31 15:07:32 -07:00
Leonardo de Moura
26c914173c
feat(frontends/lean): add --profile option
2015-03-31 11:53:55 -07:00
Leonardo de Moura
46777fdd1d
fix(frontends/lean/migrate_cmd): bug when using migrate command with option --to_axiom
2015-03-30 16:22:06 -07:00
Leonardo de Moura
8c76419c60
fix(frontends/lean/decl_cmds): error localization problem for recursive equations
2015-03-30 13:30:29 -07:00
Leonardo de Moura
cb2a5eeb3c
feat(frontends/lean/inductive_cmd): local notation in inductive decls
2015-03-30 02:14:26 -07:00
Leonardo de Moura
033f3b630d
feat(frontends/lean/scanner): allow upper-case greek letters in identifiers but Pi and Sigma
2015-03-30 02:14:26 -07:00
Soonho Kong
3ac29fae43
fix(util/lua.cpp): 'implicit conversion of nullptr constant to bool' warning
...
clang-3.6.0 generated the following warning:
/Users/soonhok/work/lean/src/util/lua.cpp:49:12: warning: implicit conversion of nullptr constant to 'bool' [-Wnull-conversion]
return nullptr;
~~~~~~ ^~~~~~~
false
2015-03-29 23:06:22 -04:00
Soonho Kong
8243ed6339
fix(test*.sh): allow spaces in filename
...
fix #515
2015-03-28 23:29:52 -04:00
Soonho Kong
7c5339d64e
fix(CMakeLists.txt): quote CMake variables
...
close #513
2015-03-28 22:38:11 -04:00
Leonardo de Moura
ea3407d06d
fix(library/tactic): valgrind warnings for still reachable memory
2015-03-28 12:32:57 -07:00
Leonardo de Moura
88495f9d59
fix(*): remove unnecessary null pointer checks
...
closes #514
2015-03-28 12:16:39 -07:00
Leonardo de Moura
1b15036dba
feat(library/definitional): automatically add attribute [unfold-c] to cases_on, brec_on and rec_on
...
see #496
2015-03-27 19:12:17 -07:00
Leonardo de Moura
75621df52b
feat(frontends/lean): uniform notation for lists in tactics
...
closes #504
2015-03-27 17:54:48 -07:00
Leonardo de Moura
242f8ba048
feat(frontends/lean/elaborator): include number of unsolved goals
...
See #509
2015-03-27 14:54:41 -07:00
Leonardo de Moura
223ef58db9
fix(kernel/equiv_manager): typo
2015-03-27 10:44:09 -07:00
Leonardo de Moura
f33ad9d6f4
feat(kernel): add equivalence manager for speeding up is_def_eq
2015-03-27 10:34:54 -07:00
Soonho Kong
7c9b364957
fix(emacs/lean-info): lean-info-list-parse
...
close #302
2015-03-27 11:37:47 -04:00
Soonho Kong
5c1d7458b5
fix(emacs/lean-input): fix input-method.js format
...
[skip ci]
2015-03-26 14:41:45 -04:00
Soonho Kong
c8e1ed9551
feat(emacs/lean-input): add lean-input-export-translations-to-stdout
2015-03-26 12:55:01 -04:00
Leonardo de Moura
a1c1fcb2f0
fix(frontends/lean/pp): bug in pretty printer new feature
2015-03-25 21:16:21 -07:00
Leonardo de Moura
d69f829337
perf(kernel/justification): avoid redundant justification objects
2015-03-25 19:09:01 -07:00
Leonardo de Moura
0c3fd7427e
feat(frontends/lean): add syntax-sugar for fold
...
closes #503
2015-03-25 18:25:48 -07:00
Leonardo de Moura
f2b1752807
fix(frontends/lean/parser): add workaround for #461
2015-03-25 18:09:43 -07:00
Leonardo de Moura
b9e3c474c9
feat(library/tactic): add all_goals tactic
...
closes #501
2015-03-25 17:42:34 -07:00
Leonardo de Moura
49bc56ec07
feat(frontends/lean/pp): improve pretty printer for prefix and postfix notation
...
closes #491
2015-03-25 16:45:58 -07:00
Leonardo de Moura
a1f933886f
fix(frontends/lean/structure_cmd): explicit universe levels for structures
...
closes #490
2015-03-25 16:10:30 -07:00
Leonardo de Moura
5f1d827b26
fix(frontends/lean/decl_cmds): assertion violation
...
closes #506
2015-03-25 13:46:23 -07:00
Soonho Kong
4c434f4c02
fix(emacs/lean-info): extract proofstate info by using pos of ","
...
fix #302
2015-03-25 12:36:15 -04:00
Soonho Kong
ca81e9bee2
fix(emacs/lean-mode): add 'display-buffer' at the end of lean-exec-at-pos
2015-03-25 08:35:02 -04:00
Leonardo de Moura
9119c3f9fb
fix(shell/lean): uninitialized variable
2015-03-24 18:36:14 -07:00
Leonardo de Moura
1e13f383f6
feat(shell/lean): add --line, --col and --goal options for testing Emacs interface
2015-03-24 12:29:31 -07:00
Soonho Kong
69d1cfdd52
feat(emacs/lean-mode): add lean-exec-at-pos and lean-define-key-binding
...
Example Usage: add the following in your emacs configuration
(add-hook 'lean-mode-hook '(lambda ()
(lean-define-key-binding "\C-c\C-g"
'(lean-exec-at-pos "lean-goal" "*Lean Goal*" "--goal"))))
close #499
2015-03-24 14:57:49 -04:00
Leonardo de Moura
38a63a8a58
fix(library/tactic/exact_tactic): segfault when accessing head of empty list
...
closes #485
2015-03-23 19:00:01 -07:00
Leonardo de Moura
ac30052a29
fix(library/tactic/rewrite_tactic): apply substitution before trying to rewrite
...
closes #487
2015-03-23 18:32:52 -07:00
Leonardo de Moura
5bf46d1226
fix(library/tactic/inversion_tactic): improve 'cases' tactic for HoTT mode
...
closes #481
2015-03-23 18:06:11 -07:00
Leonardo de Moura
98cc325695
refactor(library/tactic/inversion_tactic): cleanup
2015-03-23 17:15:47 -07:00
Leonardo de Moura
76157ba392
fix(frontends/lean/pp): abbreviations with too much arguments
...
closes #480
2015-03-23 12:16:25 -07:00
Leonardo de Moura
0814e76298
fix(library/tactic/clear_tactic): unexpected failure
...
This commit also improves the error message produced by the 'clear' tactic.
fixes #488
2015-03-23 12:08:15 -07:00
Leonardo de Moura
b5acbb2228
fix(frontends/lean/pp): missing parenthesis around abbreviations
...
fixes #476
2015-03-16 17:12:03 -07:00
Leonardo de Moura
9b577a7b3e
feat(frontends/lean): add 'migrate' command
2015-03-14 21:48:00 -07:00
Leonardo de Moura
fc3a7bac59
feat(frontends/lean): improve error handling inside match-with expressions
2015-03-13 23:25:46 -07:00
Leonardo de Moura
bed0d6df6b
fix(frontends/lean/elaborator): inaccessible over coercion
2015-03-13 23:04:45 -07:00
Leonardo de Moura
f6f2c499ae
fix(library/tactic/rewrite_tactic): rewrite macros did not implement operator==
...
This problem was affecting the cache
2015-03-13 19:24:09 -07:00
Leonardo de Moura
cfeb426cd7
fix(frontends/lean): pretty print numeral notation from algebra
2015-03-13 18:58:34 -07:00
Leonardo de Moura
9438366e37
feat(frontends/lean/builtin_exprs): better error synchronization for 'begin...end' blocks
2015-03-13 15:22:57 -07:00
Leonardo de Moura
aba158dbd4
feat(library/tactic/inversion_tactic): improve error message for unknown hypothesis
2015-03-13 15:19:19 -07:00
Leonardo de Moura
b88b98ac22
feat(frontends/lean): try to add definition/theorem as axiom when it fails to be processed
...
The idea is to avoid a "tsunami" of error messages when a heavily used
theorem breaks in the beginning of the file
2015-03-13 14:47:21 -07:00
Leonardo de Moura
f5811d6092
feat(frontends/lean): hide subterms that do not contain metavariables
...
when generating "unresolved metavariables" error message
closes #473
2015-03-13 12:42:57 -07:00
Leonardo de Moura
cda19f5aa6
feat(library/tactic/rewrite_tactic): improve rewrite tactic error messages
...
closes #471
2015-03-12 20:49:53 -07:00
Leonardo de Moura
7accd0f1e6
feat(library/tactic/rewrite_tactic): allow rewrite with terms that contains binders
...
see discussion at #470
2015-03-12 18:07:55 -07:00
Leonardo de Moura
7ca882d69a
fix(frontends/lean/parse_rewrite_tactic): esimp error message position information
2015-03-12 17:05:41 -07:00
Leonardo de Moura
026622a790
refactor(src/kernel/replace_fn): remove stack-less replace_fn it is slower than the simple one
2015-03-12 16:22:49 -07:00
Leonardo de Moura
9fe2d5c74c
refactor(library/unifier): use new assign method in the unifier
2015-03-12 15:01:40 -07:00
Leonardo de Moura
4ea323a2b2
refactor(library/tactic): cleanup common pattern
2015-03-12 14:52:41 -07:00
Leonardo de Moura
8f004671a2
fix(library/unifier): typo
2015-03-12 13:15:23 -07:00
Leonardo de Moura
3e4d849a4a
refactor(kernel/metavar.h): simplify API
2015-03-12 12:50:53 -07:00
Leonardo de Moura
6a78ae7b46
fix(library/tactic/class_instance_synth): enforce consistent behavior in type class resolution
...
Auxiliary procedure mk_class_instance was not discarding partial solutions.
This procedure is used by the apply and inversion (aka cases) tactics
2015-03-12 10:27:05 -07:00
Leonardo de Moura
b38c943086
fix(library/tactic/class_instance_synth): discard partial solutions even when option class.unique_instances = true is used
2015-03-12 10:13:16 -07:00
Leonardo de Moura
47a350d888
fix(library/tactic/inversion_tactic): missing condition for applying optimization
2015-03-12 09:11:36 -07:00
Leonardo de Moura
7de3d5771d
feat(library/tactic/rewrite_tactic): add eta-reduction support at esimp
...
closes #469
2015-03-12 00:32:31 -07:00
Leonardo de Moura
a9fa0fead9
feat(library/match): match modulo eta
2015-03-12 00:30:44 -07:00
Leonardo de Moura
a7af8e7c71
feat(library/tactic/inversion_tactic): remove dummy hypotheses of the form (H : a = a)
...
closes #468
2015-03-11 20:50:06 -07:00
Leonardo de Moura
b5fb7c734e
feat(library/tactic/inversion_tactic): remove hypothesis being destructed
...
addresses second issue in #468
2015-03-11 20:42:50 -07:00
Leonardo de Moura
0a5340aa22
feat(library/tactic/goal): add auxiliary method
2015-03-11 20:39:41 -07:00
Leonardo de Moura
ebdda67812
fix(library/tactic/inversion_tactic.cpp): remove unnecessary hypothesis in HoTT mode
...
partial solution for #468
2015-03-11 19:30:34 -07:00
Leonardo de Moura
737faecc65
feat(library/tactic/inversion_tactic): fail if is_hset type class synthesis produced term containing meta-variables, improve error messages
...
fixes #467
2015-03-11 15:54:50 -07:00
Leonardo de Moura
71ce207080
fix(frontends/lean/elaborator): potential memory access violation
...
Before this commit, the modified method would crash if caching in the
whnf procedure was disabled.
2015-03-11 15:54:50 -07:00
Leonardo de Moura
1c55e2f389
fix(util/memory): memory allocation problem when using clang++ 3.5 on Ubuntu 14.04
2015-03-11 10:06:13 -07:00
Leonardo de Moura
4c6b0dc0e5
fix(library/tactic/expr_to_tactic): tactic_expr_to_id did not take as_atomic annotation into account
...
fixes #466
2015-03-11 08:49:59 -07:00
Leonardo de Moura
1244f01518
chore(library/unifier): remove dead code
2015-03-09 14:07:14 -07:00
Leonardo de Moura
9a6c675908
feat(library/unifier): add option to disable nonchronological backtracking
2015-03-09 12:08:58 -07:00
Leonardo de Moura
f966634910
feat(frontends/lean): nested dependent pattern matching
2015-03-06 19:18:08 -08:00
Leonardo de Moura
1490bdad49
feat(frontends/lean): add version of 'exact' tactic (sexact) that enforces goal type during term elaboration
2015-03-06 17:34:45 -08:00
Leonardo de Moura
bd8c4315f1
feat(frontends/lean): allow 'match-with' to be used in tactics without prefixing it with 'exact'
2015-03-06 15:49:31 -08:00
Leonardo de Moura
4edd7b9099
fix(library/definitional/equations): allow a function to be the result of a match-with term or recursive definition
2015-03-06 15:08:52 -08:00
Leonardo de Moura
f24d9e84fe
feat(frontends/lean): add option 'max_memory'
...
Default value is 512Mb
2015-03-06 13:56:20 -08:00
Leonardo de Moura
3b721fe675
feat(frontends/lean): add missing 'help' command
2015-03-06 13:56:20 -08:00
Leonardo de Moura
daf36803c4
fix(frontends/lean/builtin_exprs): bug in 'using' construct
2015-03-06 13:56:20 -08:00
Leonardo de Moura
368f9d347e
refactor(frontends/lean): approach used to parse tactics
...
The previous approach was too fragile
TODO: we should add separate parsing tables for tactics
2015-03-05 18:11:21 -08:00
Leonardo de Moura
28487ede3b
feat(frontends/lean/decl_cmds): allow 'empty' set of pattern matching equations
2015-03-05 14:37:29 -08:00
Leonardo de Moura
8e9ccf8b6f
chore(frontends/lean): remove 'dead' tokens
2015-03-05 14:37:29 -08:00
Leonardo de Moura
b73a931c70
fix(frontends/lean/elaborator): missing case 'no-equation' annotation
2015-03-05 14:37:29 -08:00
Leonardo de Moura
e4060a5614
feat(frontends/lean): do not force user to type the function name in the left-hand-side of recursive equations
2015-03-05 12:08:36 -08:00
Soonho Kong
87c236613a
feat(emacs/lean-mode.el): add configuration menu-item for flycheck
...
close #451
2015-03-05 14:42:59 -05:00
Soonho Kong
b7c852a5c8
feat(src/lean-mode.el): add 'configuration' menu and add toggle option for 'Show type at point'
...
close #456
2015-03-05 14:37:44 -05:00
Leonardo de Moura
039afb4578
feat(frontends/lean): treat "proof t qed" as alias for "by exact t"
2015-03-05 11:12:39 -08:00
Leonardo de Moura
bd0f209659
feat(library/tactic/exact_tactic): do not force 'exact' tactic expression to be fully elaborated (i.e., metavariable free)
2015-03-05 11:12:39 -08:00
Leonardo de Moura
8295ef4e57
fix(library/tactic/class_instance_synth): constraint execution order at type class resolution
...
We could not fix this problem before because we did not have the
[quasireducible] annotation.
Without this annotation, the fixed TC would loop in some HoTT files.
2015-03-04 22:20:20 -08:00
Leonardo de Moura
abd238aef0
feat(*): add [quasireducible] attribute
2015-03-04 22:12:49 -08:00
Soonho Kong
8265729a82
fix(emacs/README.md): wrong quotation mark
...
[skip ci]
2015-03-04 17:04:39 -05:00
Floris van Doorn
3d7656078d
feat(hott/types): prove that 'is_equiv f' is an hprop
2015-03-04 00:22:51 -05:00
Floris van Doorn
704f2b2697
feat(hott/algebra/category): prove that set is a univalent category assuming is_equiv is an hprop
2015-03-04 00:22:41 -05:00
Leonardo de Moura
51504a1872
feat(library/tactic/class_instance_synth): restrict higher-order unification even more during type class resolution
2015-03-03 20:26:49 -08:00
Leonardo de Moura
7db6ed7c14
refactor(library/unifier): move m_pattern configuration option to unifier_config
2015-03-03 20:24:18 -08:00
Leonardo de Moura
341a9a2010
refactor(library/unifier): remove dead code
2015-03-03 20:14:17 -08:00
Leonardo de Moura
fa79b214b8
fix(frontends/lean): allow 'attribute <id> [priority ...]'
2015-03-03 16:17:32 -08:00
Leonardo de Moura
11aad4449b
feat(frontends/lean): add '[semireducible]' attribute
...
This commit also renames the elements of reducible_status.
The idea is to use in the C++ implementation the same names used in the
Lean front-end.
2015-03-03 10:48:36 -08:00
Leonardo de Moura
8240d7adcd
perf(frontends/lean/util): improve univ_metavars_to_params_fn
...
We moved to replace_visitor because it uses a more precise cache.
2015-03-02 18:25:00 -08:00
Leonardo de Moura
7e2f0f9a36
fix(library/unifier): in the context_check, we should not consider local constants that occur in the type of other constants
...
This was a performance bug.
We were missing higher-order pattern constraints due to this bug.
2015-03-02 17:28:56 -08:00
Leonardo de Moura
1042bbc06f
fix(kernel/metavar): improve error messages by propagating the tag when we execute instantiate_all
...
This is the real fix for commit ededf4fc6c
2015-03-02 13:01:50 -08:00
Leonardo de Moura
c81762970e
fix(frontends/lean/elaborator): revert commit ededf4fc6c
...
The instantiate_all are needed. See issue #457
2015-03-02 13:00:54 -08:00
Leonardo de Moura
fdb169b8f3
feat(library/tactic): improve error localization when compiling tactics
2015-03-02 12:21:02 -08:00
Leonardo de Moura
ededf4fc6c
feat(frontends/lean): remove unnecessary instantiate_all's that were messing with error localization
2015-03-01 14:51:44 -08:00
Leonardo de Moura
ca57b43698
feat(library/tactic): add 'change' tactic
2015-03-01 14:15:39 -08:00
Leonardo de Moura
c8ad5e9406
feat(frontends/lean/builtin_exprs): focus on have-tactic goal
2015-03-01 13:43:33 -08:00
Leonardo de Moura
e07c6675b3
feat(library/tactic/elaborate): better error message for tactics using elaborate_with_respect_to
2015-03-01 13:42:53 -08:00
Leonardo de Moura
c772d7bf84
fix(frontends/lean/elaborator): unassigned metavariable when using nested begin-end blocks
...
Closes #454
2015-02-28 09:03:56 -08:00
Floris van Doorn
23a248ab28
style(hott): let inverse notation have higher binding power than application
2015-02-28 01:16:23 -05:00
Soonho Kong
05cfb21c4c
fix(emacs/lean-server.el): split findp info only up-to 1
...
close #446
2015-02-27 20:04:13 -05:00
Leonardo de Moura
cf56935b01
feat(frontends/lean): improve support for user defined tactics
2015-02-27 16:58:25 -08:00
Soonho Kong
c9ffc2fec8
fix(emacs/lean-util): add hlean support in lean-path-list
...
close #450
2015-02-27 15:27:18 -05:00
Leonardo de Moura
7d827a14c9
feat(library/module): expand 'failed to import' error message
...
see issue #448
2015-02-27 08:00:30 -08:00
Leonardo de Moura
2b65f02f6f
feat(shell/lean): do not terminate if an error is detected when loading the cache
...
see issue #448
2015-02-27 07:54:59 -08:00
Leonardo de Moura
5b736a2268
feat(frontends/lean): add support for empty match-with expressions
2015-02-26 16:36:15 -08:00
Leonardo de Moura
d00c013ad8
fix(shell/lean): display HoTT library path for lean --hlean --path
...
See #450
2015-02-26 15:09:03 -08:00
Leonardo de Moura
72eed42ac8
feat(library/unifier): ignore irrelevant branches when solving flex-rigid constraints
2015-02-26 13:43:54 -08:00
Floris van Doorn
c091acc55b
feat(hott): remove funext as type class, add theorems to prove equalities between functors and natural transformations
2015-02-26 12:52:33 -05:00
Soonho Kong
88e287df5a
doc(emacs/README.md): add instructions for unicode-fonts package
...
related issue: #446
2015-02-26 05:09:40 -05:00
Leonardo de Moura
68110faa4d
feat(frontends/lean/inductive_cmd): allow '|' in inductive datatype declarations
2015-02-25 17:00:10 -08:00
Leonardo de Moura
5ca52d81ec
feat(frontends/lean): ML-like notation for match and recursive equations
2015-02-25 16:20:44 -08:00
Leonardo de Moura
c04c610b7b
feat(frontends/lean): add 'assert H : A, ...' as notation for 'have H [visible] : A, ...'
2015-02-25 14:30:42 -08:00
Leonardo de Moura
96b54a8007
feat(frontends/lean/builtin_exprs): add 'have' notation in 'begin-end' blocks
...
It is notation for the assert tactic.
2015-02-25 14:04:17 -08:00
Leonardo de Moura
425aba9aa9
feat(library/pp_options): reduce default limits in the pretty printer
...
The goal is to avoid problems like the one described in issue #428
2015-02-25 14:04:17 -08:00
Soonho Kong
db1fba3ddc
fix(emacs/lean-server.el): lean-server-trace-buffer-name was changed to a function
2015-02-25 14:21:23 -05:00
Leonardo de Moura
909ebfc5f1
feat(frontends/lean/elaborator): try coercions after each overload
...
We try only the easy cases since the more general case is too expensive.
closes #444
2015-02-24 17:41:20 -08:00
Leonardo de Moura
34c36648bb
fix(frontends/lean/decl_cmds): constants command
...
closes #445
2015-02-24 16:27:13 -08:00
Leonardo de Moura
42289d4334
feat(library/tactic/class_instance_synth): create class instance synthesis subproblems only for arguments marked with the []
binder annotation
2015-02-24 16:12:39 -08:00
Leonardo de Moura
1cd44e894b
feat(library/tactic/class_instance_synth): conservative class-instance resolution: expand only definitions marked as reducible
...
closes #442
2015-02-24 16:12:35 -08:00
Leonardo de Moura
4364b7f926
feat(frontends/lean): pp.beta is true by default
...
Remark: there is one exception (command: print definition). For this
command pp.beta is still false.
2015-02-24 12:27:53 -08:00
Leonardo de Moura
1ff6446a63
feat(frontends/lean): nested begin-end blocks
2015-02-24 11:59:27 -08:00
Leonardo de Moura
21e972e34a
fix(emacs/lean-syntax): syntax-highlight problem in tactics
2015-02-24 11:57:34 -08:00
Leonardo de Moura
dc2ac92846
fix(library/definitional/equations): use whnf on recursive definition arguments
...
The idea is to expose "hidden" datatypes.
2015-02-23 22:27:30 -08:00
Leonardo de Moura
3197e6d403
feat(frontends/lean/parse_rewrite_tactic): improve rewrite tactic parser
2015-02-23 19:40:03 -08:00
Leonardo de Moura
787fed95aa
fix(library/tactic/inversion_tactic): bug in simpler case (hypotheses were being lost)
2015-02-23 16:10:49 -08:00
Leonardo de Moura
7adecaf494
fix(frontends/lean/structure_cmd): include context/section parameteres/variables that are used in explicit structure parameters
2015-02-23 15:28:43 -08:00
Leonardo de Moura
923fed8612
fix(frontends/lean/structure_cmd): bug in alias generation in the structure command
...
This commit (and 75acb3bc66
) closes #443
2015-02-23 15:17:05 -08:00
Leonardo de Moura
75acb3bc66
fix(frontends/lean/structure_cmd): internal name of parameter/variable was being erased
2015-02-23 15:01:27 -08:00