Commit graph

3163 commits

Author SHA1 Message Date
Sebastian Ullrich
8a02dfec4f feat: subsume variables under variable
/cc @leodemoura
2021-01-22 14:36:05 +01:00
Leonardo de Moura
d6eb5a9ff2 feat: generate sizeOf equality lemmas for constructors
TODO: support for nested inductive types.
2021-01-21 17:44:15 -08:00
Leonardo de Moura
c78a06d9a5 test: add Kyle's experiment to test suite 2021-01-21 10:35:22 -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
Sebastian Ullrich
79107a2316 feat: copy & store whole ref range in SourceInfo 2021-01-20 16:48:50 +01:00
Leonardo de Moura
e57a9fa78f fix: fixes #280
We are going to use a cleaner fix when we port this code to Lean.
2021-01-19 18:01:52 -08:00
Leonardo de Moura
c1bc0e44f6 fix: fixes #281
This issue exposed two bugs at `Structural.lean`

1- `getFixedPrefix` was using structural equality to detected fixed
arguments. We should use definitional equality.

2- The `replaceFVars` was broken. We should use `instantiateForall` instead.
2021-01-19 18:01:52 -08:00
Leonardo de Moura
1e7380a1f7 fix: fixes #282 2021-01-19 18:01:52 -08:00
Leonardo de Moura
f1ed13efff feat: improve elabMatchAux
We now (try to) postpone `match ... with` elaboration when pattern
variables and patterns still contain metavariables before invoking `mkMatcher`.

This improvement makes sure we can elaborate an example submitted by
Daniel Selsam.

Remark: this update may create performance problems since we
backtrack `elabMatchTypeAndDiscrs` and `elabMatchAltView`.
We hope this is not a problem in practice since we use the "quick-check"
`waitExpectedTypeAndDiscrs`. Recall that we could compile Lean
without this commit. So, it suggests cases where we need to postpone
after `elabMatchAltView` are rare.
2021-01-18 15:33:48 -08:00
Leonardo de Moura
7e0d76aff0 fix: losing local instances at assertAfter
closes #270
2021-01-15 19:30:03 -08:00
Leonardo de Moura
dcc2283426 fix: refineCore
closes #269
2021-01-15 17:03:40 -08:00
Leonardo de Moura
58d51bc764 feat: add FieldInfo 2021-01-15 15:01:45 -08:00
Wojciech Nawrocki
310a2ab6a3 feat: minimal hovers MVP 2021-01-15 13:29:22 -08:00
Leonardo de Moura
ae60360d7a feat: add resolveName' which produces Syntax with position information for each field 2021-01-15 11:19:01 -08:00
Leonardo de Moura
25c9727a92 feat: add TermInfo for LVal
@Vtec234 Added the missing info.
Given
```lean
def f3 (s : Nat × Array (Array Nat)) : Array Nat :=
  s.2[1].push s.1
```
We produce the following `InfoTree` for the body (originally at line 30)
```
Array.push (Array.getOp s.snd 1) s.fst : Array Nat @ ⟨30, 2⟩-⟨30, 17⟩
  s : Nat × Array (Array Nat) @ ⟨30, 2⟩-⟨30, 3⟩
  Prod.snd : {α β : Type} → α × β → β @ ⟨30, 4⟩-⟨30, 5⟩
  Array.getOp : {α : Type} → [inst : Inhabited α] → Array α → Nat → α @ ⟨30, 5⟩-⟨30, 6⟩
  1 : Nat @ ⟨30, 6⟩-⟨30, 7⟩
  Array.push : {α : Type} → Array α → α → Array α @ ⟨30, 9⟩-⟨30, 13⟩
  s.fst : Nat @ ⟨30, 14⟩-⟨30, 17⟩
    s : Nat × Array (Array Nat) @ ⟨30, 14⟩-⟨30, 15⟩
    Prod.fst : {α β : Type} → α × β → α @ ⟨30, 16⟩-⟨30, 17⟩
```
2021-01-14 12:19:21 -08:00
Leonardo de Moura
fb52ec8ef5 feat: store binder information in the InfoTree
@Vtec234 I am storing the binder information using `TermInfo`.
If it helps, I can add a custom `Info` constructor.
Example: `| Info.ofBinderInfo (i : BinderInfo)`.
2021-01-14 12:19:21 -08:00
Leonardo de Moura
e5b93783b0 test: TC issue repro 2021-01-13 18:41:01 -08:00
Leonardo de Moura
6e3792e995 chore: fix tests 2021-01-13 18:31:50 -08:00
Leonardo de Moura
b5fdc5e364 fix: expand abbreviations at isClass? 2021-01-12 06:56:23 -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
7dec568ef6 fix: missing withDeclName 2021-01-11 06:50:55 -08:00
Leonardo de Moura
300fcc3321 fix: bug at getStuckMVar? 2021-01-11 06:43:08 -08:00
Leonardo de Moura
873634be7e feat: hierarchical InfoTree 2021-01-09 14:10:11 -08:00
Leonardo de Moura
11c7ca40c3 fix: missing case at Match.lean 2021-01-07 17:38:22 -08:00
Leonardo de Moura
5baa162713 chore: lean 3 behavior for apply 2021-01-05 12:29:29 -08:00
Leonardo de Moura
93f3c98780 test: add partial/unsafe tests 2021-01-01 18:46:12 -08:00
Leonardo de Moura
e517d72bee feat: simpForall 2021-01-01 17:24:56 -08:00
Leonardo de Moura
244b72befd feat: simpArrow 2021-01-01 17:15:15 -08:00
Leonardo de Moura
15c052d44a feat: basic simpLet 2021-01-01 15:54:29 -08:00
Leonardo de Moura
493d089878 feat: add support for simp { contextual := true } 2021-01-01 15:39:41 -08:00
Leonardo de Moura
e742dd1348 feat: allow user to set Simp.Config at simp 2021-01-01 15:12:18 -08:00
Leonardo de Moura
ac394e4fdf fix: simp at hypotheses and using hypotheses 2021-01-01 12:05:38 -08:00
Leonardo de Moura
ce09e795b9 feat: finalizeProof at rewrite step 2021-01-01 11:33:34 -08:00
Leonardo de Moura
3a369938c8 feat: simpLambda 2021-01-01 09:52:01 -08:00
Leonardo de Moura
b756562d4a feat: simp beta/proj/recursor/matcher 2021-01-01 08:29:21 -08:00
Leonardo de Moura
90428cc09b feat: expand let-decls at decide! 2020-12-31 09:47:05 -08:00
Leonardo de Moura
a32c45a515 feat: simp infrastructure 2020-12-30 18:00:04 -08:00
Leonardo de Moura
34f6f8ef5d feat: pre/post simp lemmas 2020-12-30 13:46:14 -08:00
Leonardo de Moura
03cc69f1db feat: track permutation simp lemmas 2020-12-30 13:46:14 -08:00
Leonardo de Moura
eba3983658 feat: use binrel! gadget to define >, <, ... notations
It has better support for applying coercions.
2020-12-29 16:53:10 -08:00
Leonardo de Moura
51e2db9850 feat: elaborate binrel! macro 2020-12-29 16:37:43 -08:00
Leonardo de Moura
479da7b914 feat: elaborate noindex! annotation 2020-12-28 17:49:54 -08:00
Leonardo de Moura
7165d50c93 feat: simp lemmas of the form not p 2020-12-28 17:03:32 -08:00
Leonardo de Moura
5a772e58d3 test: simp extension 2020-12-28 16:52:15 -08:00
Leonardo de Moura
4f4c8f45cd chore: fix tests 2020-12-28 16:27:38 -08:00
Leonardo de Moura
19a3f8e5e5 chore: fix typo 2020-12-28 09:01:23 -08:00
Sebastian Ullrich
837d6a1529 chore: fix test 2020-12-26 21:12:51 +01:00
Leonardo de Moura
4450b8567d fix: sigma notation precedence 2020-12-26 09:35:40 -08:00
Leonardo de Moura
edb51b8977 test: implicit lambdas in action 2020-12-23 10:24:00 -08:00
Leonardo de Moura
e74ba14f4c feat: modify structSimpleBinder parser
@Kha It felt odd that we can write
```
   map f x := ...
```
in instances, but we had to write
```
   map (f x) := ...
```
when setting the field default value in a class.
2020-12-23 08:23:14 -08:00