Commit graph

12913 commits

Author SHA1 Message Date
Mario Carneiro
092fc89333 doc(changes): changelog 2017-07-28 22:40:25 +01:00
Gabriel Ebner
36dc037d65 perf(util/rc): do not use fences
As suggested by David Chisnall.  If I read the spec correctly, it would
be unsafe to use the release ordering for dec_ref_core: then the
following situation could happen:

```c++
// m_rc -> 2

// Thread 1:
unsigned x = atomic_fetch_sub_explicit(&m_rc, 1u, memory_order_release);

// Thread 2:
unsigned y = atomic_fetch_sub_explicit(&m_rc, 1u, memory_order_release);

// x = y = 1u, m_rc -> 2
```

That is, a release store operation is not required to be visible to
another release operation.

Herb Sutter also recommends the acq_rel ordering for reference counters.
2017-07-28 18:31:04 +01:00
Mario Carneiro
1b28b9f5bd chore(init/data/int/basic): define nat_abs using equation compiler 2017-07-28 16:47:53 +01:00
Mario Carneiro
490cc50b51 chore(init/data/nat): mark simp rules 2017-07-28 16:47:53 +01:00
Mario Carneiro
fb4e952ac8 fix(init/meta/congr_tactic): congr tries assumption first
This gives a workaround for the situation where the `congr` tactic does too much congruence applications, such as reducing `|- a + b = b + a` to `|- a = b` and `|- b = a`, by supplying the desired equalities to stop at using `have`.
2017-07-28 16:47:53 +01:00
Mario Carneiro
f369e34bd6 chore(library/standard): remove standard.lean (unused, and confusing given stdlib) 2017-07-28 16:47:53 +01:00
Mario Carneiro
9ca2113790 refactor(init/algebra/group): parameterize transport_mul_to_add 2017-07-28 16:47:53 +01:00
Mario Carneiro
bd19736b21 feat(init/data/nat/bitwise): definitional lemmas for nat.shiftl 2017-07-28 16:47:53 +01:00
Mario Carneiro
89131ba1ff feat(init/meta/interactive): expose custom hyp name in by_contra 2017-07-28 16:47:53 +01:00
Mario Carneiro
e6294710db refactor(init/classical): simplify classical proofs 2017-07-28 16:47:53 +01:00
Mario Carneiro
ec82afb45a fix(tests): fix tests 2017-07-28 16:47:02 +01:00
Mario Carneiro
26548c956c feat(init/meta/interactive): rw at *, rw at h1 h2 |- support
Now tactics supporting locations can also specify the goal among the locations by using the name `⊢` or `|-`. Also `rw at *` is implemented so that it will rewrite any hypotheses or the goal for which the whole sequence of rewrites succeeds. (This is different from `rw at h1 h2 ... hn |-`, which requires that all rewrites run to completion on each specified target.)
2017-07-28 16:47:02 +01:00
Leonardo de Moura
870ce5c0fe fix(library/init/meta/constructor_tactic): fixes #1771 2017-07-28 09:45:51 +01:00
Sebastian Ullrich
52ae484f68 feat(emacs): add keybindings for leanpkg commands (C-c C-p ...) 2017-07-27 14:40:22 +02:00
Sebastian Ullrich
dc3e0c17ff fix(emacs/lean-pkg): fix leanpkg being started in the wrong folder 2017-07-27 14:39:39 +02:00
Sebastian Ullrich
5539be0dcc chore(script/deploy_gh_pages): --reset-author 2017-07-27 10:23:16 +02:00
Sebastian Ullrich
d6db630786 feat(leanpkg): make test imply build 2017-07-27 10:15:42 +02:00
Sebastian Ullrich
2e200535fb chore(script/deploy_gh_pages): upload to new lean-nightly repo 2017-07-26 17:17:48 +02:00
Sebastian Ullrich
99b4c8714d chore(.appveyor.yml,.travis.yml): simplify using glob patterns 2017-07-26 17:13:34 +02:00
Sebastian Ullrich
cb325e85fa fix(script/deploy_gh_pages): use --amend 2017-07-26 17:02:00 +02:00
Sebastian Ullrich
c44ed73d56 fix(frontends/lean/scanner): minor lexical grammar fixup 2017-07-26 17:02:00 +02:00
Leonardo de Moura
58016bc037 chore(tests/lean): fix test suite 2017-07-26 14:10:02 +01:00
Leonardo de Moura
16e7976b1a chore(library/init/data/vector): remove [...] notation for vectors
This is a temporary workaround. The problem is that this notation
overloads the one in list, and we currently can't handle nary
overloads in patterns.
2017-07-26 13:45:30 +01:00
Leonardo de Moura
a258620425 feat(library/init/data/default): add vector and bitvec 2017-07-26 13:38:51 +01:00
Leonardo de Moura
1ec65bed44 refactor(library/init): move bitvector to main repo
@digama0 I moved bitvec back to the main repo, and many nat lemmas.
I want these lemmas here for now. I will need some of them for future
decision procedures.
2017-07-26 13:35:38 +01:00
Leonardo de Moura
d5850871da fix(leanpkg/leanpkg): list.for and monad.for issues 2017-07-26 12:02:08 +01:00
Mario Carneiro
fb2447468b chore(init/category/combinators): remove monad.for
and variations, in favor of monad.map and variations
2017-07-26 11:52:11 +01:00
Mario Carneiro
4dc261393f refactor(init/data/list): move out advanced list defs 2017-07-26 11:52:11 +01:00
Mario Carneiro
813fda9ba5 refactor(init/data/{nat,list}): rename for consistency with stdlib 2017-07-26 11:52:10 +01:00
Mario Carneiro
09f9cada65 chore(init/data/nat): rename add_one_eq_succ -> add_one 2017-07-26 11:52:10 +01:00
Mario Carneiro
cc81118892 refactor(init/data): move out some nat lemmas 2017-07-26 11:52:10 +01:00
Mario Carneiro
7d4fe55bff fix(tests/lean/run/choice_anon_ctor): fix test 2017-07-26 11:52:10 +01:00
Mario Carneiro
36b2fb228e fix(leanpkg): fix leanpkg (use list instead of hash_map) 2017-07-26 11:52:10 +01:00
Mario Carneiro
74aeb250ec refactor(*): move out stdlib 2017-07-26 11:52:10 +01:00
Sebastian Ullrich
b3bc4b73fa fix(.appveyor.yml): ... 2017-07-26 09:55:38 +02:00
Sebastian Ullrich
f1316eaf40 fix(.appveyor.yml): ugh 2017-07-25 18:36:10 +02:00
Sebastian Ullrich
eea5370292 fix(.appveyor.yml): fix build 2017-07-25 18:08:51 +02:00
Sebastian Ullrich
a54ac12918 chore(.appveyor.yml,.travis.yml,CMakeLists): set Lean version string to "nightly" for nightly builds to make artifact name and contents version-independent 2017-07-25 17:57:53 +02:00
Sebastian Ullrich
fdc1df49ec fix(.appveyor.yml): use correct variable syntax... 2017-07-25 14:29:35 +02:00
Sebastian Ullrich
f998fed50e fix(.travis.yml): fix script working dir 2017-07-25 14:02:16 +02:00
Sebastian Ullrich
a93dba699e feat(.appveyor.yml): add artifact with version-independent name 2017-07-25 13:46:13 +02:00
Sebastian Ullrich
586d355703 feat(.travis.yml): deploy nightly builds to Github Pages 2017-07-25 13:33:36 +02:00
Gabriel Ebner
d68665f7a2 chore(library/init/meta/tactic): fix copy-paste error in docstring 2017-07-23 09:48:08 +01:00
Gabriel Ebner
25aa847aba fix(library/constructions/brec_on): make motive explicit in *.below
Otherwise you can't figure out the type from the pretty-printed output
`nat.below n`.
2017-07-23 09:38:44 +01:00
Gabriel Ebner
537b11f358 fix(library/tactic/cases_tactic): do not let internal exception escape
This was doubly ungood since the contained vm_obj was shared across
threads.  @digama0 wseq.exists_of_lift_rel_left should work now.
2017-07-22 15:25:56 +01:00
Mario Carneiro
667e1e1381 fix(CMakeLists): remove executable before overwriting on windows, third try
This one is tested to work on my machine
2017-07-21 05:09:02 -07:00
Leonardo de Moura
c7c8387bd8 chore(tests/lean/run/bin_tree): fix broken test 2017-07-21 05:05:42 -07:00
Leonardo de Moura
4faae27069 perf(frontends/lean): add notation #[...]
The new notation should be use to input long sequences.
Closes #1755
2017-07-21 04:20:48 -07:00
Leonardo de Moura
3bcbfbf348 perf(library/compiler/elim_recursors): beta_reduce ==> head_beta_reduce
This commit fixes the byte code generation performace problem
exposed by #1755
2017-07-21 03:32:23 -07:00
Leonardo de Moura
af80c2890d chore(library/init/meta/tactic): define focus_aux using is_assigned 2017-07-21 02:39:55 -07:00