Gabriel Ebner
fa9c868ed2
chore(*): version 3.3.0
2017-09-14 18:53:38 +02: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
8d9c0ac806
fix(frontends/lean/tactic_notation): by tactic: accept non-atomic proof
2017-09-14 18:48:18 +02:00
Sebastian Ullrich
3c68f6fa00
fix(leanpkg): fix error message
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
2faad5114a
chore(frontends/lean): enforce and document applying attributes last
2017-09-14 18:48:18 +02:00
Sebastian Ullrich
aa3c707ab4
chore(init/meta/derive): document
2017-09-14 18:48:18 +02:00
Gabriel Ebner
341cf71fb9
fix(frontends/lean/structure_cmd): check parent expression after elaboration as well
2017-09-14 09:36:40 +02:00
Leonardo de Moura
6781681ae5
feat(frontends/lean/definition_cmds): when the kernel fails to type check a declaration include the fully elaborated term in the error message
2017-09-13 16:43:54 -07: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
Gabriel Ebner
9118079f7f
fix(library/module_mgr): error handling in cyclic imports
...
Fixes #1807
2017-09-12 17:22:47 +02: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
Sebastian Ullrich
f2c5342aaa
feat(init/meta/derive): handle parameters, parameter instances, universes
2017-09-11 16:56:03 -07:00
Sebastian Ullrich
7412512579
fix(frontends/lean/structure_cmd): apply attributes last
2017-09-11 16:56:02 -07:00
Sebastian Ullrich
230bf7e8d9
fix(frontends/lean/decl_cmds): constant/axiom cmds: apply attributes
2017-09-11 16:56:02 -07:00
Leonardo de Moura
d428eca8a7
fix(library/equations_compiler,frontends/lean): private name support and alias generation for auxialiary declarations
...
fixes #1804
Remark: now, all auxiliary definitions in a private declaration share
the same "private" prefix.
2017-09-11 16:46:56 -07:00
Sebastian Ullrich
d82df26ff0
fix(frontends/lean/elaborator): go back to ignoring implicit args in quote patterns
2017-09-11 09:33:38 -07:00
Sebastian Ullrich
f242d04d55
chore(emacs/lean-dev): lean-diff-test-file produced wrong paths
2017-09-10 09:53:23 +02:00
Sebastian Ullrich
869ac974b2
fix(init/meta/interactive): assume: use rbp 2
2017-09-10 09:53:07 +02:00
Sebastian Ullrich
0bf96e5752
fix(frontends/lean/elaborator): revert dubious workaround of mine
...
Synthesizing an expr placeholder in an elaborated term doesn't make much sense
2017-09-08 13:23:16 +02:00
Leonardo de Moura
1f757ba84e
fix(frontends/lean/pp): fixes #1817
2017-09-07 15:23:58 -07:00
Mario Carneiro
87f2ec08ad
feat(init/meta/interactive): suffices tactic
...
Just a simple manipulation of the `have` tactic, but it allows the use of `suffices h : T, from p,` in tactic mode.
2017-09-06 10:50:31 -07:00
Gabriel Ebner
19777cf9eb
fix(frontends/lean/definition_cmds): show trace messages in examples
2017-09-06 14:44:44 +02:00
Gabriel Ebner
5adb3630b2
chore(tests): update test output
2017-09-06 14:27:39 +02:00
Gabriel Ebner
5f8cf45073
feat(frontends/lean/elaborator): apply to-sort coercion also in arguments
2017-09-06 14:15:30 +02:00
Gabriel Ebner
7b18d5828d
feat(frontends/lean/elaborator): trigger coe_to_fun even when expected type has metavariables
...
We only need to know that the expected type is a Π to perform
to-function coercion. Related to #1402 .
Fixes https://github.com/gebner/hott3/issues/2
2017-09-06 11:20:04 +02:00
Gabriel Ebner
b59d2771ea
fix(doc/changes): describe fallout from parameterized user attributes
...
@kha This was an unexpected breakage resulting from #1809 .
2017-09-06 08:39:30 +02:00
Leonardo de Moura
88cd294a09
feat(src/kernel/error_msgs): show aliased variables when printing error messages
...
closes #1814
@kenmcmil: the error messages will now list aliased variables.
For example, in your file, the new error message is:
```
invalid type ascription, term has type
triple (ctxpre c' s_1 ∧ ctxpre c'_1 s_1) (bndngapp b s_1) (ctxpost c' s_1 ∧ ctxpost c'_1 s_1)
but is expected to have type
triple (ctxpre c' s_1 ∧ ctxpre c'_1 s_1) (bndngapp b s_1) (ctxpost c' s_1 ∧ ctxpost c'_1 s_1)
types contain aliased name(s): c'
remark: the tactic `dedup` can be used to rename aliases
state:
...
```
2017-09-05 16:46:44 -07:00
Leonardo de Moura
51bac2918f
chore(library/init/core): declare and using structure
...
This change was requested by several users.
2017-09-05 15:08:20 -07:00
Leonardo de Moura
3af8ca11bc
chore(tests/lean/run/1797): add test for #1797
2017-09-05 14:36:51 -07:00
Mario Carneiro
cc9de4af58
feat(init/meta/interactive): cases with equality
...
This is the equivalent of the `ginduction` tactic for cases, but rolled into the same syntax as `cases` itself. `cases h : term` is the syntax, and it will introduce a hypothesis `h : term = C a b...` demonstrating that the original term is equal to the current case.
I considered the possibility of calling `injection` on the generated equalities, but it's useless in the casaes when the equality carries some real information (such as `f x = C1 a`), and when the input term is a local constant, `injection` will do subst, which will undo the effect of the `cases`. If the input term is a constructor, then `injection` would do something interesting, but you would never want to call `cases` in this case because the constructor is already exposed.
2017-09-05 14:31:52 -07:00
Leonardo de Moura
8a10d4c72c
fix(library/init/meta/injection_tactic): fixes #1805
2017-09-05 14:20:22 -07:00
Sebastian Ullrich
0dc9d1b4ac
chore(doc/changes): update changelog
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
1544c3d390
feat(library/tactic/user_attribute,init/meta/attribute): user_attribute.set_param
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
399bb95065
chore(emacs/lean-dev): fix lean-diff-test-file
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
52a9f82bc2
feat(init/meta/derive): implement [derive] attribute
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
51aabb9b65
feat(frontends/lean/decl_attributes): allow user attributes on inductive types
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
ea6a4159a9
feat(library/tactic/user_attribute,init/meta/attribute): implement parameterized user attributes
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
9ed678d80a
feat(frontends/lean/elaborator): structure notation: synthesize instance-implicit fields
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
3188c4cbcf
refactor(library/tactic/user_attribute,init/meta/attribute): merge caching_user_attribute into user_attribute
...
The inheritance-based approach doesn't scale to a second subclass for parameterized attributes
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
3aa5ebb8bd
feat(frontends/lean/elaborator): structure notation: allow explicit ctor param when given expected type
2017-09-05 23:14:34 +02:00
Sebastian Ullrich
da785d96a0
fix(frontends/lean/elaborator): synthesize metavars in e before trying to synthesize reflected e
2017-09-05 23:14:34 +02:00
Leonardo de Moura
da46862b46
fix(library/init/meta/interactive): fixes #1813
2017-09-05 13:33:05 -07:00
Gabriel Ebner
f1ec117a24
doc(changes): option.{map,bind} renaming
2017-09-05 17:13:07 +02:00
Gabriel Ebner
40de4f14c1
feat(library/tactic/simp_lemmas): allow simplification with let-bindings in the local context
2017-09-05 10:24:02 +02:00
Mario Carneiro
f5253fd060
fix(init/data/option/instances): Use option.* instead of option_*
...
This enables use of projection notation. Note that the notations are not always available here since they require one universe instead of two.
2017-09-05 08:35:26 +02:00