Commit graph

13382 commits

Author SHA1 Message Date
Leonardo de Moura
fa6697ffa8 feat(frontends/lean/pp): add option pp.annotations for debugging purposes 2018-01-30 12:48:48 -08:00
Leonardo de Moura
28b8020995 fix(library/type_context): bug in the unifier
One of the approximations used was generating type incorrect terms.
2018-01-30 12:48:48 -08:00
Leonardo de Moura
39f1cc0bab test(tests/lean/run): add new tests exposing bug in the unifier
This commit also documents the problem at type_context.cpp, and
describes a potential solution.
2018-01-30 12:48:48 -08:00
Leonardo de Moura
aa1473a6c8 refactor(library/type_context): add process_assignment_fo_approx 2018-01-30 12:48:48 -08:00
Sebastian Ullrich
0f16448bae chore(src/CMakeLists): expose LEAN_IGNORE_OLEAN_VERSION as cmake option CHECK_OLEAN_VERSION 2018-01-30 10:40:07 +01:00
Mario Carneiro
316d67c3be fix(library/init/data/setoid): fix redundant parameter
`setoid.refl` has two instances of `setoid A` in it
2018-01-28 15:49:35 -08:00
Gabriel Ebner
aac833c8d4 test(tests/lean/run): test for mk_inj_eq 2018-01-28 09:10:26 -08:00
Leonardo de Moura
9331945e8b fix(library/init/meta/interactive): alternative fix for issue at #1913
We also document the problem to make sure we don't spend time again
trying to understand the workaround. This is an instance of a bigger
problem that should be addressed later.
2018-01-28 09:07:11 -08:00
Leonardo de Moura
1c61129d40 feat(library/init/meta/tactic): expose approx at unify and is_def_eq tactics 2018-01-25 22:27:18 -08:00
Leonardo de Moura
77ae133baa fix(library/type_context): preprocess_class
@kha This commit fixes the bug we discussed on slack.
I had to repair one of the tests. The broken test made me
realize that if we use the unbundled approach to define something like
`is_semiring`

```
class is_semiring (α : Type) (plus : α → α → α) (mul : α → α → α) (zero : out_param α) (one : out_param α) :=
...
```
Then, to retrieve a `is_semiring` instance, we need to know `α`, `plus`
and `mul`. This is problematic because we may be in a context where one
of them cannot be inferred. This would force user to manually provide
the missing (input) parameter. We are not considering the unbundled
approach for complex algebraic structures such as `semiring`, `ring` and
`field`, but I wanted to document this limitation here since we may face
it in other type classes.

I think it is a bad idea to add back `inout_param` and have both:
`inout_param` and `out_param`. The previous `inout_param` created
many instabilities and hard to diagnose failures.
2018-01-24 17:30:04 -08:00
Leonardo de Moura
b5e2e8ed92 doc(library/module): document the persistent set_option discussion
cc @kha
2018-01-24 17:12:40 -08:00
Leonardo de Moura
adae5b9fa1 chore(library/mpq_macro): delete mpq_macro 2018-01-24 15:24:28 -08:00
Leonardo de Moura
1e626e382f chore(frontends/smt2): remove SMT2 frontend 2018-01-24 15:21:52 -08:00
Leonardo de Moura
2ae080a6d2 doc(library): comment code that need to be refactored for AC matching and algebraic normalizer 2018-01-24 15:09:11 -08:00
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