Leonardo de Moura
fd25827d3e
fix(library/init/lean/compiler/ir/resetreuse): must use livevars instead of freevars
...
The file badreset contains two functions where the new `reset/reuse`
insertion procedure implemented in Lean produces better results than the
one implemented in C++.
cc @kha
2019-05-07 11:09:51 -07:00
Leonardo de Moura
bca57afae7
fix(library/init/io): RefPointed must "depend" on \alpha
2019-05-07 09:26:28 -07:00
Leonardo de Moura
6a496844fd
chore(library/init/lean/compiler/ir/freevars): simplify code using "no shadowing" assumption
2019-05-06 18:38:03 -07:00
Leonardo de Moura
1295bf52bc
feat(library/init/lean/compiler/ir): add Decl.checker for debugging purposes
...
We have also added a new `Context` object, and modified our IR
invariant. Now, we assume there is no variable or join point shadowing.
2019-05-06 18:35:06 -07:00
Leonardo de Moura
4b4ff9bf69
feat(library/init/data/array/basic): add Array.mfor
2019-05-06 18:21:29 -07:00
Leonardo de Moura
20285b1079
fix(library/init/core): incorrectly fixing universe level at 1
2019-05-06 18:20:39 -07:00
Leonardo de Moura
05a2e88ac9
feat(library/init/lean/compiler/ir): add FnBody.isLiveVar
2019-05-06 16:13:47 -07:00
Leonardo de Moura
fa16920a6a
feat(library/init/control/conditional): add HasToBool.toBool, and combinators
...
New combinator: `bool`, `<&&>` and `<||>`
2019-05-06 14:24:20 -07:00
Leonardo de Moura
0d1a0c8b6e
chore(library): toBool ==> decide
...
We want to define a type class similar to Haskell's `ToBool`.
2019-05-06 14:02:15 -07:00
Leonardo de Moura
c1fecc8939
feat(library/init/data/array/basic): add anyM and allM
2019-05-06 13:47:36 -07:00
Leonardo de Moura
604d5fecbb
feat(library/init/lean/compiler/ir/basic): add Context
2019-05-06 10:57:45 -07:00
Leonardo de Moura
67d9f4cd1e
chore(library/init/lean/compiler/ir): clarify
2019-05-06 10:52:33 -07:00
Leonardo de Moura
439ce06a19
refactor(library/init/lean/compiler/ir): move "free variable" code to separate file
2019-05-05 08:04:33 -07:00
Leonardo de Moura
7a5e64e52e
chore(library/init/lean/compiler): move IR related files to subdirectory
2019-05-05 07:55:36 -07:00
Leonardo de Moura
ac747c5f6e
feat(library/init/data/rbmap): add erase
2019-05-04 15:58:30 -07:00
Leonardo de Moura
8db0474571
feat(library/init/data/random): random numbers
...
It is useful for creating tests.
2019-05-04 15:57:42 -07:00
Leonardo de Moura
54fc37b00d
feat(library/init/lean/compiler): add Decl.normalizeIds
2019-05-03 22:46:56 -07:00
Leonardo de Moura
626e8fb27f
chore(library/init/data/rbmap/basic): use [specialize] instead of [inline]
...
`RBMap.insert` is not that small.
2019-05-03 21:09:49 -07:00
Leonardo de Moura
b6c4caf725
feat(library/init/lean/compiler/simpcase): do not create default case when there are no repeated branches
...
It reduces clarity without improving performance.
2019-05-03 20:48:52 -07:00
Leonardo de Moura
82d88dc96f
chore(library/init/core): make sure new frontend can parse it
...
@kha This is a temporary fix. We will get back to the new frontend after
we submit the IR paper.
2019-05-03 17:36:39 -07:00
Leonardo de Moura
86faa5ade4
chore(library/init/lean/compiler/ir): modify join point formatter
2019-05-03 17:22:02 -07:00
Leonardo de Moura
80e9c4706f
fix(library/init/lean/compiler/resetreuse): bug during cleanup
2019-05-03 17:00:20 -07:00
Leonardo de Moura
4845a2dbc4
feat(library/init/lean/compiler): cleanup
2019-05-03 16:37:08 -07:00
Leonardo de Moura
c34b064e83
feat(library/init/lean/compiler/ir): add insertResetReuse
2019-05-03 14:20:14 -07:00
Leonardo de Moura
1e101d35a8
feat(library/init/lean/compiler/ir): add auxiliary functions
2019-05-03 12:19:58 -07:00
Leonardo de Moura
4cafd19f72
chore(library/init/lean/compiler): missing prelude
2019-05-03 12:19:58 -07:00
Sebastian Ullrich
c77970a00f
refactor(library): remove now-redundant parentheses
2019-05-03 13:57:21 +02:00
Leonardo de Moura
fb8bbee609
chore(library/init/lean/compiler/pushproj): cleanup
2019-05-02 15:45:56 -07:00
Leonardo de Moura
02da0177bb
feat(library/init/lean/compiler/ir): add updtHeader field
...
This field is not used in the paper, but we have used in the C++
implementation and got a significant performance boost.
2019-05-02 15:29:42 -07:00
Leonardo de Moura
805ee81e73
chore(library/init/lean/compiler): modifiedJPVals ==> modifyJPs
2019-05-02 15:22:33 -07:00
Leonardo de Moura
2c4811a808
chore(library/init/lean/compiler): remove unnecessary [@export]s
2019-05-02 15:04:28 -07:00
Leonardo de Moura
e3f32a6108
chore(library/init/lean/compiler): cleanup
2019-05-02 15:02:35 -07:00
Leonardo de Moura
e90224b435
fix(library/init/lean/compiler/simpcase): bugs at simpCase
2019-05-02 15:02:21 -07:00
Leonardo de Moura
76a49ec256
chore(library/compiler): add ir::test
2019-05-02 14:40:04 -07:00
Leonardo de Moura
3628b39cb6
feat(library/init/lean/compiler): add simpcase transformation
2019-05-02 12:40:37 -07:00
Leonardo de Moura
db30a23055
fix(library/init/lean/compiler): bug fixes
2019-05-02 12:22:00 -07:00
Leonardo de Moura
81d11db5d2
chore(runtime/object): rename runtime primitives
2019-05-02 10:55:29 -07:00
Leonardo de Moura
4c9a488446
chore(library/init/data/array): naming convention
...
@kha Trying again :)
I started using the prefix `f` for the `Fin` version (e.g., `fswap` and
`fswapAt`). So, it seemed natural to use the prefix `f` for the `Fin`
versions of `get` and `set`.
BTW, is it too crazy to use `a[i]` (without spaces) as notation for
`a.get i`? The constraint is to make sure `f a [i]` is not ambiguous.
That is, `f a[i]` is `f (a.get i)` and `f a [i]` is `f a (i::nil)`.
This is doable with the new parser.
Then, we could have `a[i]` as notation for `a.fget i` if `i` is a `Fin`,
and `a.get i` if `i` is `Nat`.
Similarly, `a[i := v]` would be notation for `a.fset i v` if `i` is
`Fin`, and `a.set i` if `i` is `Nat`.
It would also be awesome to have
```
let a[i] := v in
e
```
as notation for
```
let a := a[i := v] in
```
2019-05-02 10:23:53 -07:00
Leonardo de Moura
970941db2c
feat(library/init/data/array/basic): add Array.filter
2019-05-02 09:51:08 -07:00
Leonardo de Moura
46c3a14f83
chore(library/init/lean/compiler/pushproj): move comment
2019-05-02 09:48:17 -07:00
Leonardo de Moura
719eb67114
chore(library/init/lean/compiler): VarIdxSet => IndexSet
2019-05-02 08:23:59 -07:00
Leonardo de Moura
3a612bfd8b
feat(library/init/lean/compiler): add elimDead transformation
2019-05-02 08:06:45 -07:00
Leonardo de Moura
5a83a2d7bb
feat(library/init/data/array/basic): add swapAt
2019-05-02 07:46:11 -07:00
Leonardo de Moura
94fe3c18d0
fix(library/init/data/rbtree/basic): add HasInsert instance
...
It is useful for defining finite trees
2019-05-01 21:19:07 -07:00
Leonardo de Moura
e52e787ad5
fix(library/init/lean/compiler/pushproj): bug and cleanup
2019-05-01 21:01:03 -07:00
Leonardo de Moura
2991b966e5
featg(library/init/lean/compiler): add pushproj
2019-05-01 17:38:44 -07:00
Leonardo de Moura
1707628b6b
feat(library/init/data/array/basic): Array.reverse
2019-05-01 17:38:44 -07:00
Leonardo de Moura
af1d521706
feat(library/init/data/array/basic): add Array.swap
2019-05-01 17:38:44 -07:00
Leonardo de Moura
cfec797e69
feat(library/init/lean/compiler/ir): helper functions
2019-05-01 17:38:44 -07:00
Leonardo de Moura
ed5e461130
feat(library/init/lean/compiler/ir): add maxVar
2019-05-01 17:38:44 -07:00