Sebastian Ullrich
b9424975b3
refactor(init/meta): replace dynamically-checked quotes where possible
2017-02-17 19:59:57 -08:00
Leonardo de Moura
a9122a2c0a
chore(library/init/meta): use general when
2017-02-17 19:51:40 -08:00
Leonardo de Moura
a4f43d36a6
feat(library/init/meta/smt): add rsimp
2017-02-17 19:40:38 -08:00
Leonardo de Moura
c51d9ad4f4
feat(library/init/meta): add simph: a shorter simp_using_hs
2017-02-17 13:45:03 -08:00
Leonardo de Moura
03d53b82bd
feat(library/init/meta/contradiction_tactic): minor improvement
2017-02-17 13:44:42 -08:00
Leonardo de Moura
d3c340a30c
feat(library/init/meta): improve induction tactic interface
...
It uses .rec recursor when it is not specified
2017-02-17 10:58:51 -08:00
Leonardo de Moura
e16c3a0bee
feat(library/init/meta/fun_info): add fold_explicit_args
2017-02-17 10:21:06 -08:00
Sebastian Ullrich
84f3e2a492
refacotr(init/meta/interactive): clean up parameter gadgets
2017-02-17 15:41:58 +01:00
Sebastian Ullrich
69ed7b940f
refactor(init/meta/interactive): query position information dynamically
2017-02-17 15:41:58 +01:00
Sebastian Ullrich
e8fa54cc51
refactor(init/meta): move macro creation defs from expr to pexpr
2017-02-17 13:45:57 +01:00
Sebastian Ullrich
9d8c84713c
refactor(*): reduce exception context info from expr to pos_info
2017-02-17 13:45:57 +01:00
Sebastian Ullrich
e14eab2db8
chore(test/lean/interactive): do not test for exact source information
2017-02-17 13:45:56 +01:00
Sebastian Ullrich
d15591a2d8
feat(library,frontends/lean): expose parser to Lean and use for parsing tactic parameters
2017-02-17 13:45:56 +01:00
Leonardo de Moura
efcebc60f7
feat(library/init/meta/contradiction_tactic): make it more robust
2017-02-16 21:43:34 -08:00
Leonardo de Moura
54deb6362d
feat(library/init/meta): add helper tactics
2017-02-16 20:49:55 -08:00
Gabriel Ebner
1d301b7813
feat(init/meta/smt/congruence_closure): add has_to_tactic_format instance
2017-02-15 13:38:30 -08:00
Leonardo de Moura
edd5e97045
feat(frontends/lean/elaborator): coercion from (decidable) Prop to bool
...
This is a hard coded extra case. It is not an instance of has_coe.
Even if we change has_coe to accomodate this case, it will not be a
satisfactory solution because this coercion depends on the element and
not the type, and the element usually contains metavariables.
We should eventually write a tactic for synthesizing coercions.
2017-02-14 18:41:32 -08:00
Leonardo de Moura
11d5773560
refactor(library/init/meta): remove whnf_core
2017-02-14 18:39:57 -08:00
Leonardo de Moura
06a7d6d311
refactor(library/init/meta): remove exact_core
2017-02-14 17:43:42 -08:00
Leonardo de Moura
1ab2bb7714
feat(frontends/lean/elaborator): eta-expand function applications until we consume all optional and auto parameters
2017-02-14 17:38:08 -08:00
Leonardo de Moura
1b412b6cc0
feat(library/init/meta): new cases that reverts also composite terms
...
The previous `cases` tactic would only use the revert/intro idiom
for `cases h` when `h` is a hypothesis
2017-02-14 13:30:36 -08:00
Leonardo de Moura
3ced85d399
feat(library/init/meta/tactic): add kdepends_on tactic
2017-02-14 10:33:28 -08:00
Leonardo de Moura
f650a1b873
refactor(library/init/meta): avoid '_core' idiom using default parameters
...
I kept a few core methods (e.g., exact_core and apply_core). Reason:
if we use default parameters
meta constant exact (e : expr) (md := semireducible) : tactic unit
then, we will not be able to write
to_expr p >>= exact
The workaround is
do t <- to_expr p, exact t
or
to_expr p >>= (fun x, exact x)
One alternative is to change how we handle default parameters, and
eta-expand applications that involve default parameters.
We may also have an attribute [eta_expand]. Then
attribute [eta_expand] foo
instructs the elaborator to automatically eta-expand foo-applications.
The attribute would give users more control, and avoid potential
performance problems. Without the attribute, then for every function
application the elaborator has to check the type and decide whether it
must be eta-expanded or not.
@gebner @kha What do you think?
2017-02-14 09:46:55 -08:00
Leonardo de Moura
59c8a36f40
chore(library/init/meta/simp_tactic): remove unnecessary generality
2017-02-13 17:19:14 -08:00
Leonardo de Moura
c37634c815
feat(library/init): add helper functions and instances
2017-02-13 14:53:32 -08:00
Leonardo de Moura
80ac700e36
refactor(library/init): provide more general try_for, and implement tactic.try_for using it
2017-02-12 12:15:19 -08:00
Leonardo de Moura
7112f6d685
feat(library/tactic): add try_for tactic
2017-02-11 20:35:42 -08:00
Leonardo de Moura
73b1e927ff
chore(tests/lean): fix tests
2017-02-11 18:37:15 -08:00
Leonardo de Moura
41d3d42dee
feat(library/init/meta): add helper tactics
2017-02-11 18:30:38 -08:00
Leonardo de Moura
5ca18b8d2e
feat(library/init/meta): add helper functions
2017-02-11 16:52:06 -08:00
Leonardo de Moura
2f5159e7eb
feat(library/init/meta): add simple tactics for testing where a declaration was defined
2017-02-11 10:57:06 -08:00
Johannes Hölzl
9902a0d4d1
feat(src/library/tactic): apply_core returns list of all generated metavariables
2017-02-10 16:07:33 -08:00
Johannes Hölzl
bb136d63ab
feat(src/library/tactic): tactic.cases_core returns for each new goal the used constructor, a list of introduced hypotheses, and substitutions for dependent hypotheses
2017-02-10 16:07:33 -08:00
Johannes Hölzl
d7af5515d2
feat(src/library/tactic): tactic.induction_core returns for each new goal the list of introduced hypotheses and substitutions for dependent hypotheses
...
Also add to_obj(buffer<vm_obj>) to construct a vm-list of vm objects.
2017-02-10 16:07:33 -08:00
Leonardo de Moura
c0e6314f14
fix(library/init/meta,library/tactic/elaborate): bad error position when to_expr is used outside of interactive mode
2017-02-09 18:44:50 -08:00
Leonardo de Moura
c8bbb34e2a
feat(frontends/lean): add auto_param gadget
2017-02-09 15:49:10 -08:00
Leonardo de Moura
5e397795cf
fix(library/init/meta): focus tactic
...
This commit also add the interactive tactic 'focus'
2017-02-09 10:02:19 -08:00
Leonardo de Moura
3d603ec28e
feat(kernel,library,frontends/lean,api): remove global universe levels from kernel and APIs
2017-02-08 17:41:44 -08:00
Leonardo de Moura
32e6442d0a
feat(frontends/lean): no global universes in the frontend
2017-02-08 17:23:04 -08:00
Leonardo de Moura
c5dc8e651a
chore(library/init/meta): cleanup
2017-02-08 15:33:25 -08:00
Leonardo de Moura
54f7bf9391
fix(frontends/lean, library/tactic): remove redundant error messages, and fix position of error messages
...
Summary:
We minimize the number of "'sorry' used warning messages". We also
re-target the error to the main declaration. Example: foo._main ==> foo
We do not report for auxiliary declarations such as "_example" and
"foo.equations._eqn_1"
Get rid of the redundant error message "error : failed" for tactics.
We added "silent failures" in the tactic framework.
We do not store line/col information for tactics nested in notation
declarations. Before this commit, we would have tactics such
as (tactic.save_info line col) nested inside of notation declarations.
2017-02-07 20:25:28 -08:00
Leonardo de Moura
e06d6aa6d4
feat(frontends/lean/elaborator): relax condition on match-convoy
2017-02-07 16:11:43 -08:00
Leonardo de Moura
96ccb148b1
feat(library/init/meta/simp_tactic): add top_down simplifier combinator
2017-02-06 20:06:13 -08:00
Leonardo de Moura
a28d6a94fd
feat(library/init/meta): add any_goals tactic
2017-02-06 16:23:29 -08:00
Leonardo de Moura
ae06844f57
chore(library/init/meta): remove unnecessarily '| failed' annotations
...
tactic and smt_tactic are instaces of monad_fail
2017-02-05 20:12:42 -08:00
Leonardo de Moura
8b662d19ac
feat(library/init/category/monad_fail): add monad_fail type class
2017-02-05 18:46:29 -08:00
Leonardo de Moura
797b26f402
fix(frontends/lean/tactic_notation): trace messages in nested blocks were not being displayed in the correct place
2017-02-05 18:20:10 -08:00
Leonardo de Moura
30a1876fc8
feat(library/init/meta): add add_aux_decl and abstract tactics
2017-02-05 16:00:47 -08:00
Leonardo de Moura
1eb771f5a1
chore(library/init/meta/async_tactic): missing copyright
2017-02-05 14:47:43 -08:00
Gabriel Ebner
95068e4e79
feat(library/sorry): make sorry a macro
2017-02-05 14:01:03 +01:00