Commit graph

874 commits

Author SHA1 Message Date
Leonardo de Moura
3d6cc2de08 feat: add notFollowedByCategoryToken parser 2020-09-26 15:53:23 -07:00
Leonardo de Moura
3f4499be08 feat: allow trailing ; at doSeqBracketed 2020-09-26 14:20:47 -07:00
Leonardo de Moura
e31fd665f0 feat: add checkLineLe parser 2020-09-26 14:03:28 -07:00
Leonardo de Moura
17e97baf8d chore: remove workaround 2020-09-26 13:39:55 -07:00
Leonardo de Moura
13ded3f964 chore: use doElem category 2020-09-26 12:51:24 -07:00
Leonardo de Moura
a1579f3123 fix: notFollowedBy info 2020-09-26 12:33:11 -07:00
Leonardo de Moura
7d91ddafeb feat: expose getPatternVars 2020-09-26 12:33:11 -07:00
Leonardo de Moura
1320848037 chore: rename file 2020-09-26 12:33:11 -07:00
Leonardo de Moura
2d8506b7c6 feat: add doElem parser category 2020-09-26 06:18:44 -07:00
Leonardo de Moura
27be7e6812 fix: leaking isDefEqStuckExceptionId 2020-09-25 18:48:23 -07:00
Leonardo de Moura
8e159f004c fix: missing synthesizeSyntheticMVarsNoPostponing at elabMatch 2020-09-25 18:48:23 -07:00
Leonardo de Moura
78adaf3e94 fix: "let rec" attributes were not being processed 2020-09-25 18:48:23 -07:00
Leonardo de Moura
049ff2b022 fix: bad message 2020-09-25 18:48:23 -07:00
Sebastian Ullrich
eae32b08a6 fix: pretty printing multiple universe levels
Fixes #190
2020-09-25 20:06:18 +02:00
Leonardo de Moura
240680db1a feat: add binductionOn support 2020-09-25 07:18:14 -07:00
Leonardo de Moura
1775d9b04b fix: visit types
See new test `tests/lean/run/def14.lean`
2020-09-25 06:48:51 -07:00
Leonardo de Moura
44129ce461 refactor: move withoutModifyingEnv to MonadEnv 2020-09-25 06:48:51 -07:00
Leonardo de Moura
0e16bd60dc fix: missing case 2020-09-25 06:48:51 -07:00
Sebastian Ullrich
402d4437c0 chore: fix interactive use of stage 0 2020-09-25 11:22:06 +02:00
Leonardo de Moura
e4f492d68a feat: add support for reflexive inductive datatypes 2020-09-24 20:30:12 -07:00
Leonardo de Moura
66d35cdd76 fix: the generated matcher must be able to eliminate into different universe levels 2020-09-24 19:34:14 -07:00
Leonardo de Moura
98f7e9b3e4 chore: naming convention 2020-09-24 19:22:24 -07:00
Leonardo de Moura
53acb2b56f chore: naming convention 2020-09-24 17:50:17 -07:00
Leonardo de Moura
3256a24813 fix: bug at toBelow 2020-09-24 17:38:51 -07:00
Leonardo de Moura
7edc52682b fix: processNonVariable 2020-09-24 17:16:50 -07:00
Sebastian Ullrich
c54d51b0c9 chore: go back to previous bootstrapping scheme where the stage N+1 stdlib is created using the stage N compiler 2020-09-24 18:57:53 +02:00
Leonardo de Moura
6a51ec8427 fix: missing case (kernel projection) at isExprDefEqAuxImpl 2020-09-23 18:24:56 -07:00
Leonardo de Moura
a5ee729554 chore: cleanup ExprDefEq a bit 2020-09-23 18:24:56 -07:00
Leonardo de Moura
6ac2f50d94 fix: Expr.proj case at whnfCoreImp 2020-09-23 18:24:56 -07:00
Leonardo de Moura
3c24366b41 feat: basic toBelow 2020-09-23 18:24:56 -07:00
Leonardo de Moura
0174004b1c feat: improver error message generation for termination checking 2020-09-23 18:24:56 -07:00
Leonardo de Moura
bd01093388 feat: add Meta.forEachExpr 2020-09-23 18:24:56 -07:00
Leonardo de Moura
44eee0c3a4 feat: improve replaceRecApps 2020-09-23 18:24:56 -07:00
Sebastian Ullrich
fa55c1e088 fix: pretty printing loose bvars
Fixes #192
2020-09-23 11:13:23 +02:00
Leonardo de Moura
8135d37ddb feat: add MatcherApp.addArg
Helper method for adding a new (dependent) argument to a (dependent) matcher.
2020-09-22 18:56:02 -07:00
Leonardo de Moura
3586337c56 perf: handle easy case efficiently 2020-09-22 18:55:13 -07:00
Leonardo de Moura
661548a2fe refactor: move mkArrow to MetaM 2020-09-22 18:55:02 -07:00
Leonardo de Moura
1256fc3cbc refactor: move MatcherInfo methods to Meta namespace 2020-09-22 16:59:21 -07:00
Leonardo de Moura
8a920f7aeb feat: replaceRecApps find matcher 2020-09-22 16:55:15 -07:00
Leonardo de Moura
a397b3d2ae feat: add matchMatcherApp? 2020-09-22 16:54:54 -07:00
Leonardo de Moura
41e6447837 refactor: use MetaM and exceptions 2020-09-22 16:05:28 -07:00
Leonardo de Moura
25bcc95b13 feat: construct brecOn application
TODO: replace recursive application with `below` argument
2020-09-22 14:39:22 -07:00
Leonardo de Moura
0511b73d80 feat: add replaceFVars 2020-09-22 14:24:03 -07:00
Leonardo de Moura
bbc1f4d461 fix: throwAppTypeMismatch should be polymorphic
We use it from `TermElabM` and `MetaM`, and they have different
`TermElabM` implementations.
2020-09-22 09:35:59 -07:00
Leonardo de Moura
05e5d934d3 feat: change default precedence for new syntax
Now, the following example produces a syntax error.
```lean
macro "foo!" x:term : term => `($x + 1)

check id foo! 10
```

@Kha, I think the heuristic is simple and defensible.
If the new syntax starts and ends with token, than the precedence is
`maxPrec`. Otherwise, it is `leadPrec`.

see #180
2020-09-21 19:04:03 -07:00
Leonardo de Moura
dc9626ceab feat: try to improve weird error message
@Kha Before this commit, we were producing the error "expected command" at the `let` token
```lean
check id let x := 1; x
```
The new error is "expected command, but found term; this error may be
due to parsing precedence levels, consider parenthesizing the term".

The example above looks artificial, but it will happen all the time as
users start to define their own notation.
2020-09-21 18:29:01 -07:00
Leonardo de Moura
f4b5ec710f fix: fixes #175 2020-09-21 17:12:07 -07:00
Leonardo de Moura
b0564a32b9 feat: add AttrM
We are going to use `AttrM` to implement solution 2 described at https://github.com/leanprover/lean4/issues/175
2020-09-21 16:44:20 -07:00
Leonardo de Moura
cab56d1e1b chore: do not invoke the hooks from addImported
@Kha I am working on issue
https://github.com/leanprover/lean4/issues/175

I am using solution 2 described there. The hooks will be at `AttrM`
instead of `CoreM`.

AFAICT code deleted by this commit is not necessary.
2020-09-21 16:28:07 -07:00
Leonardo de Moura
151e877513 refactor: seal EnvExtension type
The motivation is to prevent users from tinkering with its internal
implementation details that rely on unsafe features.
The new test crashed before this commit.
2020-09-21 12:24:44 -07:00