Leonardo de Moura
76cc99179d
fix: fixes #370
2021-08-06 12:52:23 -07:00
Daniel Selsam
34a27f2d56
fix: pp.analyze strict implicits
2021-08-06 17:02:00 +02:00
Leonardo de Moura
bcfc927799
fix: fixes #602
2021-08-05 16:14:04 -07:00
Leonardo de Moura
4dbb3e6db1
fix: add workaround to prevent code explosion at deriving for FromJson
...
fixes #569
2021-08-05 06:58:07 -07:00
Wojciech Nawrocki
1b44768697
chore: fix test
2021-08-05 06:27:57 -07:00
Wojciech Nawrocki
3bbf19a404
feat: FromToJson for nested inductives
2021-08-05 06:27:57 -07:00
Leonardo de Moura
72e7bf4999
fix: synthPending bug
2021-08-04 20:07:06 -07:00
Daniel Selsam
d56db0a22d
doc: pp.analyze one more comment about a failure
2021-08-03 09:13:18 +02:00
Daniel Selsam
2afc18323d
doc: pp.analyze a few comments about failures
2021-08-03 09:13:18 +02:00
Daniel Selsam
d6253e091b
fix: pp.analyze _s when forced explicit
2021-08-03 09:13:18 +02:00
Daniel Selsam
ea6fca24c2
refactor: pp.analyze StateT for analyzeApp
2021-08-03 09:13:18 +02:00
Daniel Selsam
aefd31b2a2
feat: better bottom-up/structure-type heuristics
2021-08-03 09:13:18 +02:00
Daniel Selsam
4c41142a61
chore: pp.analyze new test cases
2021-08-03 09:13:18 +02:00
Daniel Selsam
8dd8aea9c1
chore: new tests
2021-08-03 09:13:18 +02:00
Daniel Selsam
44f1f4e410
refactor: pp.analyze needs pp options
2021-08-03 09:13:18 +02:00
Daniel Selsam
48d5c0d2a6
chore: pp.proofs defaults to false
2021-08-03 09:13:18 +02:00
Daniel Selsam
a84291641b
fix: pp.analyze restriction on _
2021-08-03 09:13:18 +02:00
Daniel Selsam
702211db2a
feat: pp.analyze detect when struct-inst type needed
2021-08-03 09:13:18 +02:00
Daniel Selsam
3bef119136
fix: pp.analyze missing inBottomUp
2021-08-03 09:13:18 +02:00
Daniel Selsam
4b57bc26b3
chore: rm stale test
2021-08-03 09:13:18 +02:00
Daniel Selsam
3309da8f1e
fix: pp.analyze LocalInstances not in MessageData
2021-08-03 09:13:18 +02:00
Daniel Selsam
b3bb82ee7e
feat: turn more delaborators into unexpanders
2021-08-03 09:13:18 +02:00
Daniel Selsam
a96a043618
feat: better coe support
2021-08-03 09:13:18 +02:00
Daniel Selsam
50d67e77ac
fix: type ascriptions
2021-08-03 09:13:18 +02:00
Daniel Selsam
eed0fb6635
feat: special support for 'fun x => x'
2021-08-03 09:13:18 +02:00
Daniel Selsam
811bb56d10
fix: never set a negation
2021-08-03 09:13:18 +02:00
Daniel Selsam
e84a5ac432
fix: @ when there are inaccessible names
2021-08-03 09:13:18 +02:00
Daniel Selsam
280a3db653
fix: only print named patterns inside patterns
2021-08-03 09:13:18 +02:00
Daniel Selsam
d2ff2de4f6
feat: add @ to consts/locals with pi {..} type
2021-08-03 09:13:18 +02:00
Daniel Selsam
1c6cdceb64
refactor: simplify pp.analyze options
2021-08-03 09:13:18 +02:00
Daniel Selsam
89364b802b
feat: top-down heuristic delaboration
2021-08-03 09:13:18 +02:00
Leonardo de Moura
bba9353619
fix: make sure isDefEqOffset does not expose kernel nat literals
...
This issue is similar to a bug where `isDefEqOffset` was exposing
`Nat.add` when processing `HAdd.hAdd`.
Fixes #561
The example at issue #561 is now working, but we may have other places
where raw literals are being accidentally exposed.
2021-08-02 11:27:00 -07:00
Wojciech Nawrocki
d2e23ff5cf
fix: deriving RpcEncoding
2021-08-01 09:58:44 +02:00
Sebastian Ullrich
2833c61a60
fix: respect preresolved names at resolveConst*
...
This makes sure we can properly quote e.g. `deriving` clauses and avoids
a suspicious `eraseMacroScopes` call (though not at `Elab.Syntax`, since
categories do not have to be declaration names)
2021-07-30 07:17:50 -07:00
Leonardo de Moura
b25bb78e2a
feat: improve DiscrTree
...
Try to improve the performance issue described at #587 .
The issue is that Mathlib contains thousands of theorems where the
associated key for the discrimination tree is just
`Key.other`. The indexing is not effective for them. This happens because
1- Lambda expressions are indexed using `Key.other`. The
discrimination tree mainly focus on the first-order structure.
2- It unfolds reducible constants when inserting and retrieving
entries. The motivation is that users expect simp theorems to fire
modulo reducible constants.
Then, we have many theorems such as
```lean
map ?g ∘ map ?f = map (?g ∘ ?f)
```
when we expand the function composition on the left-hand side, we get
```lean
fun (x : List ?α) => map ?g (map ?f x)
```
Which is indexed as `Key.other`.
We should not avoid the `Array`s in the discrimination tree nodes
If the index is working effectively, these arrays are all very small.
In this commit, we try to address the problem by using a different
approach. When processing the root of a pattern, we interrupt
reduction as soon as the we hit something that would be indexed
as `Key.other`. Note that, in Lean 3, the root of a pattern also
receives special treatment.
2021-07-29 16:08:26 -07:00
Leonardo de Moura
49a87ceb4d
feat: add basic isDefEq cache
2021-07-28 16:29:44 -07:00
Leonardo de Moura
51e03837f5
fix: exact and refine succeed if they produce no new metavariables
...
closes #492
2021-07-27 18:30:14 -07:00
Leonardo de Moura
6d05daf73b
feat: add flag for allowing synthetic opaque mvars to be assigned at isDefEq
...
See issue #492
TODO: add a mechanism for detecting new metavariables.
2021-07-27 17:58:08 -07:00
Leonardo de Moura
8c12a264ee
fix: offset support at isDefEq should not use HAdd.hAdd
...
fixes #550
2021-07-27 16:16:03 -07:00
Leonardo de Moura
3f22d5f624
feat: take auto params into account in the structure instance notation
...
closes #461
2021-07-27 15:49:23 -07:00
Leonardo de Moura
714cadfb31
fix: bug at structure instance notation
...
It was exposed by the second example at #461 .
2021-07-27 11:56:33 -07:00
Wojciech Nawrocki
43190e0e63
feat: FromToJson for recursive inductives
2021-07-24 10:47:38 +02:00
Wojciech Nawrocki
d6893a3e1f
fix: more robust LspEncoding
2021-07-24 10:45:28 +02:00
Wojciech Nawrocki
b3d9e90695
feat: IO.getRandomBytes
2021-07-24 10:45:28 +02:00
Wojciech Nawrocki
ef34cfd513
chore: more extensive LspEncoding test
2021-07-24 10:45:28 +02:00
Wojciech Nawrocki
9664fc88e0
chore: add test
2021-07-24 10:45:28 +02:00
Leonardo de Moura
cce6165d4e
perf: refine tryHeuristic
2021-07-23 12:04:11 -07:00
Wojciech Nawrocki
1ba802418b
fix: ToJson for single-field constructors
2021-07-08 09:01:06 +02:00
Leonardo de Moura
5e694d4b69
fix: fixes #536
2021-06-29 18:24:46 -07:00
Leonardo de Moura
90a79a0b06
chore: remove command universes
...
Now, `universe` may declare many universes. The goal is to make it
consistent with the `variable` command
2021-06-29 17:01:07 -07:00