Sebastian Ullrich
1102234932
fix(frontends/lean/elaborator): guard against unexpected sorry macro
...
Fixes #1559
2017-05-02 13:57:16 +02:00
Sebastian Ullrich
07b1cfb268
fix(frontends/lean/structure_cmd): do not combine field default overrides and parent field short-hands
...
Fixes #1557
2017-05-02 13:42:15 +02:00
Leonardo de Moura
55fee26b36
feat(library/class): add attribute for tracking symbols occurring in instances of type classes
...
For more information see:
https://github.com/leanprover/lean/wiki/Refactoring-structures
The new attribute [algebra] implements the [algebraic_class] described
in the page above.
2017-05-01 18:02:30 -07:00
Leonardo de Moura
039f5571cd
test(tests/lean/run): add regression test for #1525
2017-05-01 14:59:24 -07:00
Daniel Selsam
8b8814cfbe
fix(frontends/lean/inductive_cmd.cpp): fixes #1525
2017-05-01 14:57:25 -07:00
Gabriel Ebner
2084060e97
fix(leanpkg): fix leanpkg build environment
2017-05-01 14:11:39 -07:00
Gabriel Ebner
70c0493f20
refactor(leanpkg): factor out helper functions
2017-05-01 14:11:39 -07:00
Gabriel Ebner
d33df6a063
fix(emacs): reduce refresh rate for task overlays
2017-05-01 14:11:39 -07:00
Gabriel Ebner
5fac4a78eb
fix(leanpkg): configure after init/new
2017-05-01 14:11:39 -07:00
Gabriel Ebner
40fc254760
feat(emacs/lean-server): reduce delays
2017-05-01 14:11:39 -07:00
Gabriel Ebner
649d75961a
fix(leanpkg): remove duplicate configure call
2017-05-01 14:11:39 -07:00
Gabriel Ebner
ed9e7d9066
feat(leanpkg): make add command more awesome
2017-05-01 14:11:39 -07:00
Gabriel Ebner
b26ced100e
feat(leanpkg): support path option to specify source directory
2017-05-01 14:11:39 -07:00
Gabriel Ebner
572a81f963
chore(leanpkg): rename desc to manifest
2017-05-01 14:11:39 -07:00
Gabriel Ebner
135fb20d57
refactor(leanpkg): do not assume range of assignment is search path
2017-05-01 14:11:39 -07:00
Gabriel Ebner
90253e220c
fix(leanpkg): remove hack
2017-05-01 14:11:39 -07:00
Gabriel Ebner
44bfceb6a6
feat(library/process): support working directory on windows
2017-05-01 14:11:39 -07:00
Gabriel Ebner
c14221f6d4
chore(CMakeLists): add target to build olean files for leanpkg
2017-05-01 14:11:39 -07:00
Gabriel Ebner
acb03fb704
feat(shell): emscripten build with webassembly
2017-05-01 14:11:39 -07:00
Gabriel Ebner
f14763b777
fix(library/module_mgr): fall back to olean if lean does not exist
2017-05-01 14:11:39 -07:00
Gabriel Ebner
b50f34078e
fix(bin/leanpkg): mac support
2017-05-01 14:11:39 -07:00
Gabriel Ebner
88ef7f384c
perf(leanpkg/main): disable lemma generation for main function
2017-05-01 14:11:39 -07:00
Gabriel Ebner
dc4337779a
fix(util/lean_path): fix emscripten build
2017-05-01 14:11:38 -07:00
Gabriel Ebner
3810e8950d
refactor(util/lean_path,util/path): separate search path functions
2017-05-01 14:11:38 -07:00
Gabriel Ebner
c744efe2f5
feat(leanpkg): add package manager
2017-05-01 14:11:38 -07:00
Gabriel Ebner
504a198517
feat(emacs): support leanpkg.path files
2017-05-01 14:11:38 -07:00
Gabriel Ebner
c8bb77a3df
fix(emacs): demote errors
2017-05-01 14:11:38 -07:00
Gabriel Ebner
d79909a1b8
refactor(util/lean_path): support leanpkg.path files
2017-05-01 14:11:38 -07:00
Gabriel Ebner
baa4c48f1f
refactor(util/lean_path): explicitly pass around search path
2017-05-01 14:11:38 -07:00
Gabriel Ebner
fd6407eccb
feat(library/data/buffer/parser): parser combinators for char_buffer
2017-05-01 14:11:38 -07:00
Gabriel Ebner
c46ffbde4c
feat(library/init/data/char): character class predicates
2017-05-01 14:11:38 -07:00
Gabriel Ebner
867c38e1ea
feat(library/data/buffer,library/init/data/array): utility functions on buffers
2017-05-01 14:11:38 -07:00
Leonardo de Moura
ba5eccdca8
refactor(library/init/core): rename out_param => inout_param
...
It is really input/output.
2017-05-01 14:01:41 -07:00
Leonardo de Moura
74550fbebc
feat(library/init/core): add notation for out_param
2017-05-01 13:52:17 -07:00
Leonardo de Moura
949ed3ac5c
feat(library/init/category/applicative): add has_seq type classes
2017-05-01 12:57:05 -07:00
Leonardo de Moura
f6b47ea5c7
feat(library/init/category): add has_map type class, delete fmap
2017-05-01 10:13:02 -07:00
Leonardo de Moura
66a1fec94e
feat(library/init/category): add has_orelse type class
2017-05-01 09:58:27 -07:00
Leonardo de Moura
5cef84709f
refactor(library): avoid auxiliary definitions such as add/mul/le/etc
...
See Section "Other goodies" at
https://github.com/leanprover/lean/wiki/Refactoring-structures
This commit also improves the support for projections in the
unifier/matcher.
Now, we consider the extra case-split for projections.
Given a projection `proj`, and the constraint `proj s =?= proj t`, we need to try first `s =?= t` and if it fails, then try to reduce.
This is needed in the standard library because we now have constraints such as:
```
@has_le.le ?A ?s ?a ?b =?= @has_le.le nat nat.has_add x y
```
If we reduce the right hand side, we get the unsolvable constraint
```
@has_le.le ?A ?s ?a ?b =?= nat.le x y
```
Before this change, the constraint was `@le ?A ?s ?a ?b =?= @le nat nat.has_add x y`, and we already perform a case-split in this case.
Moreover, projections were eagerly reduced whenever possible.
The extra case-split generates a performance problem in several tests. For example `fib 8 = 34` was timing out.
I worked around this issue by performing the case-split only when the constraint contains meta-variables.
There are also minor issues. Example. `<` is notation for `has_lt.lt`, but `>` is for `gt`.
2017-05-01 08:52:19 -07:00
Gabriel Ebner
3e2e9ed98a
fix(frontends/lean/module_parser): make the #exit command end at the end of the file
...
Fixes #1553 .
2017-05-01 13:22:26 +02:00
Gabriel Ebner
e6a62b8030
fix(util/sexpr/format): incorrect assertion
2017-05-01 13:13:07 +02:00
Gabriel Ebner
8554b8eac1
fix(frontends/lean/pp): insert line breaks in notations
2017-05-01 13:13:07 +02:00
Leonardo de Moura
701b51a882
chore(library/tools/mini_crush/default): increase timeout
2017-04-30 16:27:55 -07:00
Leonardo de Moura
fc9a8ed3be
fix(library/init/meta/smt): fail tactic result type
2017-04-30 14:39:51 -07:00
Gabriel Ebner
ca2eab3a2f
fix(frontends/lean/structure_cmd): instantiate universe levels in projections to parents
2017-04-29 15:00:17 +02:00
Scott Morrison
832c38d3cb
fix(library/vm/vm_environment) use is_structure rather than try to catch an assertion
2017-04-29 12:55:50 +02:00
Scott Morrison
41c648905e
fix(library/tactic/smt/ematch.cpp) check if new_states is empty before pushing
2017-04-28 08:50:45 -07:00
Johannes Hölzl
9535a14e94
fix(frontent/lean/elaborator): check if field is found in structure update
...
Fixes #1549
2017-04-28 17:42:07 +02:00
Sebastian Ullrich
0ca6e2c96f
refactor(library/{type_context,compiler/preprocess},frontends/lean/elaborator): use opaque, general type class instead of special app elaboration for eval_expr
2017-04-27 16:04:59 -07:00
Sebastian Ullrich
4479eebaf0
feat(init/meta/{environment,pexpr}): expose some structure APIs
2017-04-27 16:04:41 -07:00
Gabriel Ebner
3352c31029
fix(library/tactic/smt/ematch): fix compiler warning
2017-04-27 16:04:18 -07:00