Commit graph

2187 commits

Author SHA1 Message Date
Leonardo de Moura
1602a53336 feat(frontends/lean): nary match 2016-08-08 10:04:58 -07:00
Leonardo de Moura
1e6b3614ab feat(frontends/lean): new pattern matching validation
@Kha, we now support variable/constant shadowing in patterns.
A constant may occur in a pattern if it is a constructor or tagged with
the new [pattern] attribute. In the standard library, I have tagged
'add', 'zero', 'one', 'bit0', 'bit1' and 'rfl' with this new attribute.
BTW, arbitrary constants and variables may occur nested in type ascriptions and
inaccessible terms.

Here is an example:

     meta_definition tactic_result_to_string {A : Type} : tactic_result A → string
     | (success a s)   := to_string a
     | (exception ⌞A⌟ e s) := "Exception: " ++ to_string (e ())

I had to use the inaccessible ⌞A⌟ in the example above, otherwise, we would be shadowing the parameter
{A : Type}, and we would get a type error.

The new validation is performed at to_pattern_fn (parser.cpp).
2016-08-07 11:31:11 -07:00
Leonardo de Moura
5a38e15c2e test(tests/lean/run/match_expr2): match example with abstract structures 2016-08-06 14:18:08 -07:00
Leonardo de Moura
e52cffd04d feat(library/init/meta/match_tactic): add helper tactics on top of match tactic 2016-08-06 14:13:41 -07:00
Leonardo de Moura
1041f6d9d8 feat(frontends/lean/structure_cmd): private structures 2016-08-06 00:03:06 -07:00
Leonardo de Moura
46570bd51d fix(frontends/lean/structure_cmd): bug when generating alias for S.induction_on in the structure command 2016-08-05 23:13:39 -07:00
Leonardo de Moura
61554f920e test(tests/lean/run/assoc1): mul.assoc example 2016-08-05 18:35:13 -07:00
Leonardo de Moura
b6420904f5 feat(frontends/lean): resolved quoted names 2016-08-05 17:04:36 -07:00
Leonardo de Moura
7bb6ccc089 refactor(library/init/meta): qexpr ==> pexpr 2016-08-05 17:04:36 -07:00
Leonardo de Moura
ef28ae5073 feat(library/vm/vm_format,library/tactic): use thunks unit->format when producing error messages 2016-08-04 19:19:09 -07:00
Leonardo de Moura
f9b90913a8 chore(tests/lean): fix tests 2016-08-04 19:17:08 -07:00
Leonardo de Moura
befe2d96e1 feat(frontends/lean/elaborator): chaining for anonymous constructors 2016-08-04 15:08:25 -07:00
Leonardo de Moura
8b05fba6ef feat(frontends/lean/elaborator): propagate expected type to arguments when elaborating constructors 2016-08-04 14:07:15 -07:00
Leonardo de Moura
6a0d9dab40 feat(frontends/lean/elaborator): anonymous constructors 2016-08-04 13:03:49 -07:00
Leonardo de Moura
22612cff8c chore(library): disable sigma.mk notation 2016-08-04 10:44:48 -07:00
Leonardo de Moura
52b66a1573 chore(frontends/lean/pp, library/pp_options): pp.lazy_abstraction ==> pp.delayed_abstraction 2016-08-03 18:45:47 -07:00
Daniel Selsam
70a1e53ba8 feat(simplifier/simp_lemmas): take arbitrary list of attributes and cache 2016-08-03 18:04:28 -07:00
Leonardo de Moura
594c7ca4c5 chore(frontends/lean/find_cmd): remove find_decl command 2016-08-03 17:32:47 -07:00
Leonardo de Moura
f4e1e92807 feat(frontends/lean/decl_cmds): use new elaborator for variable, parameter and constant commands 2016-08-03 17:10:45 -07:00
Leonardo de Moura
d473622352 refactor(frontends/lean/structure_cmd): remove unnecessary options 2016-08-03 15:48:58 -07:00
Leonardo de Moura
bf730d992c chore(tests/lean): fix test output 2016-08-03 14:17:29 -07:00
Leonardo de Moura
2c8e484aa3 feat(frontends/lean/elaborator): universe parameter name sanitizer 2016-08-03 13:13:44 -07:00
Leonardo de Moura
4e80094927 feat(frontends/lean/inductive_cmd): use new elaborator in the inductive command 2016-08-03 13:13:12 -07:00
Leonardo de Moura
bae10d7530 feat(library/type_context): restrict context of metavariables during unification if approximate() is true 2016-08-02 16:31:12 -07:00
Leonardo de Moura
8993d0738a feat(frontends/lean): remove #elab command
The check command is now using the new elaborator.
2016-08-02 15:05:24 -07:00
Leonardo de Moura
dc44edfd41 feat(frontends/lean): use new elaborator in the 'check' command 2016-08-02 14:57:49 -07:00
Leonardo de Moura
0b1f0de7d2 chore(tests/lean/inst_error.lean.expected.out): fix output 2016-08-02 13:55:08 -07:00
Leonardo de Moura
babc8906b3 fix(library/metavar_util): but in instantiate_mvars 2016-08-02 13:16:17 -07:00
Leonardo de Moura
860d333b5e fix(src/library/type_context): unifier first-order approximation 2016-08-02 09:51:18 -07:00
Leonardo de Moura
90f5dabf28 fix(frontends/lean/elaborator): order type class instances are synthesized 2016-08-01 23:59:22 -07:00
Leonardo de Moura
a1854df9fa test(tests/lean/run/elab_crash1): add new test 2016-08-01 17:26:47 -07:00
Leonardo de Moura
d46e9b411c fix(frontends/lean/elaborator): spurious universe parameters being generated 2016-08-01 08:10:15 -07:00
Leonardo de Moura
5b33c0384d test(tests/lean/run/qexpr1): add test for nested quotes 2016-08-01 07:42:06 -07:00
Leonardo de Moura
c1793cd620 feat(library/init/meta/tactic): add 'refine' tactic 2016-07-31 21:17:19 -07:00
Leonardo de Moura
fefa5ad3b8 fix(library/tactic/elaborate): new subgoals must be inserted after main goal 2016-07-31 21:16:29 -07:00
Leonardo de Moura
6d0fa806d8 feat(library/tactic/elaborate): convert unassigned metavars into new goals 2016-07-31 20:38:57 -07:00
Leonardo de Moura
12fa52c77d feat(library/tactic, frontends/lean/elaborator): add to_expr tactic 2016-07-31 20:21:17 -07:00
Leonardo de Moura
68ad696777 chore(frontends/lean/nested_declaration): do not allow attributes in abstract ... end blocks 2016-07-31 19:14:33 -07:00
Leonardo de Moura
da98191256 chore(tests/lean/run): preparing tests for new elaborator 2016-07-31 17:45:43 -07:00
Leonardo de Moura
e5298c9d8f feat(frontends/lean/elaborator): modify the pre-term for overloaded notation
The new encoding is better for the new elaborator.
2016-07-31 17:14:01 -07:00
Leonardo de Moura
9fc222b9af chore(library/pp_options): remove option pp.metavar_args 2016-07-31 16:00:21 -07:00
Leonardo de Moura
138d1bb146 fix(library/type_context): missing case 2016-07-31 15:16:52 -07:00
Leonardo de Moura
877bfe0250 fix(frontends/lean/pp): pp_meta bug 2016-07-31 14:54:37 -07:00
Leonardo de Moura
f461b53a7f refactor(library): remove eq.ops namespace 2016-07-31 12:50:11 -07:00
Leonardo de Moura
1aeda0e74b feat(frontends/lean/elaborator): invoke tactics 2016-07-31 11:56:52 -07:00
Leonardo de Moura
e28e4fc896 feat(frontends/lean/elaborator): convert unassigned universe levels into universe parameters, basic support for by tactic 2016-07-31 03:45:18 -07:00
Leonardo de Moura
c46403265b feat(library/local_context): add instance_mvars method for local_context object 2016-07-31 02:36:51 -07:00
Leonardo de Moura
f72f9dd561 fix(frontends/lean/pp): purify metavar_decl_ref's
The tests become too fragile if we don't purify them.
2016-07-30 20:30:03 -07:00
Leonardo de Moura
fafea473b8 feat(frontends/lean/elaborator): coercions to sort 2016-07-30 19:47:04 -07:00
Leonardo de Moura
b4fefd8c0b feat(frontends/lean/elaborator): coercions to functions 2016-07-30 18:54:20 -07:00