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