Mario Carneiro
a1cfce88d5
feat(init/data/list): filter theorems, non-meta qsort
2017-07-05 12:37:54 -07:00
Mario Carneiro
8920d55f8d
feat(init/logic): decidability of partial functions
2017-07-05 12:37:54 -07:00
Mario Carneiro
35ed9e9301
feat(init/data/ordering): ordering.or_else, string lex order
2017-07-05 12:37:54 -07:00
Mario Carneiro
0a77c8338b
feat(data/list/set): map is nodup
2017-07-05 12:37:54 -07:00
Mario Carneiro
90fc8b1d45
feat(init/logic): mark dif_pos and dif_neg as @[simp]
...
This is needed for simplifying `dite` after a case split
2017-07-05 12:37:54 -07:00
Mario Carneiro
387c7d46b4
refactor(init/data/fin/basic): shorten fin dec eq proof
2017-07-05 12:37:54 -07:00
Mario Carneiro
42d26a3954
feat(init/data/array): array theorems
2017-07-05 12:37:54 -07:00
Mario Carneiro
1ca6aba076
feat(data/buffer): decidable_eq instance
2017-07-05 12:37:54 -07:00
Mario Carneiro
9d8a898529
feat(data/hash_map): find_empty
2017-07-05 12:37:54 -07:00
Mario Carneiro
9239056c4f
feat(data/list/set): nodup is decidable
2017-07-05 12:37:54 -07:00
Mario Carneiro
b422f3f372
feat(data/buffer/parser): foldl and foldr parsers
2017-07-05 12:37:54 -07:00
Mario Carneiro
9fc04ae812
feat(init/data/option/instances): = none of is_none
2017-07-05 12:37:54 -07:00
Mario Carneiro
0172c17447
feat(init/data/bool/lemmas): theorems about to_bool and bool coercion
2017-07-05 12:37:54 -07:00
Mario Carneiro
e2a3331c7c
refactor(init/data/option/instances): option_map
2017-07-05 12:37:54 -07:00
Mario Carneiro
803af7cd63
feat(library/data/stream): more stream theorems
2017-07-05 12:37:53 -07:00
Mario Carneiro
1e2157e210
fix(init/meta/constructor_tactic): constructor tac uses whnf
2017-07-05 12:37:53 -07:00
Leonardo de Moura
d0242a3631
chore(library/init/meta/simp_tactic): cleanup
2017-07-05 12:14:26 -07:00
Leonardo de Moura
1bc9af53f2
fix(library/init/meta/simp_tactic): fixes #1724
2017-07-05 11:59:23 -07:00
Leonardo de Moura
c631a4cd4a
chore(CMakeLists.txt): trying to fix Windows build
2017-07-05 11:48:04 -07:00
Leonardo de Moura
bb9e3ddae2
feat(library/init/meta/interactive): rw [-h] ==> rw [← h]
...
@Armael: this change may affect your project.
The file `doc/changes.md` explains the motivation for the change.
2017-07-05 11:42:55 -07:00
Leonardo de Moura
a76e839e5a
chore(tests/lean/keyword_tactics): fix test output
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
8ac1ea6b18
feat(frontends/lean/tactic_notation): ignore by keyword in interactive tactic mode
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
30f4b2f2dd
refactor(library): list.taken/dropn ~> list.take/drop
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
c8d6b40991
refactor(frontends/lean/builtin_exprs,library): suppose ~> assume :
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
f024ccd75d
refactor(frontends/lean/token_table,library): take ~> assume
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
f95f70fe56
feat(frontends/lean/builtin_exprs): support have ... := ... in term mode
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
2f73a38637
refactor(frontends/lean/builtin_exprs): simplify parse_have
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
2ca44459ba
feat(init/meta/interactive): add from synonym for exact
2017-07-05 11:20:10 -07:00
Sebastian Ullrich
2b35a9b1f0
fix(frontends/lean/notation_cmd): notation: default binding power for leading tokens to max
2017-07-05 17:30:38 +02:00
Leonardo de Moura
3175cc6923
fix(CMakeLists.txt): increase thread stack space on OSX
...
closes #1721
On OSX, the default thread stack space is quite small (512Kb), and
each stack frame is quite big in Debug mode.
2017-07-04 18:00:21 -07:00
Sebastian Ullrich
ad97607307
fix(frontends/lean/tactic_notation): always use quote_scope for parsing interactive parameters
...
Replace now redundant `qexpr` parser with `parser.pexpr`
2017-07-04 12:20:38 -07:00
Sebastian Ullrich
faf65d2a77
feat(emacs/lean-dev): add lean-diff-test-file command for development
2017-07-04 12:20:38 -07:00
Sebastian Ullrich
c3d4c468e6
fix(init/meta/interactive): whnf in assume tactic
2017-07-04 12:20:38 -07:00
Leonardo de Moura
b68fe0d645
chore(tests/lean/interactive): fix test
2017-07-04 11:57:16 -07:00
Leonardo de Moura
dd3616dd16
feat(library/init/meta/interactive): simp_all ==> simp * at *
...
cc @Kha
2017-07-04 11:57:16 -07:00
Leonardo de Moura
d0ab9d0cd1
feat(library/init/meta/interactive): simp * as shorthand for simp [*]
2017-07-04 11:57:16 -07:00
Gabriel Ebner
b0185774a4
fix(library/vm/vm_expr): do not use expr_var as both function and class name
2017-07-04 09:10:35 +02:00
Gabriel Ebner
4a1fe588ea
feat(lean-gdb.py): show expression kind
2017-07-04 08:38:19 +02:00
Leonardo de Moura
44c901bf11
fix(library/init/meta/interactive): make sure all input hypotheses are simplified before we clear the old ones
...
The new test exposes the bug.
The bug is similar to the one at `simp [h] at *` described at issue #1675
2017-07-03 21:58:55 -07:00
Leonardo de Moura
abef98c772
refactor(library/init/meta/simp_tactic): make sure dunfold tactics use name convention used at simp, dsimp, ...
2017-07-03 21:36:17 -07:00
Leonardo de Moura
b86847ec72
fix(library/init/logic): mark eq.substr with [elab_as_eliminator]
...
See issue #1718
2017-07-03 17:27:41 -07:00
Leonardo de Moura
e24f3341d4
feat(library/init/meta/interactive): simp without foo ==> simp [-foo]
...
This commit also adds "exception" validation.
A bad "exception" was being silently ignored.
We can also exclude hypotheses. Example: `simp [*, -h]`
2017-07-03 17:10:46 -07:00
Leonardo de Moura
76799db032
feat(library/init/meta/interactive): simph ==> simp [*]
...
This modification was suggested by @kha.
TODO:
- Use `simp [-f]` instead of `simp without f`
- Allow users to remove hypothesis from `*`. Example: `simp [*, -h]`
for simplify using all hypotheses but `h`.
2017-07-03 15:14:47 -07:00
Leonardo de Moura
69ed291aab
refactor(library/init/meta/simp_tactic): tactic.simp_at => tactic.simp_hyp
2017-07-03 14:07:18 -07:00
Leonardo de Moura
34c212fa53
refactor(library/init/meta/simp_tactic): cleanup simp_intros mess
2017-07-03 13:46:16 -07:00
Leonardo de Moura
6b3e28d30b
feat(library/init/meta/simp_tactic): add option for reducing [reducible] definitions at dsimp, and to_unfold : list name similar to the one in the simp tactic
...
This complete addresses the two pending items at 16711fcdba
2017-07-03 13:28:46 -07:00
Leonardo de Moura
9a41f0f899
fix(library/init/meta/tactic): by_cases tactic
...
Before this commit, the `by_cases p` tactic would synthesize
`inst : decidable p` type class resolution, and then use the
`cases` tactic (dependent elimination). This would create
problems since occurrences of `inst` would be replaced with
`decidable.is_true h` in one branch, and `decidable.is_false h` in the
other. Where `h`s (we have two of them, one for each branch) are
fresh hypotheses introduced by the `cases` tactic.
For example, assume we have the term in our goal.
`@ite p inst A a b`
This term would become
`@ite p (decidable.is_true h) A a b` (in the first branch where `h : p`)
and
`@ite p (decidable.is_false h) A a b` (in the second where `h : not p`)
Now, suppose we try to executed the following tactic in the first branch
`rw [if_pos h]`
it will fail since `if_pos h` is actually `@if_pos p inst h`, and
we will not be able to unify
`@ite p (decidable.is_true h) A a b =?= @ite p inst ?A ?a ?b`
This commit workarounds this problem by applying cases on
`@decidable.em p inst : p or not p` instead of `inst : decidable p`.
Thus, the term `inst` is not replaced with `decidable.is_true h` and
`decidable.is_false h`.
The new test `tests/lean/run/simp_dif.lean` demonstrates the problem above.
2017-07-02 21:34:10 -07:00
Leonardo de Moura
16711fcdba
feat(library/tactic/dsimplify): new configuration options for dsimp
...
TODO for `dsimp`:
- Add an option for reducing [reducible] definitions
- Add (to_unfold : list name) similar to the one in the `simp` tactic
2017-07-02 18:26:03 -07:00
Leonardo de Moura
df091f5c34
feat(library/init/meta/interactive): simp and unfold can unfold projection applications
...
@Armael: we finally can write `simp [proj]` to unfold the `proj`
projection application.
Remark: we still need to add similar support for `dsimp`.
2017-07-02 16:28:04 -07:00
Leonardo de Moura
76eed7cb41
chore(library/init/meta): add to_unfold parameter to simplify, and remove redundant simp* tactics
...
Remark: the `to_unfold` has not been implemented yet.
2017-07-02 15:26:06 -07:00