Leonardo de Moura
e0d57aa8a3
chore(library/tactic): add missing lean_vm_check's
2017-02-15 15:40:35 -08:00
Leonardo de Moura
c5287237ee
fix(library/vm): race condition in the profiler initialization code
2017-02-15 15:35:41 -08:00
Gabriel Ebner
cbebedb53b
feat(library/vm/vm): improve vm check error message
2017-02-15 13:39:10 -08:00
Gabriel Ebner
93d00534e0
fix(library/vm): enable bounds checks
2017-02-15 13:39:00 -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
Gabriel Ebner
092f7890a8
chore(shell/server): disable cpplint
2017-02-15 13:33:02 -08:00
Gabriel Ebner
f4b276ca4b
fix(shell/server): sleep command: do not respond with "unknown command"
2017-02-15 13:33:02 -08:00
Gabriel Ebner
f72816e0f2
feat(shell/server): cancel all tasks on server exit
2017-02-15 13:33:02 -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
5f9c53f1a0
feat(library/tactic/user_attribute): use Sebastian's trick to avoid unnecessary cache failures
2017-02-14 15:13:53 -08:00
Leonardo de Moura
5d9de2aef7
fix(library/tactic/user_attribute): incorrect tactic_state being returned
2017-02-14 13:58:54 -08:00
Leonardo de Moura
304b5b6a20
fix(library/tactic/generalize_tactic): we must check whether the abstracted type is type correct or not
2017-02-14 13:41:49 -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
8a34680916
fix(frontends/lean/elaborator): name resolution at tactic execution times with overloaded notation and aliased symbols
...
See https://groups.google.com/forum/#!topic/lean-user/Jja_lh28v3g
2017-02-13 21:06:49 -08:00
Leonardo de Moura
e551b4ff09
fix(src/util/timer): uninit var
2017-02-13 18:15:01 -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
4d765fa25b
fix(library/vm): profiler was not including builtin functions
2017-02-13 16:12:25 -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
702347784a
chore(library/norm_num): remove more code duplication
2017-02-12 20:57:46 -08:00
Leonardo de Moura
86e671798a
refactor(library/norm_num): delete num_of_expr dead code, move arithmetic evaluator to arith_instance
2017-02-12 20:47:01 -08:00
Leonardo de Moura
1888908483
refactor(library/norm_num): cleanup code, avoid duplication, optimize
2017-02-12 20:13:59 -08:00
Leonardo de Moura
32d3cf610c
refactor(library/arith_instance): add mk_num
2017-02-12 19:44:02 -08:00
Leonardo de Moura
1a698d9065
refactor(library/arith_instance_manager): rename to arith_instance, avoid copy&paste, and add support for norm_num
2017-02-12 19:11:58 -08:00
Rob Lewis
6560b8ae19
feat(norm_num): remove redundant instance caching
2017-02-12 17:15:08 -08:00
Rob Lewis
d6ec20304f
fix(norm_num): handle embedded nat subtraction
2017-02-12 17:15:08 -08:00
Rob Lewis
9fd8101b36
fix(norm_num): style
2017-02-12 17:15:08 -08:00
Rob Lewis
46a46c9ee0
feat(norm_num): handle nat subtraction as a special case
2017-02-12 17:15:08 -08:00
Leonardo de Moura
ae0577d26e
chore(tests/lean): fix tests
2017-02-12 16:50:42 -08:00
Leonardo de Moura
002ffc81bb
fix(tests/shared/univ): memory access violation
2017-02-12 16:29:13 -08:00
Leonardo de Moura
1306e56381
feat(library/vm): check heartbeat in function calls
2017-02-12 12:29: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
e517316405
chore(tests/lean/try_for_heap): missing test output
2017-02-12 11:58:13 -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
Gabriel Ebner
2d31007625
fix(emacs): update flycheck messages for tasks
2017-02-11 10:50:11 -08:00
Leonardo de Moura
4fdd512636
fix(tests/shared/univ): bus error on OSX
2017-02-11 09:27:46 -08:00
Leonardo de Moura
9210e45da0
feat(frontends/lean): add notation for ';' and '<|>' in the tactic interactive mode
2017-02-10 22:53:30 -08:00
Leonardo de Moura
8bd5a51db4
test(tests/lean/run/quote_base): add example from Bas' paper
2017-02-10 18:34:53 -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
c35108cf0d
fix(library/tactic): fixes #1369
...
- `eval_expr` instantiate assigned metavariables occuring in the input
expression.
- Rename pp.instantiate_goal_mvars to pp.instantiate_mvars
- `format_expr` also instantiates assigned metavariables before pretty printing
when pp.instantiate_mvars is set to true.
2017-02-10 15:58:27 -08:00