Leonardo de Moura
0b92195ec8
feat: refine auto bound implicit feature
2022-04-21 10:17:15 -07:00
Leonardo de Moura
ea682830d1
refactor: change addTermInfo type
2022-04-08 15:01:57 -07:00
Leonardo de Moura
de2e2447d2
chore: style
2022-04-07 17:35:05 -07:00
Leonardo de Moura
dcb88d969a
feat: improve auto implicit binder names in definitions/theorems
2022-04-07 14:46:59 -07:00
Leonardo de Moura
1107705525
fix: jump to definition inside recursive definitions was not working on VS Code
...
Remark: it was working on Emacs.
2022-04-06 14:27:49 -07:00
Leonardo de Moura
574927ab0d
fix: jump to definition for recursive declarations
2022-04-06 13:01:16 -07:00
Leonardo de Moura
6631d92d7b
fix: addAutoBoundImplicitsOld occurrences at MutualDef.lean and Structure.lean
...
This commit also fixes non-termination at `collectUnassignedMVars`
2022-03-25 09:07:59 -07:00
Leonardo de Moura
519b780164
doc: document InfoTree issue
2022-03-25 07:12:07 -07:00
Leonardo de Moura
5825eb394f
refactor: move isOutParam to Expr.lean, rename consumeAutoOptParam => consumeTypeAnnotations
2022-03-10 07:37:41 -08:00
Leonardo de Moura
3f9c854194
feat: auto local implicit chaining
2022-03-05 17:30:15 -08:00
Leonardo de Moura
f7130d8e07
refactor: use CPS at addAutoBoundImplicits
...
We want to be able to declare new local variables there.
2022-03-05 16:24:33 -08:00
Leonardo de Moura
ad5099ec3c
fix: mkLetRecClosureFor for nested let-recs
...
closes #1020
2022-02-16 12:44:02 -08:00
Leonardo de Moura
1f230c336b
chore: style
2022-02-15 13:32:48 -08:00
Leonardo de Moura
12e2a79170
chore: fix codebase after removing auto pure
2022-02-03 18:08:14 -08:00
Leonardo de Moura
be4c86f780
chore: remove temporary workarounds
2022-01-17 17:03:15 -08:00
Leonardo de Moura
f8653a8cb7
chore: add temporary workaround
2022-01-17 16:58:39 -08:00
Leonardo de Moura
bac91b9b5b
chore: remove arbitrary
2022-01-15 12:14:27 -08:00
Leonardo de Moura
cee8ad1b66
chore: fix codebase
2022-01-10 15:07:55 -08:00
Leonardo de Moura
929aafa4c8
fix: generate an error if declaration name clashes with variable name
...
closes #799
2022-01-10 12:08:11 -08:00
Leonardo de Moura
b2d26380f2
fix: remove auxiliary discriminant let-declarations
2022-01-07 15:03:19 -08:00
Leonardo de Moura
b6ef65d8fd
fix: where structure instance parser
...
closes #753
2021-12-12 07:52:52 -08:00
Leonardo de Moura
a3361e7d86
fix: missing universe assignments made during TC resolution
...
closes #796
2021-12-12 07:07:13 -08:00
Leonardo de Moura
68bd55af32
chore: fix codebase
2021-12-10 13:12:09 -08:00
Sebastian Ullrich
77aed3a0b1
fix: add binder info nodes for parameter copies in body
2021-12-09 18:12:51 +01:00
Leonardo de Moura
23740778d4
refactor: termination hints
2021-10-03 18:09:35 -07:00
Leonardo de Moura
640fc964b6
feat: basic termination_by bookkeeping
2021-09-21 15:24:42 -07:00
Leonardo de Moura
445cc3085f
refactor: avoid Name, MVarId, and FVarId confusion
2021-09-07 19:06:50 -07:00
Leonardo de Moura
75b8d9aa86
feat: add support for classes with a prefix of outParams at deriving ...
2021-09-03 11:33:09 -07:00
Leonardo de Moura
bbb74bfd9a
feat: elaborate optional deriving after def
2021-09-03 10:22:17 -07:00
Leonardo de Moura
672849e302
feat: improve error message for constant a b c : Nat
...
see issue #645
2021-08-26 08:26:33 -07:00
Leonardo de Moura
21c68a49e3
feat: elaborate nonrec modifier
2021-08-21 17:02:54 -07:00
Sebastian Ullrich
8420a33626
fix: do not leak nested definitions from example
2021-05-03 09:11:14 +02:00
Leonardo de Moura
a6888f72dd
fix: instance + where + implicts issue
...
The following could not be elaborated.
```lean
instance : MulComm Bool where
mulComm := fun {a b} =>
match a, b with
| true, true => rfl
| true, false => rfl
| false, true => rfl
| false, false => rfl
```
2021-04-24 20:07:35 -07:00
Leonardo de Moura
390a476caf
fix: incorrect use of unreachable!
2021-04-07 18:11:10 -07:00
Leonardo de Moura
7c8e27b044
chore: minor
2021-04-07 11:14:46 -07:00
Leonardo de Moura
c35f96ac82
feat: avoid bizarre error message for definition without body
...
@kha This is a temporary hack to avoid a incomprehensible error
message. I will try to tweak the parser error recovery in another
commit.
2021-03-31 17:05:34 -07:00
Leonardo de Moura
b899447817
refactor: move collectFVars to Meta
2021-03-26 19:16:21 -07:00
Leonardo de Moura
99cd4fa720
feat: refine auto bound implicit locals
2021-03-23 17:33:15 -07:00
Leonardo de Moura
be841a7cad
chore: throwError! => throwError, throwErrorAt! => throwErrorAt
...
@Kha I marked the corresponding methods as `protected`.
I currently can't stand `throw_error`, and I am optimistic about
server highlighting feature you are working on :)
2021-03-11 11:59:45 -08:00
Leonardo de Moura
164577d94e
chore: remove parser! and tparser!
...
The new macros are called "leading_parser` and `trailing_parser`.
cc @Kha
2021-03-11 09:36:58 -08:00
Leonardo de Moura
68143ca8ba
chore: trace[...]! ==> trace[...]
...
@Kha I think this one is a good change, there is no real reason for
using the `!` suffix here.
2021-03-10 18:44:43 -08:00
Leonardo de Moura
be4cf605fd
feat: improve error message
...
closes #331
2021-03-05 13:42:54 -08:00
Leonardo de Moura
0c1c6c0a73
feat: convert universe metavariables into parameters after elaborating theorem header
...
closes #318
Like Lean 3, we are doing it only for theorems.
@Kha, we talked about doing it for definitions too, it sounded like a
good idea, and it would make the system's behavior more uniform, but
unfortunately it creates too many problems. There are so many trivial
cases where it breaks. Here are some examples.
1- Definitions that take multiple bundled structures
```
def foo (s1 : Group) (s2 : CommRing) ...
```
They are universe polymorphic, and the different structures must be in
the same universe, but we don't know it when we elaborate the header,
that is, we need to elaborate the body.
An extreme case is `PUnit` occurring in the header. It is universe
polymorphic, but we only lear the constraints on this universe after
we elaborate the body.
2- All files containing unification hints broke.
Again, there are universe constraints on the header that we only learn
after we elaborate the body.
3- Many `CoeSort` and `CoeFun` examples broke.
Example:
```
structure Group :=
(carrier : Type u) (mul : carrier → carrier → carrier) (one : carrier)
instance GroupToType : CoeSort Group (Type u) :=
CoeSort.mk (fun g => g.carrier)
```
We would have to write
```
instance GroupToType : CoeSort Group.{u} (Type u) :=
CoeSort.mk (fun g => g.carrier)
```
We would have to provide universe level parameters manually in this
kind of instance. I think it would be too annoying.
2021-02-25 16:53:58 -08:00
Leonardo de Moura
1b16f9b33c
fix: make sure kernel checks examples
...
We discard the resulting environment for examples.
closes #309
cc @Kha
2021-02-25 13:34:27 -08:00
Leonardo de Moura
5a02c4facc
chore: cleanup
2021-01-28 15:23:46 -08:00
Leonardo de Moura
ea0fda39bc
chore: Declaration.lean naming convention
...
`Declaration.lean` was one of the first Lean 4 files, and was still
using an old naming convention.
cc @Kha
2021-01-20 17:07:02 -08:00
Leonardo de Moura
fdc0f906f4
feat: improve error message position for compiler errors
2021-01-12 17:10:11 -08:00
Leonardo de Moura
36008271ea
feat: ensure no unassigned metavariables in the declaration header when type is explicitly provided
2021-01-11 16:40:14 -08:00
Leonardo de Moura
84f78edb31
feat: store declaration ranges
2021-01-11 12:50:11 -08:00
Leonardo de Moura
7dec568ef6
fix: missing withDeclName
2021-01-11 06:50:55 -08:00