Leonardo de Moura
5182b5a081
chore(library/tactic): remove unnecessary dependency
2018-01-24 13:35:47 -08:00
Leonardo de Moura
d4e1a4a50a
chore(library/system/io): tactic.run_io ==> tactic.unsafe_run_io
2018-01-24 10:32:32 -08:00
Leonardo de Moura
0d83a74b26
fix(library/io,tests/lean): io monad command line arguments, and tests
2018-01-23 15:24:41 -08:00
Leonardo de Moura
0ad5497462
refactor(library/io): make io easier to extend and use
2018-01-23 15:03:31 -08:00
Leonardo de Moura
cee73e8309
chore(util/lp): remove lp module
...
It has been moved to Z3.
2018-01-23 12:18:30 -08:00
matt rice
1538615e8c
feat(util): allow some math alphanum symbol latin letter variations
...
Add the Script, Double-struck, and Fractur blocks from,
https://unicode.org/charts/PDF/U1D400.pdf
to is_letter_like() so they may be bound to variables.
2018-01-23 11:20:05 -08:00
Sebastian Ullrich
19f8bfd9eb
chore(doc/make): add platform-generic build instructions
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
3a1ede2d73
refactor(leanpkg/config_vars): replace with core lib
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
5c6d15c43d
chore(CMakeLists): clean-olean: clean leanpkg as well
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
18c2e3739a
feat(library/module_mgr): save .olean files of non-dirty .lean files in server mode
...
Note, currently there is no way for a dirty file to become non-dirty again
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
67fc899d0d
feat(shell/server): sync: default "content" to file content
...
This mostly simplifies debugging and testing
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
e8c057f1de
refactor(library/module_mgr): simplify module loading code
2018-01-23 11:14:18 -08:00
Sebastian Ullrich
1ee945a31f
fix(library): store and validate Lean version of .olean files
...
Fixes #1770
2018-01-23 11:14:18 -08:00
Leonardo de Moura
eef29f6a31
fix(build): cmake_policy(SET CMP0054 NEW) is only available on cmake >= 3.1
...
See: https://cmake.org/cmake/help/v3.1/policy/CMP0054.html
2018-01-22 18:10:54 -08:00
Nuno Lopes
0d820fa23d
fix(build): fix Cygwin build
2018-01-22 18:07:04 -08:00
Leonardo de Moura
eff960d498
feat(library/ac_match): add AC match design notes
2018-01-22 18:04:23 -08:00
Leonardo de Moura
ba5bdf639b
feat(library/init/algebra/classes) add is_symm_op type class
2018-01-22 15:43:30 -08:00
Leonardo de Moura
368f17d0b1
feat(library/tactic/simplify): add simp!
2018-01-16 17:29:24 -08:00
Leonardo de Moura
91b9e96582
feat(library/tactic/eqn_lemmas): store flag indicating whether a declaration has only simple equation lemmas or not
2018-01-16 16:55:05 -08:00
Leonardo de Moura
c195d7c2a1
feat(library/tactic/simp_tactic): improve mk_simp_attr
...
- An new simp attribute may depend on other existing attributes
- Add `[norm]` simp attribute. It is an extension of the default `[simp]` attribute.
It should be used to add extra rules for normalizing goals.
These extra rules are used to produce normal forms and/or reduce the
number of constants used in a goal. Here is an example coming from a
discussion with @kha. When working with monads, we may want to
eliminate `<$>` by using the lemma `f <$> x = x >>= pure ∘ f`.
This lemma is in the `[norm]` simp set, but it is not in `[simp]`
2018-01-16 16:47:30 -08:00
Mario Carneiro
147436bfb8
fix(init/data/nat/lemmas): generalize nat.iterate to (Sort u)
2018-01-16 11:37:33 -08:00
Leonardo de Moura
6635f6c8c1
chore(library/init/coe): document why @[reducible] annotation is needed
2018-01-16 11:31:43 -08:00
Sebastian Ullrich
c64284a377
perf(init/data/string/ops): make string.split linear
2018-01-15 10:51:27 +01:00
Sebastian Ullrich
f3b0cb936f
feat(util/lean_path): detect all instances of ambiguous imports
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
1d1e997809
chore(doc/changes): document new leanpkg features
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
837f015a14
chore(leanpkg/README): remove text redundant with the reference
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
18fb3244e7
feat(leanpkg): add help command
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
49e1cf9a79
feat(leanpkg): leanpkg new/init: initialize git repository to correct branch
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
f047a2b73b
feat(leanpkg): leanpkg add/install user/repo shorthand
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
ff346f875b
feat(init/data/string/ops): add string.split
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
94cb177677
feat(leanpkg): never delete information from _target
...
Some people seem to be doing development inside it
2018-01-15 09:58:19 +01:00
Sebastian Ullrich
b354feb8b9
fix(leanpkg): mandate path = "src"
...
Fixes #1880
2018-01-15 09:58:19 +01:00
Leonardo de Moura
cebde17bec
feat(library/tactic/simplify): simp reduces c a_1 ... a_n = c b_1 ... b_n into a_1 = b_1 /\ ... /\ a_n = b_n
2018-01-12 18:18:56 -08:00
Leonardo de Moura
9eb22cd548
feat(library/constructions/injective): automatically generate auxiliary lemma *.inj_eq for constructors
...
We are going to use these lemmas in the simplifier.
2018-01-12 16:41:12 -08:00
Leonardo de Moura
58fce78282
feat(library/init/meta/interactive): add interactive tactic subst_vars
2018-01-12 14:37:11 -08:00
Leonardo de Moura
5bad6d5372
feat(library/init/meta/tactic): subst supports heterogeneous equalities that are actually homogeneous
2018-01-12 14:32:49 -08:00
Leonardo de Moura
1437d7209a
feat(library/tactic/simplify): add support for generalized inductive datatypes
2018-01-12 11:51:49 -08:00
Leonardo de Moura
4bd314f7bd
feat(library/tactic/simplify): simp reduces c_1 ... = c_2 ... to false
2018-01-12 11:30:45 -08:00
Leonardo de Moura
56920639fa
chore(library/init/meta/coinductive_predicates): remove old comment
2018-01-12 10:56:39 -08:00
Leonardo de Moura
c3d4a9456e
feat(library/init/meta/interactive): add sorry interactive tactic (alias for admit).
2018-01-11 16:58:46 -08:00
Leonardo de Moura
c5df94ed17
feat(library/tactic): add support for auto params at simp tactic
2018-01-11 16:47:22 -08:00
Leonardo de Moura
5a320e260a
refactor(library/tactic): code duplication
2018-01-11 14:12:15 -08:00
Leonardo de Moura
3b0e23e1f0
fix(library/equations_compiler/util): make sure untrusted macros are unfolded when creating auxiliary *._sunfold definitions
2018-01-11 12:45:42 -08:00
Leonardo de Moura
fc760f57d2
chore(library/init/algebra/classes): typos
2018-01-10 15:17:02 -08:00
Leonardo de Moura
26da50ab0e
feat(library/vm/vm_string): efficient iterator.extract
...
@kha I've added
iterator.extract : iterator -> iterator -> option string
It returns `none` if the iterators are "incompatible".
If this function is inconvenient to use, we can change it and return the
empty string in these cases.
Given iterators `it1` and `it2`, if they are sharing the same string
object in memory, then the cost is O(pos(it2) - pos(it1)).
If not, we have an extra O(N) step where we check whether the strings
being iterated by it1 and it2 are equal (`N` is the size of the strings).
In most applications, I believe the iterators will share the string
object.
I didn't test the code much. BTW, I found an unrelated bug at
vm_string.cpp. So, I'm not very confident this code is rock solid.
2018-01-10 13:27:28 -08:00
Leonardo de Moura
78708b4697
fix(library/vm/vm_string): bug at iterator.set_curr
2018-01-10 13:25:26 -08:00
Leonardo de Moura
8e172afdc1
fix(library/type_context): typo
2018-01-09 16:55:44 -08:00
Leonardo de Moura
5cd0f25c1e
doc(doc/changes): describe new "smart unfolding" feature
2018-01-09 16:47:32 -08:00
Leonardo de Moura
60be2bf2aa
feat(frontends/lean/builtin_cmds): use type_context to implement #reduce command
2018-01-09 16:42:52 -08:00
Leonardo de Moura
0c5c1a27c6
refactor(frontends/lean, library/equations_compiler): move smart unfolding auxiliary function generation to equations_compiler module
2018-01-09 16:27:36 -08:00