Commit graph

875 commits

Author SHA1 Message Date
Leonardo de Moura
d44996e034 feat(library/init/meta): propagate tag information 2017-12-10 19:15:41 -08:00
Leonardo de Moura
e23db3970a feat(library/init/meta/tactic): apply tactic return parameter name associated with new metavars 2017-12-10 12:11:58 -08:00
Leonardo de Moura
41cfa1bf63 feat(library/init/meta/tactic): induction tactic returns constructor/param names 2017-12-10 09:46:39 -08:00
Leonardo de Moura
8577fe6984 fix(library/init/meta/interactive): induction ... generalizing ... bug 2017-12-10 08:57:25 -08:00
Leonardo de Moura
f288205cce feat(library/tactic): goal tagging 2017-12-09 16:29:03 -08:00
Leonardo de Moura
24d5a1592d fix(library/init): add simp lemmas for auto_param and opt_param 2017-12-09 09:59:00 -08:00
Leonardo de Moura
623ff2454b chore(library/init/meta/interactive): remove TODO
We now have `whnf_ginductive`
2017-12-08 11:47:20 -08:00
Leonardo de Moura
49e7a642c3 feat(library/init/meta/interactive): merge ginduction and induction
This commit is based on 638b34b16de6443.
The changes were applied manually to make sure all changes are
compatible with our plans to `induction`.
2017-12-07 19:10:10 -08:00
Leonardo de Moura
84db9e9e43 feat(library/init/meta/interactive): add constructor_matching tactic 2017-12-06 13:17:06 -08:00
Leonardo de Moura
c89e2457bb feat(library/init/meta/interactive): add cases_type tactic
see doc/changes.md
2017-12-06 12:55:10 -08:00
Leonardo de Moura
4f1f15a425 refactor(library/init/meta/match_tactic): cleanup match_tactic interface 2017-12-06 12:52:41 -08:00
Leonardo de Moura
a056e87350 fix(library/init/meta/injection_tactic): add support for ginductive datatypes 2017-12-06 09:39:20 -08:00
Leonardo de Moura
03eda2ecc0 feat(library/init/meta/interactive): add cases_matching p tactic 2017-12-05 18:17:44 -08:00
Leonardo de Moura
b06549bc05 feat(library/init/meta): add guard_names { t } tactical 2017-12-05 16:29:46 -08:00
Leonardo de Moura
0c5ecf6441 feat(library/init/meta/interactive): add iterate n { t } 2017-12-05 12:52:18 -08:00
Leonardo de Moura
6f943d77a2 feat(library/init/meta/interactive): add match_target pat interactive tactic 2017-12-05 12:25:17 -08:00
Leonardo de Moura
b1e8270172 chore(library/init/meta/match_tactic): fix typo 2017-12-05 12:11:04 -08:00
Leonardo de Moura
b5358b1b3e chore(library/init/meta/interactive): add comment to avoid confusion 2017-12-05 12:07:17 -08:00
Leonardo de Moura
c943576e5a feat(library/init): add funext tactic 2017-12-04 14:54:39 -08:00
Leonardo de Moura
53c9737c70 feat(library/init): new repeat tactic 2017-12-04 12:55:53 -08:00
Leonardo de Moura
75aa94b34c refactor(library): rename repeat ==> iterate
Reason: we will implement a new `repeat` tactic.
2017-12-04 12:34:59 -08:00
Leonardo de Moura
7b97e82fb3 chore(library): remove unnecessary repeat applications 2017-12-04 12:16:11 -08:00
Leonardo de Moura
d4e0dde063 chore(library/init/meta/relation_tactics): simplify subst_vars 2017-12-04 12:00:54 -08:00
Leonardo de Moura
47994fe14e chore(library): remove id_locked 2017-11-22 16:29:04 -08:00
Leonardo de Moura
cdb724b092 feat(library/init/meta/interactive): add shorthand for any_goals { assumption } 2017-11-21 13:02:57 -08:00
Leonardo de Moura
5f99056c1a feat(library/init/meta): basic support for ignoring auto and opt params 2017-11-21 11:52:40 -08:00
Leonardo de Moura
52d6adc19c chore(library): use new structure update notation in the core lib 2017-11-17 16:57:54 -08:00
Sebastian Ullrich
0aacccd8c9 feat(frontends/lean): change structure update notation
`{s with ...}` is now `{..., ..s}`, which more clearly expresses that the
result type is not necessarily equal to the type of `s` (in absence of an
expected type and a structure name, we still default to the type of `s`).

Multiple fallback sources can be given: `{..., ..s, ..t}` will fall back to
searching a field in `s`, then in `t`. The last component can also be `..`,
which will replace any missing fields with a placeholder.

The old notation will be removed in the future.
2017-11-17 16:40:47 -08:00
Leonardo de Moura
3f6d0979ae feat(library/init/meta/tactic): add any_hyp tactic 2017-11-16 14:28:00 -08:00
Leonardo de Moura
b9b3b43471 chore(library/init/meta/expr): helper predicates 2017-11-16 11:03:10 -08:00
Leonardo de Moura
394e0d5f0a refactor(library/init): remove has_cmp and is_ordering type classes
Now, `cmp` is just a fixed helper function.
In the future, we will be able to use (more efficient) specialized
versions during code generation by defining simp rules.
2017-11-14 08:33:24 -08:00
Leonardo de Moura
c4605b3b96 refactor(library/init): rename has_ordering => has_cmp 2017-11-13 14:47:14 -08:00
Leonardo de Moura
31461b6fc7 feat(library/init): add ordering unbundled type classes, add has_strict_weak_ordering for cmp
This commit also shows that nat.cmp is an instance of has_strict_weak_ordering.
2017-11-10 16:45:54 -08:00
Leonardo de Moura
b40f3af801 feat(library/init/meta): move rb_tree and rb_map to native namespace
cc @kha
2017-11-07 13:41:45 -08:00
Floris van Doorn
52ee29cb48 fix(interactive): fix focus tactic.
Previously it would fail if there was more than one goal.
2017-11-03 12:58:48 -07:00
Leonardo de Moura
14301a7f9f feat(library/equations_compiler/compiler): generate meta auxiliary definitions for regular (recursive) definitions
Motivations:

- Clear execution cost semantics for recursive functions.

- Auxiliary meta definition may assist recursive definition unfolding in the type_context object.

Next step: use meta auxiliary definition at code generation.
2017-11-01 11:58:45 -07:00
Leonardo de Moura
10184315fb feat(library/vm/vm_string): add builtin VM implementation for string.has_decidable_eq 2017-10-23 10:55:26 -07:00
Leonardo de Moura
28501a0e0e feat(library/init/data/string): string as a list of unicode scalar values, and iterator abstraction
TODO:
- Implement string primitives in the VM.
- Support for unicode char literals.
2017-10-23 10:55:26 -07:00
Sebastian Ullrich
87e1a88d01 feat(init/meta/pexpr): allow creating structure instance pre-terms 2017-10-11 16:13:34 +02:00
Jeremy Avigad
bcad5309d9 fix(library/init/meta/interactive): implement docstring fixes from kha 2017-09-22 16:53:22 -04:00
Jeremy Avigad
41b94ed3a2 refactor/feat(library/init/meta/interactive): revise and add docstrings 2017-09-21 21:15:41 -04:00
Sebastian Ullrich
7ff06b2184 chore(init/meta/attribute): rename user_attribute.set_param to user_attribute.set
Setting the parameter value really is a side effect of setting the whole attribute
2017-09-14 18:48:18 +02:00
Sebastian Ullrich
928e982565 chore(init/meta/mk_has_reflect_instance): disallow indexed families for now
We need to adapt the recursion code to pass `reflected` instances for indices
2017-09-14 18:48:18 +02:00
Sebastian Ullrich
6549643d39 chore(init/meta/derive): remove inhabited derive handler for now
The generated instances were unnecessarily restrictive
2017-09-14 18:48:18 +02:00
Sebastian Ullrich
87b39bd1c3 fix(init/meta/derive): handle indexed families 2017-09-14 18:48:18 +02:00
Sebastian Ullrich
aa3c707ab4 chore(init/meta/derive): document 2017-09-14 18:48:18 +02:00
Leonardo de Moura
dbe1033427 fix(library/init/meta/mk_has_sizeof_instance): indexed families
see #1818
2017-09-12 15:17:34 -07:00
Sebastian Ullrich
5410178203 chore(init/meta/mk_has_reflect_instance): document 2017-09-11 16:56:03 -07:00
Sebastian Ullrich
4d1c4aee03 feat(init/meta/mk_has_reflect_instance): add derive_handler for has_reflect 2017-09-11 16:56:03 -07:00
Sebastian Ullrich
e18a14d6e0 fix(init/meta/expr): reflected.subst should always return an expr of the correct type 2017-09-11 16:56:03 -07:00