Leonardo de Moura
74411aa472
fix: do not display implicit fields
2022-03-09 12:33:22 -08:00
Leonardo de Moura
50ae170bcc
feat: allow mkLambdaFVars and mkForallFVars to abstract unassigned metavars too
2022-03-09 11:27:58 -08:00
Leonardo de Moura
4660485ac8
refactor: collectDeps => collectForwardDeps
2022-03-09 11:27:58 -08:00
Leonardo de Moura
5636c94cd0
chore: remove old comment, simplify exception
2022-03-09 11:27:58 -08:00
Leonardo de Moura
1263cea6af
feat: add support for unassigned metavariables at dependsOn
2022-03-09 11:27:58 -08:00
Leonardo de Moura
164f07a5e5
feat: generalize Expr.abstractRange
...
It now takes free variables **and** metavariables.
This is the first step to make `mkForallFVars` and `mkLambdaFVars`
more general.
2022-03-08 18:19:17 -08:00
Leonardo de Moura
d6b782f811
chore: remove workaround
...
for regression introduced by the following change
* Auto implicit behavior changed for inductive families. An auto implicit argument occurring in inductive family index is also treated as an index (IF it is not fixed, see next item)
2022-03-08 17:58:20 -08:00
Leonardo de Moura
4ee131981d
feat: in an inductive family the longest fixed prefix of indices is now promoted to parameters
...
This modification is relevant for fixing regressions on recent changes
to the auto implicit behavior for inductive families.
The following declarations are now accepted:
```lean
inductive HasType : Fin n → Vector Ty n → Ty → Type where
| stop : HasType 0 (ty :: ctx) ty
| pop : HasType k ctx ty → HasType k.succ (u :: ctx) ty
inductive Sublist : List α → List α → Prop
| slnil : Sublist [] []
| cons l₁ l₂ a : Sublist l₁ l₂ → Sublist l₁ (a :: l₂)
| cons2 l₁ l₂ a : Sublist l₁ l₂ → Sublist (a :: l₁) (a :: l₂)
inductive Lst : Type u → Type u
| nil : Lst α
| cons : α → Lst α → Lst α
```
TODO: universe inference for `inductive` should be improved. The
current approach is not good enough when we have auto implicits.
TODO: allow implicit fixed indices that do not depend on indices that
cannot be moved to become parameters.
2022-03-08 17:56:34 -08:00
Leonardo de Moura
234046521a
feat: print number of parameters for an inductive type
2022-03-08 17:48:46 -08:00
Leonardo de Moura
7b84b4cdaa
fix: improve inductive indices elaboration
...
TODO: convert fixed indices to parameters. Motivation: types such as
```lean
inductive Foo : List α → Type
| mk : Foo []
```
Users should not need to write
```lean
inductive Foo {α} : List α → Type
| mk : Foo []
```
2022-03-08 17:48:46 -08:00
Leonardo de Moura
f74513384e
refactor: cleanup addAutoBoundImplicits
2022-03-08 17:48:46 -08:00
Sebastian Ullrich
e9b8e54dcc
feat: scientific parser alias for scientificLit
2022-03-08 18:54:05 +01:00
Jonathan Coates
11cce61e4d
chore: Clean up LSP folding a little
...
- Wait for all terms to be elaborated before showing folding regions.
May want to change this to support partial results.
- Use .span to extract import statements, rather than mutually
recursive functions.
- Some tiny other bits of cleanup
2022-03-07 17:23:35 +01:00
Jonathan Coates
04e60cebd1
feat: LSP code folding support
...
The following constructs are foldable:
- Sections and namespaces
- Blocks of import/open statements
- Multi-line commands (so mostly definitions)
- Mutual definitions
- Module-level doc comments
- Top-level definition doc comments
Fixes #1012
2022-03-07 17:23:35 +01:00
Sebastian Ullrich
f2d5470f19
feat: allow interpretation of constants initialized by native code
2022-03-07 10:59:49 +01:00
Sebastian Ullrich
ff097e952f
chore: link orphan file
2022-03-07 10:59:49 +01:00
Leonardo de Moura
619186b2a8
feat: only use set_option codegen false where needed
2022-03-06 19:15:05 -08:00
Leonardo de Moura
46d1111d3d
fix: typo at unfoldBothDefEq
2022-03-06 13:54:42 -08:00
Leonardo de Moura
ff0f3bfc61
fix: interaction between overloaded notation and delayed coercions
...
The new test exposes this issue.
2022-03-06 09:49:15 -08:00
Leonardo de Moura
b664a93d8e
fix: a match application is stuck if one of the discriminants contain metavariables
2022-03-06 07:51:09 -08:00
Leonardo de Moura
8bcaafb28b
fix: universe metavariables should not be taken into account at getKeyArgs
2022-03-06 07:50:19 -08:00
Leonardo de Moura
b105c006a5
fix: PrefixTree WellFormed type
...
`β` is a parameter.
2022-03-06 07:30:34 -08:00
Leonardo de Moura
1450a86c4d
feat: include types in the "ambiguous, possible interpretations" error message
2022-03-06 07:26:31 -08:00
Leonardo de Moura
d3b2028a05
feat: add Fin.succ
2022-03-05 17:36:38 -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
22731c02b0
fix: auto implicit locals in inductive families
2022-03-05 15:47:20 -08:00
Leonardo de Moura
613cf19509
fix: discrimination trees and "stuck" terms
...
See comments and new test.
2022-03-05 15:12:20 -08:00
Leonardo de Moura
d39102f865
fix: smart unfolding for reducible definitions
...
When `TransparencyMode.reducible`, smart unfolding for reducible
definitions was not being used.
2022-03-05 14:42:47 -08:00
Leonardo de Moura
9e76cd7d65
fix: toName function at elabAppFnId
...
closes #1038
2022-03-04 16:56:02 -08:00
Leonardo de Moura
a670ed1e2d
fix: use withoutErrToSorry at apply
...
closes #1037
2022-03-04 14:36:10 -08:00
Leonardo de Moura
8b248e2d8c
feat: elaborate for h : x in xs do ... notation
2022-03-03 19:52:26 -08:00
Leonardo de Moura
ef38c82c77
fix: missing hypotheses at List.sizeOf_lt_of_mem
2022-03-03 19:52:05 -08:00
Leonardo de Moura
99677823c3
fix: ForIn' instance binder annotations
2022-03-03 19:51:45 -08:00
Leonardo de Moura
5d2420b1c9
chore: add auxiliary notation for ForIn'
2022-03-03 19:10:24 -08:00
Leonardo de Moura
d8ee03c1bb
feat: add ForIn' instance that is similar to ForIn but provides a proof that the iterated elements are in the collection
2022-03-03 19:05:27 -08:00
Leonardo de Moura
92937b3aba
feat: add for h : x in xs do ... notation
...
The idea is to have `h : x \in xs`.
This commit just adds the parser.
2022-03-03 18:27:40 -08:00
Leonardo de Moura
e1424653b9
chore: remove workaround
2022-03-03 18:16:54 -08:00
Leonardo de Moura
b745c4f51a
fix: recursive overapplication at WF/Fix.lean
2022-03-03 18:13:34 -08:00
Leonardo de Moura
f306c9b69b
fix: split tactic
...
`unreachable!` assertions at `simpIfLocalDecl` and
`simpTargetLocalDecl` were reachable.
2022-03-03 18:13:34 -08:00
Leonardo de Moura
f4e98be163
fix: use whnfD at mkNoConfusion
...
The `split` tactic failed at `Array.sizeOf_lt_of_mem` because the type
in the equality is `Id Bool` when we write `true` instead of `id true`.
2022-03-03 18:13:34 -08:00
Leonardo de Moura
337c55f322
fix: missing import
2022-03-03 18:13:34 -08:00
Leonardo de Moura
aeb9b2fb8c
chore: add Membership instance for Array
2022-03-03 18:13:34 -08:00
Leonardo de Moura
fd519401ff
feat: add Membership instance for List
...
and the theorem `a ∈ as -> sizeOf a < sizeOf as`.
We will use theorems like this one to improve the `decreasing_tactic`.
2022-03-03 18:13:21 -08:00
Leonardo de Moura
022a4d5ac1
feat: add ∈ notation
2022-03-03 17:18:51 -08:00
Leonardo de Moura
f629be745b
chore: add Nat.le_refl as simp theorem
2022-03-03 17:18:11 -08:00
Leonardo de Moura
89c3820781
chore: naming convention
2022-03-03 17:17:51 -08:00
Leonardo de Moura
5845002e8c
feat: use WF at anyM
2022-03-03 16:43:05 -08:00
Leonardo de Moura
3fa001911b
feat: add ite_self simp theorem
2022-03-03 11:55:05 -08:00
Leonardo de Moura
02d7cedba8
chore: remove unnecessary termination_by annotations
2022-03-03 11:24:06 -08:00