Commit graph

26011 commits

Author SHA1 Message Date
Leonardo de Moura
cf70df8a59 refactor(library/init/meta/simp_tactic): default_max_steps should not be in the top level 2017-07-01 12:57:00 -07:00
Leonardo de Moura
95c7c697a6 refactor(library/tactic/simp_lemmas): simp set generation should not be affected by transparency setting 2017-07-01 12:54:37 -07:00
Leonardo de Moura
677ffd761d chore(library/tactic/simp_lemmas): do not use whnf when adding simp_lemmas
If the users want to normalize, then should use dsimp (or similar
tactic), before adding lemma to simp set.
2017-07-01 12:31:35 -07:00
Leonardo de Moura
e41c4d384d chore(library/tactic/simp_lemmas): remove unnecessary whnf 2017-07-01 12:17:53 -07:00
Leonardo de Moura
60a14f25df feat(library/init/meta/simp_tactic): add dunfold_expr back
`super` uses it.
2017-07-01 11:00:28 -07:00
Sebastian Ullrich
3cdf502c58 fix(frontends/lean/pp): escape keyword-like identifiers 2017-07-01 10:38:15 -07:00
Leonardo de Moura
b05c4e09ed feat(library/init/meta): add memoize field to simp_config and dsimp_config
We use `memoize := ff` when implementing `conv.interactive.for` and
`conv.interactive.find`.
2017-07-01 10:37:09 -07:00
Leonardo de Moura
36cc27fa0f feat(library/init/meta/converter/interactive): add for tactic to conv mode 2017-06-30 21:27:17 -07:00
Leonardo de Moura
b1bdc4690f feat(library/init/meta/simp_tactic): cleanup dunfold
Here are modifications:
- It fails if no definition is unfolded.
  See comment https://github.com/leanprover/lean/issues/1694#issuecomment-310956315
  at issue #1694

- Users can provide configuration parameters.

- `dunfold_occs` was deleted.
2017-06-30 20:49:20 -07:00
Leonardo de Moura
5882d5126f chore(library/init/meta/simp_tactic): use mfoldl 2017-06-30 19:42:08 -07:00
Leonardo de Moura
9504c9cabc feat(library/init/meta/converter): add support for dsimp parameters for conv mode 2017-06-30 17:37:24 -07:00
Leonardo de Moura
52d4189805 feat(library/tactic): add dsimp_config configuration object for the dsimp tactic family
Now, `dsimp` fails if the goal did not change.
We can use the config object to obtain the previous behavior:
```
dsimp {fail_if_unchaged := ff}
```
See comment https://github.com/leanprover/lean/issues/1694#issuecomment-310956315
at issue #1694
2017-06-30 17:15:10 -07:00
Leonardo de Moura
19f65b3b8a test(tests/lean/run/conv_tac1): another conv test 2017-06-30 12:49:41 -07:00
Leonardo de Moura
6208934134 feat(library/init/meta/converter/interactive): add support for rw at conv tactical 2017-06-30 12:41:35 -07:00
Leonardo de Moura
f7fe2a775c feat(library/init/meta/rewrite_tactic): improve rewrite tactic
`rewrite` tactic improvements
- Add support for `auto_param` and `opt_param`
- Order new goals using the same strategies available for `apply`
- Allow user to set configuration object in interactive mode.

@Armael This commit should address the issue you raised about the order
of new goals in the `rewrite` tactic.
See new test tests/lean/run/rw1.lean for examples.
2017-06-30 12:03:27 -07:00
Gabriel Ebner
c5af2a6f4c fix(library/module): unfold macros in inductive types 2017-06-30 17:49:50 +02:00
Gabriel Ebner
ade83128f0 fix(frontends/lean/interactive): go-to-definition for relative imports
Fixes leanprover/vscode-lean#58.
2017-06-30 09:20:33 +02:00
Gabriel Ebner
89c828d630 fix(library/library_task_builder): prevent uninitialized task results when cancelled 2017-06-30 08:32:34 +02:00
Corey Richardson
eda6660b2d doc(msys2): add notes about installation 2017-06-30 08:04:14 +02:00
Leonardo de Moura
e1c76578c1 chore(tests/lean/run, doc/changes): more tests and document new feature 2017-06-29 17:12:04 -07:00
Leonardo de Moura
fe51bebab3 refactor(library/init/meta/converter): new conv monad implementation 2017-06-29 16:37:22 -07:00
Leonardo de Moura
5dee3415a4 feat(library/init/meta/simp_tactic): add flag for controlling whether simp-tactics fail when input input expression is not modified 2017-06-29 16:03:20 -07:00
Leonardo de Moura
99d55811e4 feat(library/tactic/match_tactic): automatically convert metavariables occurring in patterns into temporary metavariables (i.e., which are considered during matching) 2017-06-29 11:39:18 -07:00
Gabriel Ebner
08eceb6d85 fix(shell/server): fix sequence number in async responses 2017-06-29 16:43:12 +02:00
Gabriel Ebner
a93528df24 fix(leanpkg): read carriage-return as whitespace 2017-06-29 14:25:59 +02:00
Gabriel Ebner
ee94f7688c fix(shell/lean): do not repeat progress messages
This should fix the problem with the 4MB log limit on Travis.
2017-06-29 13:04:27 +02:00
Gabriel Ebner
bfed11a6f7 fix(util/memory): fix jemalloc support 2017-06-29 11:26:41 +02:00
Leonardo de Moura
eb838c78bf doc(changes): simp improvement 2017-06-28 18:29:44 -07:00
Leonardo de Moura
a7b895525b feat(library/tactic/simp_lemmas): simp lemmas may contain metavariables
@dselsam `simp` now supports lemmas containing metavariables.
The metavariables are automatically converted into tmp metavars.
The new test contains a few examples.
2017-06-28 18:17:21 -07:00
Leonardo de Moura
1dc3f85e26 feat(library/idx_metavar): add helper function for converting metavariables occurring in an expression into temporary metavariables 2017-06-28 18:06:33 -07:00
Leonardo de Moura
103b5d09b3 feat(library/init/meta/tactic): add option for not creating new subgoals at to_expr 2017-06-28 16:46:29 -07:00
Leonardo de Moura
6669ff2132 feat(library/init/meta): add conv interactive mode
Remark: this is just the first step, we still need to populate the
`conv.interactive` namespace with tactics such as rewrite, simp, etc.
2017-06-28 16:09:49 -07:00
Leonardo de Moura
adcb95626e feat(frontends/lean/tactic_notation): allow interactive tactics to take itactic arguments from a different tac_class 2017-06-28 14:51:42 -07:00
Leonardo de Moura
73b6facd1e refactor(library/init/meta): move replace_hyp to tactic.lean 2017-06-28 14:27:32 -07:00
Leonardo de Moura
0b19ef82e1 feat(frontends/lean/structure_cmd): default parameter for structure/class declarations
Remark: we support them at inductive declarations.
2017-06-28 12:20:56 -07:00
Sebastian Ullrich
08495eef27 refactor(init/meta,frontends/lean/tactic_notation): assume_tac -> «assume» etc.
Fixes the eldoc display.

Also allow arbitrary keywords as tactics
2017-06-28 10:43:19 -07:00
Sebastian Ullrich
426f1afb4e feat(util/name): accept more subscripts in identifiers 2017-06-28 10:43:19 -07:00
Sebastian Ullrich
a04a402f54 feat(emacs): highlight escaped identifiers 2017-06-28 10:43:19 -07:00
Sebastian Ullrich
f53fa97c4a feat(frontends/lean): escape identifiers when pretty-printing 2017-06-28 10:43:19 -07:00
Sebastian Ullrich
16fe494736 feat(frontends/lean/scanner): accept arbitrary escaped identifiers 2017-06-28 10:43:19 -07:00
Gabriel Ebner
d6041e3228 fix(library/library_task_builder): fix segfault in cancellation 2017-06-28 17:26:47 +02:00
Daniel Selsam
64bd9fd909 feat(leanpkg/main.lean): allow passing extra arguments to Lean
Closes #1684.
2017-06-28 17:24:25 +02:00
Mario Carneiro
c06c62c03e refactor(init/data/nat/gcd): define gcd using eqn compiler 2017-06-27 18:55:52 -07:00
Mario Carneiro
bae50f8ce6 fix(tests/lean): fix tests 2017-06-27 18:55:52 -07:00
Mario Carneiro
9f2980a524 feat(init/data/int): int lemmas, more bitwise theorems 2017-06-27 18:55:52 -07:00
Mario Carneiro
9f4f93e931 feat(init/data/int): prove int bitwise ops 2017-06-27 18:55:52 -07:00
Mario Carneiro
e705d89490 feat(init/data/int): bitwise ops for integers 2017-06-27 18:55:52 -07:00
Mario Carneiro
ebf15e34cb feat(library/vm/vm_nat): implementation of new bitwise ops 2017-06-27 18:55:52 -07:00
Mario Carneiro
a63bafcc5c refactor(init/data/nat/bitwise): change definitions to avoid WF
The type-correctness of binary_rec_eq (the statement, not the proof) depends on unfolding the embedded well-founded definition of mod. This definition avoids it by using two simpler functions bodd and div2 that reduce well in the kernel.
2017-06-27 18:55:52 -07:00
Sebastian Ullrich
9033cba7d3 feat(frontends/lean,init/meta/interactive): assume and suppose tactics 2017-06-27 18:50:10 -07:00