Leonardo de Moura
71f91cca23
chore: make sure isClass? return none when argument contains type errors
...
This is particularly useful for the delaborator when trying to pretty
print code that contains type errors.
2020-09-17 08:24:06 -07:00
Sebastian Ullrich
607227dc7f
feat: delaborator: tolerate ill-typed terms (such as IR)
2020-09-17 08:12:28 -07:00
Leonardo de Moura
b37158f4f8
fix: apply
2020-09-16 16:18:30 -07:00
Leonardo de Moura
f2835207a8
refactor: move isDefEqGuarded helper
2020-09-16 10:15:47 -07:00
Leonardo de Moura
544d2f4ce5
fix: kind for type metavariable
...
For example, `mkFreshExprMVar none MetavarKind.synthetic` should
create a fresh synthetic metavariable `?m` with type `?t` where `?t`
is a fresh natural metavariable. If users want a synthetic
metavariable `?t`, then it must create it themselves.
2020-09-16 08:24:15 -07:00
Leonardo de Moura
0abca5475f
refactor: move ppExpr to IO
...
@Kha I am also tracking `currNamespace` and `openDecls`.
BTW, I also tried an experiment where I added `currNamespace` and
`openDecls` to `Meta.Context`, but it looked weird. This information
is only needed in the elaborator and pretty printer.
The `PPContext` object should contain everything you need. You
can put `currNamespace` and `openDecls` in the `Delaborator.Context`.
2020-09-15 18:48:21 -07:00
Leonardo de Moura
c4c1a3fc8d
chore: make it clear the free variable dependency
2020-09-15 16:39:17 -07:00
Leonardo de Moura
9af6264aad
fix: do not fail if target is not found
2020-09-15 15:06:35 -07:00
Leonardo de Moura
232378070f
feat: parentTag propagation for apply
2020-09-15 10:46:40 -07:00
Leonardo de Moura
52d6fbb906
fix: appendTagSuffix operation
2020-09-15 10:46:40 -07:00
Leonardo de Moura
c3623e9a0a
chore: reduce default max steps
2020-09-13 16:18:53 -07:00
Leonardo de Moura
5da7f0b50b
fix: set constApprox := false at SynthInstance
...
We don't want contraints such as
```
?m a =?= Nat
```
to be solved as
```
?m := fun a => Nat
```
durint type class resolution.
2020-09-13 16:11:27 -07:00
Leonardo de Moura
2de7f1f4d9
doc: possible improvement
2020-09-13 13:16:03 -07:00
Leonardo de Moura
fd7dca9bc1
fix: do not cache if term contains Expr-metavariables
2020-09-13 13:13:05 -07:00
Leonardo de Moura
897289599a
fix: ignore auxiliary declarations at subst and assumption
2020-09-13 09:59:37 -07:00
Leonardo de Moura
e181c1adee
refactor: add DefEqM
...
The idea is to make clear that the field `posponed` is transient
state. It is only used during `isDefEq`.
The refactoring was motivated by a bug I found where the `posponed`
constraints were not being handled correctly. For example,
the `check (e : Expr)` method was returning `true`, but leaving pending
universe constraints at `postponed`.
cc @Kha
2020-09-12 16:42:16 -07:00
Leonardo de Moura
0967ad7e91
feat: extend/cleanup isLevelDefEqAux
...
`tests/lean/run/toExpr.lean` could not be processed by the new
frontend without these extensions.
2020-09-12 15:38:48 -07:00
Leonardo de Moura
a5c99b7601
fix: bug at getInstances
2020-09-10 17:49:17 -07:00
Leonardo de Moura
f28def6c5e
feat: add Meta.ppExpr
2020-09-10 17:27:14 -07:00
Leonardo de Moura
b136c519e2
fix: scope and improve error message
2020-09-09 16:44:43 -07:00
Leonardo de Moura
02fc447b04
fix: error message
2020-09-09 16:42:41 -07:00
Leonardo de Moura
20bc004c70
feat: improve subst tactic
2020-09-09 16:20:15 -07:00
Leonardo de Moura
854cc3418e
feat: improve error message for dependent-match elimination failures
...
@Kha This is a first attempt to improve the error message for examples
like the one Andrew Kent posted on Zulip.
I created a simpler example using "vectors".
2020-09-09 13:43:06 -07:00
Leonardo de Moura
96ffd206ca
feat: add findRecArg
2020-09-08 17:25:35 -07:00
Leonardo de Moura
9151fef49d
feat: abstract proofs occurring in binders
2020-09-08 12:29:35 -07:00
Leonardo de Moura
296981319c
feat: add abstractNestedProofs
2020-09-08 11:48:28 -07:00
Leonardo de Moura
aed9b16dc8
feat: add MatcherInfo extension
2020-09-07 15:08:21 -07:00
Leonardo de Moura
fded18d114
chore: mkElim ==> mkMatcher
2020-09-07 14:33:39 -07:00
Leonardo de Moura
a12bc273bb
refactor: src/Lean/Meta/EqnCompiler ==> src/Lean/Meta/Match
2020-09-07 11:09:48 -07:00
Leonardo de Moura
87db970cfa
chore: control code size explosion
2020-09-07 08:42:39 -07:00
Leonardo de Moura
936b8d34dd
chore: add auxiliary declaration to stop specialization
2020-09-07 08:30:08 -07:00
Leonardo de Moura
ddf12c91c2
fix: do not consider auxiliary declarations as local instances
2020-09-07 08:08:35 -07:00
Leonardo de Moura
36bc65385d
chore: naming convention
2020-09-07 08:03:41 -07:00
Leonardo de Moura
79130bc3f9
feat: add addAndCompilePartial
2020-09-07 07:56:11 -07:00
Leonardo de Moura
f30b5bdcba
chore: control code size explosion
2020-09-07 07:23:44 -07:00
Leonardo de Moura
102d2ae57d
fix: avoid unnecessary reduction
...
```lean
forallBoundedTelescope `(Nat -> IO Nat) 1 fun xs type => ...
```
should assign `IO Nat` to `type` instead of `IO.RealWorld -> ...`
2020-09-06 06:57:52 -07:00
Leonardo de Moura
12f69a78b7
chore: change meaning of lambdaTelescope
...
`lambdaTelescope` now only consumes `lambda`s.
`lambdaLetTelescope` implements the old behavior.
2020-09-04 13:35:17 -07:00
Leonardo de Moura
a04fc631e0
doc: Closure.lean
...
@Kha I documented the new `Closure.lean` module, and tried to capture
the issues we discussed this morning.
Tomorrow, I will implement a similar procedure for "closing" all the
let-recs in a `mutual` block.
2020-09-03 18:06:30 -07:00
Leonardo de Moura
555a3f0dcf
feat: new and improved mkAuxDefinition
2020-09-03 17:37:06 -07:00
Leonardo de Moura
f34fd3e6b4
refactor: move Closure.lean to Meta
...
We will need to improve the support for let-decls. We will use
the new `trackZeta`.
2020-09-03 11:54:08 -07:00
Leonardo de Moura
ad774ae397
feat: support for tracking which let-decls have been zeta expanded
2020-09-03 11:32:46 -07:00
Leonardo de Moura
5cc0dd75ec
refactor: remove unnecessary abstraction
2020-09-03 10:16:56 -07:00
Leonardo de Moura
238c38fed9
feat: preserve nonDep flag at LocalDecl.ldecl
2020-09-03 09:08:59 -07:00
Leonardo de Moura
f2a6562eed
feat: validate 'let rec' types
2020-09-02 17:02:40 -07:00
Leonardo de Moura
25384142c2
feat: add addPartialDecls
...
Helper method for implementing the idiom: unsafe decls + constant with `[implementedBy]`
2020-08-31 14:23:54 -07:00
Leonardo de Moura
7bd1cf718e
feat: improve error location for unassigned holes in the exact tactic
2020-08-30 15:37:11 -07:00
Leonardo de Moura
3d3238c7fe
fix: typo at introNCoreAux
2020-08-29 17:00:59 -07:00
Leonardo de Moura
52c86e918d
fix: match
2020-08-29 16:38:50 -07:00
Leonardo de Moura
0288ed0129
feat: add change and changeHypothesis
2020-08-29 08:10:55 -07:00
Leonardo de Moura
e5c35d3a4e
feat: add AddMessageDataContext
2020-08-28 18:05:42 -07:00