Commit graph

24104 commits

Author SHA1 Message Date
Wojciech Nawrocki
ec903f58d2 feat: bare-bones goal request handler 2021-02-06 10:41:14 +01:00
Wojciech Nawrocki
2aa4a7957e feat: configurable server edit delay 2021-02-06 10:41:14 +01:00
Wojciech Nawrocki
e383222f92 feat: hovers for fields & refactor 2021-02-06 10:41:14 +01:00
Leonardo de Moura
cb8c1368b4 chore: remove workaround 2021-02-05 18:11:31 -08:00
Leonardo de Moura
f51328ff11 feat: custom elaborator for forIn
This commit also moves `elabBinRel` to `Extra.lean`
2021-02-05 18:01:58 -08:00
Leonardo de Moura
2d6b59f4bb feat: add dummy elabForIn 2021-02-05 17:02:57 -08:00
Leonardo de Moura
e3c3fc3165 feat: add helper macro forIn!
We are going to write a custom elaborator for `forIn` applications.
2021-02-05 16:51:06 -08:00
Leonardo de Moura
eb510c16c3 chore: remove two workarounds
They are not needed anymore after 83775b08cb
2021-02-05 15:21:57 -08:00
Leonardo de Moura
83775b08cb fix: whnfCore not expanding delayed assignments 2021-02-05 15:14:12 -08:00
Leonardo de Moura
f57c184dbd chore: remove = true old workarounds
@Kha The old `= true` workarounds are not needed anymore, they were
due to another issue and are not related to yesterday's issue.
That is, the one exposed by the `ForIn` typeclass.
2021-02-05 13:48:03 -08:00
Leonardo de Moura
4dc2a84302 fix: whnfCore
Update function before invoking `reduceMatcher?`
2021-02-05 13:40:39 -08:00
Leonardo de Moura
8c0346f00c feat: improve binrel! macro 2021-02-05 13:28:57 -08:00
Leonardo de Moura
cab3c72374 fix: isDefEq for applications in WHNF
The issue fixed by this commit was exposed by c17a1c382f
We also document the TC workaround used at `tryHeuristic`.
2021-02-05 12:42:34 -08:00
Leonardo de Moura
09de37e8e5 chore: improve error message 2021-02-05 12:26:39 -08:00
Leonardo de Moura
c17a1c382f fix: isDeltaCandidate?
It should return `some ...` only if `ConstantInfo` has a value.
2021-02-05 09:19:37 -08:00
Leonardo de Moura
10a10b38d8 fix: fixes #303 2021-02-05 07:53:18 -08:00
Leonardo de Moura
278d47c772 chore: add Repr instance for TransparencyMode 2021-02-04 20:40:05 -08:00
Leonardo de Moura
d0ffecd419 chore: consistency
Make sure `Array.all` and `Array.any` parameter order is similar to
`List.all` and `List.any`.
2021-02-04 20:39:28 -08:00
Leonardo de Moura
8a1433794b chore: improve TC error message when there is a type mismatch 2021-02-04 19:20:39 -08:00
Leonardo de Moura
24d58b672c chore: add temporary workarounds 2021-02-04 18:38:04 -08:00
Leonardo de Moura
3d4bc9f991 chore: provide ambient monad to forIn 2021-02-04 18:31:28 -08:00
Leonardo de Moura
53539b1dff chore: use polymorphic method forIn 2021-02-04 18:13:01 -08:00
Leonardo de Moura
aae8a35150 feat: add ForIn type class 2021-02-04 17:59:44 -08:00
Leonardo de Moura
e415cfa632 chore: increase synthInstance.maxHeartbeats default 2021-02-04 17:36:12 -08:00
Leonardo de Moura
d956f0ae9f feat: use destructTuple to compile for in notation instead of pattern matchin 2021-02-04 17:17:51 -08:00
Leonardo de Moura
c747230e28 refactor: move isMonad? to AppBuilder.lean 2021-02-04 17:17:51 -08:00
Leonardo de Moura
e2028e64ff feat: add option maxUniverseOffset
Universe level offsets are supposed to be small numbers in practice.
2021-02-04 17:17:51 -08:00
Leonardo de Moura
d494756d00 fix: inline loop 2021-02-04 17:17:51 -08:00
Leonardo de Moura
768f2642bd chore: document why alternative Stream design does not work 2021-02-04 17:17:51 -08:00
Sebastian Ullrich
bdf7b15a41 feat: basic unexpanders for Exists & Sigma
A bit brittle and not quite complete, but probably good enough in practice
2021-02-04 11:04:37 +01:00
Leonardo de Moura
dae0132439 fix: save/restore state at elabTypeWithAutoBoundImplicit 2021-02-03 15:04:18 -08:00
Leonardo de Moura
e63111b39a fix: fixes #302
TODO: investigage error message duplication
2021-02-03 15:04:18 -08:00
Leonardo de Moura
1a15b0183b chore: occursCheck semantics was confusing 2021-02-03 15:04:18 -08:00
Leonardo de Moura
d1efcab6f5 perf: improve occursCheck 2021-02-03 15:04:18 -08:00
Leonardo de Moura
2510c0cb4a chore: cleanup 2021-02-03 15:04:18 -08:00
Leonardo de Moura
33e71116a5 chore: add missing deriving Inhabited 2021-02-03 15:04:18 -08:00
Sebastian Ullrich
bd5225aa09 fix: make forwardMessages tail-recursive
Just something I noticed while failing to debug an (apparently) unrelated issue hanging Emacs
2021-02-03 15:24:12 +01:00
Leonardo de Moura
f4c9f7e163 chore: remove id_delta (aka idDelta)
It is a leftover from Lean 3.
2021-02-02 13:59:37 -08:00
Leonardo de Moura
bda39b9a72 feat: extend set of valid characters that can occur in an auto bound implicit local name suffix 2021-02-02 10:29:29 -08:00
Leonardo de Moura
729047b5a2 feat: auto bound implicit at constructors
@Kha This commit adds auto bound implicits to constructors.
I was excited until I tried to define the `Bigstep` type again without
`autoBoundImplicitLocal`, and found small typos.
Example, I had
```
  | ifTrue  : eval σ₁ b = true  → Bigstep (c₁, σ₁) σ₂ t → Bigstep (cond b c₁ c₂, σ₁) σ₂ (t₁ + 1)
```
where `t₁` should be `t`, but the declaration was accepted. I am
wondering whether Isabelle performs some kind of sanity checking,
and/or enforces rules such as: auto-bound implicits may only be
introduced by hypotheses.
Note that this is not an issue for definitions, because the body of
the definition will probably not type check when we have this kind of
typo in the header.
Anyway, I am putting the experiment in this branch for now.
That being said, the `Bigstep` declaration is way nicer with
`autoBoundImplicitLocal`s.

Another option is to add a new option `ctorAutoBoundImplicitLocal`
that is false by default, and activates auto implicit locals for
constructors when set to true.
2021-02-02 10:18:21 -08:00
Leonardo de Moura
61c922b518 chore: add comment 2021-02-02 10:10:32 -08:00
Sebastian Ullrich
4772fb5849 feat: delaborator: use if prop 2021-02-02 13:54:34 +01:00
Sebastian Ullrich
dd6c291788 fix: relax eager mvar instantiation during constructor elaboration
@leodemoura: Could you double-check?
2021-02-02 13:19:15 +01:00
Leonardo de Moura
fba719ff02 chore: adjust WF.lean 2021-02-01 18:08:48 -08:00
Leonardo de Moura
2888e49785 feat: @ modifier at induction and cases tactic alternatives 2021-02-01 18:03:19 -08:00
Leonardo de Moura
c1dce595a5 feat: add option useNamesForExplicitOnly to introN 2021-02-01 17:35:48 -08:00
Leonardo de Moura
e583b3bdc0 feat: allow @ modifier at inductionAlt 2021-02-01 17:13:51 -08:00
Leonardo de Moura
4a932b9d06 chore: prepare to @ to inductionAlt 2021-02-01 17:05:50 -08:00
Leonardo de Moura
bc173375ba fix: missing resolveGlobalConstNoOverload 2021-02-01 16:12:25 -08:00
Leonardo de Moura
b4dfa08543 chore: store eliminator name at ElimInfo 2021-02-01 13:16:52 -08:00