Commit graph

3475 commits

Author SHA1 Message Date
Daniel Selsam
e071501342 chore(lean/typeclass): 'synth_command' -> 'synthCommand' 2019-10-03 17:23:53 -07:00
Daniel Selsam
710b115885 chore(library/init): macro version of panic 2019-10-03 17:23:53 -07:00
Daniel Selsam
1d0e0378c0 chore(library/init/lean): Mvar -> MVar 2019-10-03 17:23:53 -07:00
Daniel Selsam
9c4f33593b chore(typeclass): use Option.toBool 2019-10-03 17:23:53 -07:00
Daniel Selsam
8b461ccdaa fix(library/init/data/queue): need not be inhabited 2019-10-03 17:23:53 -07:00
Daniel Selsam
a82266c652 feat(library/init/lean/typeclass): #synth with tabled resolution 2019-10-03 17:23:53 -07:00
Leonardo de Moura
b4a002f0f2 feat: abstract interpreter entry point, and missing stuff
TODO: widening to ensure termination
2019-10-03 16:50:47 -07:00
Leonardo de Moura
938c018e40 feat: helper functions 2019-10-03 16:50:38 -07:00
Leonardo de Moura
ce80a6d749 chore: naming convention 2019-10-03 16:50:30 -07:00
Leonardo de Moura
b316dc24c8 feat: more array goodies and naming convetion 2019-10-03 16:50:23 -07:00
Leonardo de Moura
c056894da3 feat: add Option.get!, Option.getOrElse ==> Option.getD 2019-10-03 16:50:07 -07:00
Leonardo de Moura
338c9359fa feat: add find! to maps 2019-10-03 16:49:57 -07:00
Leonardo de Moura
680ee21161 feat(library/init/lean/compiler/ir): add unreachbranches.lean
New optimization pass for eliminating unreachable branches that occur
very often when using `ExceptT` and `EState`.

The current commit implements an abstract interpreter for computing
an approximation of the kinds of values returned by a function.
TODO:
- Implement `FnBody.jmp`.
- Implement `interpDecl`
- Remove unreachable branches in `FnBody.case`
2019-10-02 19:57:43 -07:00
Leonardo de Moura
45d664ff25 fix(library/init/lean/compiler/ir/livevars): bug at updateLiveVars 2019-10-02 16:50:37 -07:00
Leonardo de Moura
874dd1d55c chore(library/init/lean/compiler/ir/basic): remove unnecessary function 2019-10-02 16:50:37 -07:00
Leonardo de Moura
e9bcbd5b0d fix(library/init/lean/compiler/ir/unboxresult): reject recursive types 2019-10-02 16:50:37 -07:00
Leonardo de Moura
c41667bf13 feat(library/init): mark Prod, Except, Sigma and Option with [unbox] 2019-10-02 16:50:37 -07:00
Leonardo de Moura
4a219b6bd2 feat(library/init/lean/compiler/ir): add [unbox] attribute 2019-10-02 16:50:37 -07:00
Leonardo de Moura
cc18c0ef91 feat(library/init/lean/expr): add Expr.hasFVar and Expr.hasMVar
cc @dselsam
2019-10-02 10:07:26 -07:00
Leonardo de Moura
db75c8e5cf chore(library/init/data/list): renamed basic_aux ==> basicaux
@kha we are currently avoiding `_` in file names.
I am not super happy with names such as `neverextractattr.lean`.
I am open to a new name convention for .lean files in the stdlib.
2019-10-02 10:07:26 -07:00
Sebastian Ullrich
cae1009175 fix(library/init/data/list/aux): rename to basic_aux.lean
`aux` is a reserved filename on Windows

/cc @leodemoura
2019-10-02 12:30:29 +02:00
Leonardo de Moura
fdab3b90b9 refactor(library/init/data/array): new name convention for Array functions 2019-10-01 16:46:05 -07:00
Leonardo de Moura
411f397654 refactor(library/init/data/list): new name convention for List functions
cc @dselsam @kha
2019-10-01 15:15:02 -07:00
Leonardo de Moura
6ad9d58b0f fix(library/init/lean/compiler/neverextractattr): auxiliary declarations should inherit @[neverExtract] attribute 2019-10-01 14:57:16 -07:00
Leonardo de Moura
70a90ca73e feat(library/init/lean/parser/identifier): allow ! and ? in the identifiers 2019-10-01 14:45:07 -07:00
Leonardo de Moura
9d2eadc754 chore(library/init/lean/compiler): delete @[effectful] 2019-10-01 14:08:31 -07:00
Leonardo de Moura
81847302a7 feat(library/compiler): replace @[effectful] with @[neverExtract] 2019-10-01 14:06:08 -07:00
Leonardo de Moura
80d3ca9d77 feat(library/init/lean/compiler): add @[neverExtract] attribute
It will replace `@[effectful]`

cc @kha
2019-10-01 14:00:02 -07:00
Leonardo de Moura
a507145eb1 feat(library/init/lean/level): add instance : HasBeq Level 2019-10-01 09:47:44 -07:00
Leonardo de Moura
55fad9452f feat(library/init/util): add @[effectful] to dbgTrace and dbgTraceIfShared 2019-10-01 01:18:12 -07:00
Leonardo de Moura
92b39e7161 chore(library/init): add findD variants
@cc @dselsam
2019-09-30 17:26:27 -07:00
Leonardo de Moura
97419f5cc5 feat(library/init/util): add panicWithPos
It will be used by the macro `panic!`.

@kha @dselsam: I think the attribute `@[effectful]` is a bad name.
It is quite misleading. Any suggestions for a new name?
2019-09-30 17:06:07 -07:00
Leonardo de Moura
3d7a7c7e91 feat(library/init/util): add panic primitive 2019-09-30 16:23:18 -07:00
Leonardo de Moura
e451c4dc78 feat(library/init/lean/compiler): add @[effectful]
This attribute is used for low-level primitives like unsafeIO
2019-09-30 16:12:41 -07:00
Leonardo de Moura
2b252a441e feat(library/init/lean/declaration): add ConstantInfo.instantiateTypeUnivParams and ConstantInfo.instantiateValueUnivParams
cc @dselsam

See new test for an example.
2019-09-30 15:46:19 -07:00
Leonardo de Moura
864b9c730c feat(library/init/lean/expr): helper functions
cc @dselsam

Notes:
- x.isAppOrConst => x.isApp || x.isConst
- x.isPi => x.isForall
2019-09-30 15:16:40 -07:00
Leonardo de Moura
faebe15a7f feat(library/init/lean/expr): add efficient instantiate1
cc: @dselsam
2019-09-30 14:33:32 -07:00
Leonardo de Moura
d6ea1d1a3f feat(frontends/lean/builtin_cmds): add #synth command 2019-09-24 11:32:43 +08:00
Leonardo de Moura
28c905f684 chore(library/init/lean): add typeclass skelethon 2019-09-24 11:19:02 +08:00
Leonardo de Moura
18e6a106f4 feat(library/init/lean/smap): implement SMap using PHashMap instead of RBMap 2019-09-20 14:22:03 -07:00
Leonardo de Moura
a4b860b92a fix(runtime): missing Array.data primitive 2019-09-19 10:27:10 -07:00
Leonardo de Moura
a7d616605a fix(runtime/lean): missing primitive 2019-09-19 09:54:03 -07:00
Sebastian Ullrich
f22c17e94b chore(library/init/data/string/basic): remove broken lineColumn obsoleted by FileMap 2019-09-19 18:12:51 +02:00
Sebastian Ullrich
62d1cdcff9 chore(library/init/data/repr): fix String.Iterator.HasRepr 2019-09-19 17:50:24 +02:00
Leonardo de Moura
02e4abb24a feat(library/init/lean/elaborator): convertForall skeleton 2019-09-17 17:17:46 -07:00
Leonardo de Moura
06bb3a82d3 feat(library/init/lean/localcontext): add LocalContext.mkLambda and LocalContext.mkForall 2019-09-17 17:17:46 -07:00
Leonardo de Moura
eebc722f57 feat(library/init/lean/expr): add abstractRange 2019-09-17 17:17:46 -07:00
Leonardo de Moura
1d1ad8e2ed chore(library/init): auxiliary combinators 2019-09-17 17:17:46 -07:00
Leonardo de Moura
fdb1bf84b4 refactor(library/init/data/array/basic): cleanup names and types, add monadic versions 2019-09-17 17:17:46 -07:00
Leonardo de Moura
75e5f5bfd8 feat(library/init/lean/expr): expose abstract 2019-09-16 18:34:45 -07:00