Commit graph

2924 commits

Author SHA1 Message Date
Leonardo de Moura
999ba7670d feat(library/init/lean/compiler/ir): add ExternEntry to Decl.extern constructor 2019-05-17 16:27:58 -07:00
Leonardo de Moura
ac69f802e1 feat(library/compiler): interface with new IR compiler entry point 2019-05-16 15:41:47 -07:00
Leonardo de Moura
5482a11642 feat(library/init/lean/compiler/ir/default): add new entry point 2019-05-16 10:20:00 -07:00
Leonardo de Moura
2d065c7ded feat(library/init/lean/compiler/ir): add Lean.IR.CompilerM
and environment extension for storing Lean IR declarations.
2019-05-16 10:20:00 -07:00
Leonardo de Moura
b87afdcbfd chore(library/init/lean/compiler/closedtermcache): naming convention 2019-05-15 15:19:09 -07:00
Leonardo de Moura
09df708af2 feat(library/init/lean/compiler): implement close term cache env extension in Lean 2019-05-15 11:01:25 -07:00
Leonardo de Moura
7212fbab6e perf(library/init/lean/environment): search hashmap first
Hypothesis: the vast majority of Environment queries try to access
imported constants instead of local ones.
2019-05-15 11:01:25 -07:00
Leonardo de Moura
70dce4b775 feat(library/init/lean/environment): show rbmap depth and hashmap bucket size 2019-05-15 11:01:25 -07:00
Leonardo de Moura
89e01368cd fix(library/init/lean/environment): throw error if environment already contains constant 2019-05-15 11:01:25 -07:00
Leonardo de Moura
3193e91aff feat(library/init/lean/environment): add Environment.displayStats and --stats command line argument 2019-05-15 11:01:25 -07:00
Leonardo de Moura
bc809643ec feat(library/init/lean/expr): add Expr.quickLt, Expr.eqv 2019-05-15 11:01:25 -07:00
Leonardo de Moura
8ab15536a7 perf(library/init/data/array/binsearch): add binSearchContains 2019-05-14 20:52:57 -07:00
Leonardo de Moura
45eda6d81b perf(library/init/lean/modifiers): add only local entries to state
We can use `getModuleEntries` and `getModuleIdxFor` to test whether a
constant is protected or not.
2019-05-14 20:30:46 -07:00
Leonardo de Moura
dc71fafac1 feat(library/init/data/array): add Array.binSearch 2019-05-14 18:25:54 -07:00
Leonardo de Moura
2e4f5951e3 feat(library/init/data/array/qsort): simple quicksort
@kha I added `qsort` for sorting environment extension entries, but I am
wondering if we could use it as a benchmark in our paper. It is a pure implementation; it is
fast; it implements the real quick sort algorithm with in-place updates if the
input array is not shared. If the array is shared it performs
a single copy and then switches to in-place updates.
2019-05-14 17:46:34 -07:00
Leonardo de Moura
5fa924ff4a feat(library/init/lean/environment): improve registerPersistentEnvExtension signature 2019-05-14 16:25:43 -07:00
Leonardo de Moura
da5b900cbd feat(library/init/lean): add protected extension 2019-05-14 16:04:24 -07:00
Leonardo de Moura
3a3da7dfdf chore(library/init/env_ext): update 2019-05-14 15:45:10 -07:00
Leonardo de Moura
b888b6f3b6 feat(library/init/lean/environment): process imported entries 2019-05-14 15:32:07 -07:00
Leonardo de Moura
59235c1899 chore(library/init/lean/environment): ModuleId ==> ModuleIdx 2019-05-14 13:02:43 -07:00
Leonardo de Moura
5e2111f4a4 fix(library/init/lean/environment): process entries using the order they were inserted 2019-05-14 12:53:50 -07:00
Leonardo de Moura
a24a1562ea fix(library/init/lean/environment): import order 2019-05-14 12:41:19 -07:00
Leonardo de Moura
5df0b05cc7 chore(library/init/lean/environment): remove get_modifications_core 2019-05-14 11:26:04 -07:00
Leonardo de Moura
d5fd5d86ee fix(library/init/lean/environment): quotInit initialization 2019-05-14 10:31:06 -07:00
Leonardo de Moura
02e558d781 feat(library/init/lean/environment): export module I/O in Lean 2019-05-14 10:15:33 -07:00
Leonardo de Moura
642c4c59bd feat(library/init/lean/environment): support for serializing/performing legacy modification objects 2019-05-14 10:08:31 -07:00
Leonardo de Moura
dbb519d826 feat(library/init/lean/environment): importModules draft 2019-05-14 08:58:29 -07:00
Leonardo de Moura
427852d759 feat(library/init/lean/environment): add findOLean 2019-05-14 08:02:26 -07:00
Leonardo de Moura
5844913102 feat(library/module, library/init/lean/environment): add primitives for reading/writing files as compacted regions 2019-05-13 17:26:28 -07:00
Leonardo de Moura
40f9704540 chore(library/init/lean/environment): add placeholders for writing/reading .olean files 2019-05-13 15:48:23 -07:00
Leonardo de Moura
5480d22be6 feat(library/init/lean/environment): add getModifications 2019-05-13 15:18:03 -07:00
Leonardo de Moura
ec846f1552 chore(library/init/lean/environment): rename primitive 2019-05-13 15:15:29 -07:00
Leonardo de Moura
02f90485e6 feat(library/init/lean): use Environment in the new frontend 2019-05-13 13:04:57 -07:00
Leonardo de Moura
4392ed2466 fix(library/init/lean/default): make sure environment.lean is initialized 2019-05-11 18:05:11 -07:00
Leonardo de Moura
750384142e perf(library/init/control/estate): missing [inline] 2019-05-11 16:38:25 -07:00
Leonardo de Moura
c46608ced5 feat(library/init/io): implement unsafeIO in Lean
Motivation: avoid closure allocation.
2019-05-11 16:28:11 -07:00
Leonardo de Moura
76f643fbf6 chore(library/init/control/estate): add EState.run and EStage.run' 2019-05-11 16:26:51 -07:00
Leonardo de Moura
5f563973f3 feat(library/init/lean/environment): lower level interface for C++ 2019-05-11 15:50:02 -07:00
Leonardo de Moura
77c6aa6693 chore(library/init/io): mark unsafeIO as unsafe
@kha The previous declaration was fine from the logical point of
view. That is, nobody would be able to prove `false` using the opaque
constant `unsafeIO`. However, its runtime implementation breaks
referencial transparency, and counterintuitive behavior may happen if
it is not used carefully.
2019-05-11 15:46:45 -07:00
Leonardo de Moura
1270353313 feat(library/init/lean/environment): add auxiliary functions 2019-05-11 14:30:06 -07:00
Leonardo de Moura
7580ad8fe8 feat(library/init/lean/environment): add auxiliary functions for refactoring environment.cpp 2019-05-10 17:02:27 -07:00
Leonardo de Moura
f5725abb57 refactor(library/init/lean/environment): cleanup and improve 2019-05-10 15:54:29 -07:00
Leonardo de Moura
e0b5f9a018 feat(library/init/lean/environment): extensions can only be registered during initialization 2019-05-10 11:51:42 -07:00
Leonardo de Moura
fd2a5dd45e feat(library/init/io): add IO.initializing 2019-05-10 11:26:49 -07:00
Leonardo de Moura
708bc42e0a feat(library/init/lean/environment): generate ModuleData 2019-05-10 11:21:17 -07:00
Leonardo de Moura
251890b490 feat(library/init/control/combinators): add Nat.mfold and rename Nat.for => Nat.fold 2019-05-10 10:47:57 -07:00
Leonardo de Moura
f6b3bc868a fix(library/init/lean/environment, library/compiler): compilation error and add [implementedBy] attribute 2019-05-10 07:22:56 -07:00
Leonardo de Moura
ecb50b553d feat(library/init/lean/environment): environment extension registration and API 2019-05-09 16:53:04 -07:00
Leonardo de Moura
3b80ec89b7 feat(library/init/lean/environment): add Environment
TODO: finish environment extension
2019-05-09 12:30:52 -07:00
Leonardo de Moura
ff47eba9d1 fix(library/init/control/combinators): iterate forward 2019-05-09 07:43:13 -07:00