Leonardo de Moura
95ca283854
chore(library/compiler/csimp): remove m_proj2var, we can use m_var2ctor instead
2019-04-02 10:05:20 -07:00
Leonardo de Moura
c4ad8f3dbc
chore(stage0): update
2019-04-02 09:54:32 -07:00
Leonardo de Moura
005d62185d
feat(library/compiler/csimp): add "case merging" optimization
2019-04-02 09:41:53 -07:00
Leonardo de Moura
498758bdfc
chore(stage0): update
2019-04-02 09:41:18 -07:00
Leonardo de Moura
b083b6b655
test(tests/playground/lowtech_expander): remove dead code
2019-04-01 15:45:13 -07:00
Leonardo de Moura
d73d262aa1
test(tests/playground/lowtech_expander): letTransformer skeleton
2019-04-01 15:08:34 -07:00
Leonardo de Moura
b75706ffff
test(tests/playground/lowtech_expander): add support for fixing SyntaxNodeKinds when reading Syntax objects from .olean
2019-04-01 12:35:28 -07:00
Leonardo de Moura
8004fcf2f1
test(tests/playground/lowtech_expander): use Nat to identify SyntaxNodeKinds
2019-04-01 12:17:06 -07:00
Leonardo de Moura
76b054bc1d
test(tests/playground/lowtech_expander): expander experiment
2019-04-01 10:55:41 -07:00
Leonardo de Moura
5e1a3a7e6a
feat(library/init/data/array/basic): make sure we reduce List.length too at List.toArray
2019-04-01 10:54:45 -07:00
Sebastian Ullrich
daf208326a
test(tests/playground): expander performance tests
2019-04-01 17:23:14 +02:00
Leonardo de Moura
a6fb9268bc
tests(tests/playground/parser): add tests
2019-03-31 10:42:56 -07:00
Leonardo de Moura
e8780c193d
test(tests/playground/parser): remove eps field, and make sure bind "preserves tail recursion"
2019-03-30 20:57:24 -07:00
Leonardo de Moura
a7069060f5
fix(library/init/control): camelCase conversion typos
2019-03-30 20:54:39 -07:00
Leonardo de Moura
7e08130c8f
test(tests/playground/parser): add leanWhitespace parser
2019-03-30 12:48:18 -07:00
Leonardo de Moura
c9bd22c265
test(tests/playground/parser): add strLit
2019-03-30 08:04:59 -07:00
Leonardo de Moura
5b31f85fcb
chore(library/init/core): add extern for strictAnd and strictOr
2019-03-30 08:04:16 -07:00
Leonardo de Moura
5e14a5f561
refactor(library/init/lean/parser/trie): use String.Pos instead of OldIterator
...
Renamed the old `matchPrefix` to `oldMatchPrefix`.
2019-03-29 18:17:27 -07:00
Leonardo de Moura
e58949e938
chore(library/init/control/id): rename id monad to Id
2019-03-29 16:45:52 -07:00
Leonardo de Moura
6af5f0490e
chore(library/init/data/list/basic): cleanup
2019-03-29 16:33:08 -07:00
Leonardo de Moura
12595fb501
feat(library/compiler/specialize): cache whenever possible
...
There were many opportunities for reusing previously specialized code at
stdlib
2019-03-29 15:21:17 -07:00
Leonardo de Moura
018ff249b9
test(tests/compiler/lazylist): new test for closures and thunks
2019-03-29 15:00:52 -07:00
Leonardo de Moura
1be1f3c4ea
fix(stage0): missing file
2019-03-29 11:42:16 -07:00
Leonardo de Moura
4149a25186
chore(tests): fix tests
2019-03-29 11:25:26 -07:00
Leonardo de Moura
c134617ee3
fix(library/init/data/array/basic): mkEmpty
2019-03-29 11:20:45 -07:00
Leonardo de Moura
e4f36d14ac
chore(library/init/control/combinators): remove weird List.mmap' alias for List.mfor
2019-03-29 11:09:47 -07:00
Leonardo de Moura
9abca5bad9
perf(library/init/control/combinators): improve mfor
...
`mfor` was creating a bunch of closures.
We have disabled `mrepeat` since we don't have support for marking
which arguments should be considered during specialization.
2019-03-29 11:08:11 -07:00
Leonardo de Moura
49551036ed
refactor(library/init): minor changes
...
Old `Nat.repeat` => `Nat.for`
Old `Nat.mrepeat` => `Nat.mfor`
New `Nat.repeat` has type
```
def repeat {α : Type u} (f : α → α) (n : Nat) (a : α) : α :=
``
`List.repeat` => `List.replicate` (like in Haskell)
Avoid weird `ℕ` in List library
2019-03-29 10:39:00 -07:00
Leonardo de Moura
229e4a25b3
refactor(library/init/array): implement mkArray in Lean, add allow mkEmpty to set initial capacity
2019-03-29 10:19:21 -07:00
Sebastian Ullrich
c8e11d289f
feat(library/init/data/array/basic): new Array operations from syntax-array experiment
2019-03-29 16:02:08 +01:00
Sebastian Ullrich
a86b852d1c
chore(library/init/data/array/basic): use same foldl signature as other types
2019-03-29 14:34:42 +01:00
Sebastian Ullrich
1a6a87d4e2
chore(library/init/lean/parser/token): avoid tryView
2019-03-29 14:32:21 +01:00
Sebastian Ullrich
21f1d231b8
fix(runtime/object): do not return temporary borrowed reference from a builtin
2019-03-29 14:32:15 +01:00
Sebastian Ullrich
5b8c2574ed
feat(shell/CMakeLists): build stdlib using -g in debug mode
2019-03-29 14:32:12 +01:00
Leonardo de Moura
25897f038b
feat(library/init/data/option/basic): add [inline] attributes
2019-03-28 20:18:37 -07:00
Leonardo de Moura
e46018bfd8
chore(tests/lean): move test to tests/lean/run
2019-03-28 18:21:10 -07:00
Leonardo de Moura
9d325515d4
chore(library/compiler/util): reduce term size if possible
2019-03-28 17:35:12 -07:00
Leonardo de Moura
8c58314b84
fix(library/compiler/csimp): lc_unreachable simplifications
...
The simplifications were introducing dangling free variables.
2019-03-28 17:32:41 -07:00
Leonardo de Moura
1ebdb9f1b1
fix(library/compiler): do not inline definitions using unsafe inductives
...
This commit also makes sure that `has_trivial_structure` returns false
for `unsafe` inductive datatypes.
See new test for further details.
2019-03-28 16:07:57 -07:00
Leonardo de Moura
427d3b4d40
chore(library/compiler/specialize): reduce stack consumption
2019-03-28 15:05:48 -07:00
Leonardo de Moura
4dbae58646
fix(library/equations_compiler): make sure _unsafe_rec auxiliary definitions contain all local constants used in the safe one
...
cc @kha
2019-03-28 12:57:15 -07:00
Leonardo de Moura
1f197b5293
feat(library/equations_compiler/unbounded_rec): check whether f._unsafe_rec and f have the same type
...
`f._unsafe_rec` is the auxiliary definition created by the equation
compiler to help the code generator to produce better code.
2019-03-28 12:39:44 -07:00
Leonardo de Moura
146292d3d6
fix(tests/playground): parser experiments
2019-03-28 10:32:39 -07:00
Leonardo de Moura
b74a9b63de
feat(library/equations_compiler/partial_rec): improve base case synthesis
2019-03-28 10:19:57 -07:00
Leonardo de Moura
2943fce8c8
chore(library/init/core): add strictAnd and strictOr
2019-03-28 09:42:12 -07:00
Leonardo de Moura
19f31d483a
chore(tests/playground/rbmap.library.lean): camelCase
2019-03-28 08:23:38 -07:00
Leonardo de Moura
0161ef8487
fix(library/compiler/name_mangling): bug
2019-03-28 08:23:38 -07:00
Leonardo de Moura
42fbe3c18c
chore(library/init,runtime,library/compiler): add fix primitive back
...
The new `partial def`s allow us to define `fix` in Lean, but the Lean
implementation is not as efficient as the native one. The native one
in C++ use weak pointers to prevent a closure allocation at every
recursive invocation.
This commit also fixes the `fixCore` helper functions that were broken
after we switched to camelCase.
We have updated the test `fix1.lean` to demonstrate the native
implementation is faster. Here are the numbers on my desktop.
```
./run.sh fix1.lean 24
721420279
Time for 'native fix': 816ms
721420279
Time for 'fix in lean': 1.34s
```
2019-03-27 17:13:53 -07:00
Leonardo de Moura
cd21793b53
fix(frontends/lean/elaborator): assertion violation
...
Prevent assertion violation when processing examples such as:
```
@[pattern] def badPattern (x : Nat) : Nat := 0
def tst (y : Nat) : Nat :=
match y with
| (@badPattern _) := 1
| _ := 2
```
The `x` is not used in `badPattern`. Thus, the elaborator fails to
synthesize the metavariable corresponding to `_` at `@badPattern _`.
The fix detects this kind of instance, but I commented the code the
throws the error because we would prevent us from compiling `term.lean`.
The assertion violation was originally triggered by the pattern definition
```
@[pattern] def «explicitBinderContent» (requireType : optParam.{1} Bool Bool.false) :=
{SyntaxNodeKind . name := `Lean.Parser.Term.explicitBinderContent}
at
...
view := fun stx, let (stx, i) := match stx.asNode : _ -> Prod Syntax Nat with
| some {kind := @«explicitBinderContent» requireType, -- << HERE
args := [stx], ..} := ...
```
These definitions were generated by the node choice macro.
cc @kha
2019-03-27 16:42:59 -07:00
Leonardo de Moura
ea3a38c5d3
chore(runtime/object): style
2019-03-27 14:08:10 -07:00