Commit graph

1542 commits

Author SHA1 Message Date
Sebastian Ullrich
9e53147e0a feat(frontends/lean/elaborator): allow field notation for recursive calls 2017-08-22 15:33:37 -07:00
Leonardo de Moura
fb2186334a fix(library/init/meta/relation_tactics,library/tactic/subst_tactic): fixes #1772 2017-08-21 14:51:30 -07:00
Gabriel Ebner
8a6d2e2a54 chore(library/init/meta/simp_tactic): typo 2017-08-20 09:25:44 +02:00
Leonardo de Moura
bb5ce6d04b fix(library/init/meta/interactive_base): incorrect pattern
@kha I'm trying to improve the equation compiler. I have added a
preprocessing step, and got the following wierd output when testing
tests/lean/interactive/info_goal.lean

```
> {"record":{"doc":"This tactic applies to any goal. It gives directly the exact proof\nterm of the goal. Let `T` be our goal, let `p` be a term of type `U` then\n`exact p` succeeds iff `T` and `U` are definitionally equal.","source":,"state":"⊢ ℕ → ℕ","tactic_params":["<error while executing interactive.param_desc: don't know how to pretty print lean.parser.pexpr 2>"],"text":"exact","type":"interactive.parse interactive.types.texpr → tactic unit"},"response":"ok","seq_num":4}
```

The problem seems to be the pattern
`(parser.pexpr)
which is sugar for
`(parser.pexpr std.prec.max)
and will not match `(pexpr 2)`

So, I fixed it by replacing the pattern with `(parser.pexpr %%v).
However, it is not clear to me why it was working before.
Any ideas?
2017-08-18 17:05:44 -07:00
Leonardo de Moura
d4f2bb77b8 feat(frontends/lean): recursive equation preprocessor
To make the equation compiler more convenient to use, we will add a
couple of preprocessing steps.
This commit adds the first one of them. In this step, we use
type inference to refine pattern variables, and we relax the
restrictions on inaccessible annotations.

We will also add a preprocessing step that implements the "complete
transition" step before we execute the elim_match step.
2017-08-18 15:06:11 -07:00
Gabriel Ebner
ef83c37973 fix(library/init/meta/simp_tactic): dsimp_target: instantiate_mvars 2017-08-18 09:24:04 +02:00
Gabriel Ebner
256ca9789f fix(library/tactic/simp_lemmas): fix typo in pp 2017-08-18 08:54:03 +02:00
Mario Carneiro
97815e4eb3 feat(init/logic): false.elim eliminates to Sort 2017-08-17 11:42:55 +02:00
Mario Carneiro
c5bb5cb1eb fix(init/meta/interactive_base): declare |- notation 2017-08-17 11:34:00 +02:00
Leonardo de Moura
19ee270c60 refactor(library): remove vector and bitvec from init
Reason: vector in in init folder was introducing an overload (`::`) for
all Lean users. The workaround (use `local infix ::`) was
counterintuitive.

We currently have no special support for bitvectors in the code
generator. Thus, there is no need to have vector and bitvec in the init
folder right now. Moreover, the new parser and elaborator (issue #1674) should
provide better ways of managing overloaded symbols.
2017-08-16 13:40:50 -07:00
Sebastian Ullrich
579d4a459e chore(init/meta/interactive): check simp lemmas for ambiguous overloads
Fixes #1786
2017-08-15 12:43:02 +02:00
Gabriel Ebner
32ddac5f40 feat(library/tactic/kabstract): expose kabstract to VM 2017-08-14 11:41:54 +02:00
Gabriel Ebner
867bc46d99 feat(library/vm/vm_parser): expose parse_command_like to the vm 2017-08-14 11:41:48 +02:00
Gabriel Ebner
7e4a5a78c8 chore(library/init/algebra/order): generalize lemma 2017-08-06 09:58:24 +02:00
Gabriel Ebner
22011dcde4 chore(init/algebra/order): typo
Thanks to @fpvandoorn for proof-reading!
2017-08-02 15:41:51 +01:00
Gabriel Ebner
66b80dde54 chore(library/init/algebra/order): remove unused lemmas 2017-08-02 14:41:35 +01:00
Gabriel Ebner
5922f71c50 feat(library/init/algebra/order): add default value for lt 2017-08-02 14:41:35 +01:00
Gabriel Ebner
b1954f949b chore(init/data/int): remove unused lemmas 2017-08-02 14:41:35 +01:00
Gabriel Ebner
ce509e621a refactor(library/init/algebra): remove order_pair classes 2017-08-02 14:41:35 +01:00
Sebastian Ullrich
4f66673fc2 feat(init/meta/attribute,library/tactic/attribute): user_attribute apply handlers 2017-08-02 14:32:39 +01:00
Leonardo de Moura
39fa7625b8 feat(library/init/meta/interactive): add specialize tactic
closes #1779
2017-08-02 10:20:25 +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
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
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
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
Gabriel Ebner
d68665f7a2 chore(library/init/meta/tactic): fix copy-paste error in docstring 2017-07-23 09:48:08 +01: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
af80c2890d chore(library/init/meta/tactic): define focus_aux using is_assigned 2017-07-21 02:39:55 -07:00
Mario Carneiro
97a01d25fd fix(init/meta/tactic): skip solved goals in seq_focus and seq
and all/any_goals. This occurs when solving the first subgoal generated by `tac1; tac2` closes the second goal as well, before the second `tac2` invocation is run. Reported by @jldodds on gitter.
2017-07-21 02:10:48 -07:00
Sebastian Ullrich
a1066525ca feat(init/meta/interactive): auto-generalize inductive major premise args
Like Isabelle
2017-07-20 01:51:00 -07:00
Sebastian Ullrich
20c2232bc6 feat(init/meta/interactive): auto-generalize induct parameter
Like Isabelle
2017-07-20 01:51:00 -07:00
Sebastian Ullrich
7d39b3e948 refactor(init/meta/interactive): merge generalize and generalize2 and introduce nicer syntax 2017-07-20 01:51:00 -07:00
Mario Carneiro
89e860ac8b doc(init/core): Document init_quotient in lean
This way people can search for "constant quot" and find it in the lean source. Plus the init_quotient command only occurs once, so this way people know what it means.
2017-07-20 01:36:28 -07:00
Mario Carneiro
dfbcb72f38 chore(init/meta/tactic): remove superfluous fail clause 2017-07-20 01:28:21 -07:00
Mario Carneiro
4ae2f87bc8 refactor(init/meta/tactic): use dite instead of cases in by_cases
This fixes the issue in PR #1752 by using `dite`, which is essentially nondependent cases, so that the decidable instances are not substituted.
2017-07-20 01:28:21 -07:00
Gabriel Ebner
ba2718a89d feat(library/init/meta/environment): expose function to unfold all macros 2017-07-18 19:49:53 +01:00