Commit graph

5934 commits

Author SHA1 Message Date
Leonardo de Moura
7e8a7e6660 feat: elaborate fun/forall binder extensions 2020-11-09 19:00:40 -08:00
Leonardo de Moura
defa45ae2f feat: improve error message
when match-expression LHSs still contain metavariables after elaboration
2020-11-09 18:26:14 -08:00
Leonardo de Moura
82d6dd2eb6 feat: improve Structural.lean 2020-11-09 13:23:25 -08:00
Leonardo de Moura
425f45a623 chore: fix test 2020-11-09 06:43:52 -08:00
Leonardo de Moura
ded043bd53 test: old Lean3 begin ... end as a macro
@Kha I am adding a few examples to use in the manual.
This one is a bit ugly due to two issues

1- We can't easily copy the position information from one token to
another. You suggested a notation in the past, but we never
implemented it. In the new example, we must copy the `end` position to
`}` to get the "unsolved goals" error message at the `end` token.

2- The quotation `` `(by { $ts* }) `` doesn't do what we want.
The issue is that we are using `group` instead of `nodeWithAntiquot`
to define `tacticSeqBracketed`. I will have to go over all parsers we
have defined, and check how many other places have this problem.
2020-11-08 11:53:13 -08:00
Leonardo de Moura
ef3f8c8723 feat: add funext tactic macro 2020-11-08 07:30:24 -08:00
Leonardo de Moura
6c6595cd9b feat: only allow variables declared with mut to be reassigned 2020-11-07 17:32:13 -08:00
Leonardo de Moura
1c558d279f feat: add mut modifier to doLet 2020-11-07 17:32:13 -08:00
Leonardo de Moura
1e30d0831d feat: allow recursive application in the discriminant of a nested match 2020-11-07 17:32:12 -08:00
Leonardo de Moura
81d6e065e7 chore: adjust files and tests 2020-11-07 17:32:12 -08:00
Sebastian Ullrich
c1d75e21ea fix: fix pretty printers for imported ParserDescrs
... by interpreting them (imported or not) on the fly instead of storing them in the environment

/cc @leodemoura
2020-11-07 17:05:07 +01:00
Leonardo de Moura
4583f4344a fix: SyntaxNodeKind at elab and macro commands 2020-11-05 17:20:41 -08:00
Leonardo de Moura
a37e24af4a test: _root_
cc @Kha
2020-11-05 15:39:22 -08:00
Leonardo de Moura
2ea9d894e7 fix: SyntaxNodeKind for syntax declarations nested in namespaces
cc @Kha
2020-11-05 15:31:50 -08:00
Leonardo de Moura
bf4d48f348 chore: cleanup for presentation 2020-11-05 12:43:02 -08:00
Leonardo de Moura
29730157ff feat: support for _ and ?hole at all induction/cases variants
This commit also improves error position.
2020-11-03 17:20:53 -08:00
Leonardo de Moura
fa7fd4687c feat: induction with multiple targets 2020-11-03 17:20:53 -08:00
Leonardo de Moura
2001e1708f feat: add support for cases h_1:e_1, ..., h_n:e_n using elim 2020-11-03 17:20:53 -08:00
Leonardo de Moura
2226ec6426 chore: disable test until we implement "smart unfolding" 2020-11-03 17:20:53 -08:00
Leonardo de Moura
7cbee83a8a feat: add try tactic 2020-11-03 17:20:52 -08:00
Leonardo de Moura
aafa09ddcd chore: fix test 2020-11-03 17:20:52 -08:00
Leonardo de Moura
317b3fbc92 test: cases ... using ... 2020-11-03 17:20:52 -08:00
Leonardo de Moura
b9a2885e65 feat: add repeat tactic 2020-11-03 17:20:52 -08:00
Leonardo de Moura
ffc792ee02 test: dep-elim cases 2020-11-03 17:20:52 -08:00
Leonardo de Moura
5ef7fd08ab test: cases ... using ... test 2020-11-03 17:20:52 -08:00
Sebastian Ullrich
f56d81de32 chore: revert "chore: avoid .."
This reverts commit 60c0e7b3d4.
2020-11-03 15:12:23 +01:00
Sebastian Ullrich
e6b15ff6b4 feat: delaborator: apply pp options from Expr.mdata nodes
/cc @leodemoura
2020-11-03 12:36:33 +01:00
Leonardo de Moura
425cbac0dc chore: fix tests 2020-11-02 19:33:08 -08:00
Leonardo de Moura
5854b5b9fe feat: disallow alternatives of the form | _ ids => ...
@Kha We are still accepting wildcard alternatives of the form
     `| _ => ...`
It is useful when we can discharge many alternatives using the same
tactic, and it looks like the wildcard alternative used in "match"-expressions.
2020-11-02 19:23:30 -08:00
Leonardo de Moura
f64bd9e1e3 chore: remove unnecessary with at induction/cases tactics 2020-11-02 13:30:54 -08:00
Leonardo de Moura
dfc346e76f chore: remove obsolete attribute 2020-11-02 06:47:20 -08:00
Leonardo de Moura
2367d4d122 chore: fix test 2020-11-01 09:38:39 -08:00
Leonardo de Moura
de8f8f0e28 feat: improve local context reduction approximation 2020-10-31 19:19:18 -07:00
Leonardo de Moura
f9194737f0 chore: fix tests 2020-10-31 19:19:18 -07:00
Leonardo de Moura
dd3501a4a7 chore: move test 2020-10-31 19:19:18 -07:00
Leonardo de Moura
87bf97bdc1 feat: expand term try, for, unless, and return 2020-10-31 19:19:17 -07:00
Leonardo de Moura
77b160a5a8 chore: use mkFreshUserName at generalizeTelescope 2020-10-31 19:19:17 -07:00
Leonardo de Moura
3101b83f98 fix: missing do 2020-10-30 18:15:37 -07:00
Leonardo de Moura
f856849f8f test: tactic framework 2020-10-30 18:01:20 -07:00
Leonardo de Moura
060535679f test: let rec in tactic mode
@Kha: I added support for using `let rec` in tactic mode.
2020-10-30 14:58:17 -07:00
Leonardo de Moura
0af30273c5 feat: hide auxiliary metavariables used to compile let-rec 2020-10-30 14:58:17 -07:00
Leonardo de Moura
0a56057db1 feat: better error message for "unknown" tactic
@Kha The hack I posted at Zulip didn't really work
```
macro x:ident : tactic => throw $ Lean.Macro.Exception.error x s!"unknown tactic '{x.getId}'"
```

For example, we would still get a weird error message at
```
theorem ex3 (x : Nat) : x = x → x = x :=
  have x = x by foo (aaa bbb) -- The error would be at `bbb`
  fun h => h
```
There were other minor issues that could be fixed, but this one was bad.
2020-10-30 14:58:17 -07:00
Sebastian Ullrich
0731d3f080 fix: double indentation inside parentheses
Ideally we would skip the indentation after any leading token without trailing
whitespace, but it's not quite clear how to do that in general
2020-10-30 19:10:08 +01:00
Sebastian Ullrich
bc8cb5edda feat: pretty printer: adapt new indentation style 2020-10-30 19:08:39 +01:00
Leonardo de Moura
486d8457fa test: tactic framework 2020-10-29 20:42:34 -07:00
Leonardo de Moura
84de2e4a5b test: add injection notation test 2020-10-29 20:41:33 -07:00
Leonardo de Moura
672436bc5f feat: allow user to assign parsing priorities in the macro and elab commands 2020-10-29 20:33:51 -07:00
Leonardo de Moura
2a5b18fde4 test: add nondet example 2020-10-29 16:33:40 -07:00
Leonardo de Moura
278883a5d6 feat: improve tryLiftAndCoe 2020-10-29 12:46:04 -07:00
Sebastian Ullrich
0c97f648a8 chore: use stage 2 for benchmarking
/cc @leodemoura
2020-10-29 12:29:52 +01:00