Commit graph

5921 commits

Author SHA1 Message Date
Daniel Selsam
0036111db9 feat: pp.analyze original mvars are not unknown 2021-08-03 09:13:18 +02: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
f1002cf759 feat: delab more thorough 'getParamKinds' 2021-08-03 09:13:18 +02:00
Daniel Selsam
652681621a fix: pp.analyze don't type-annotate mdatas 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
00a33e2662 fix: bug in ppExpr test 2021-08-03 09:13:18 +02:00
Daniel Selsam
e6b90dde8f fix: pp.analyze mvars can bottom-up 2021-08-03 09:13:18 +02:00
Daniel Selsam
3fa992c684 feat: new pp.analyze.knowsType option 2021-08-03 09:13:18 +02:00
Daniel Selsam
7576b1dad1 chore: fix test hardcoding position offset 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
e0897ae78c chore: test unexpanders inside namespaces 2021-08-03 09:13:18 +02:00
Daniel Selsam
5acdf48366 chore: fix tests 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
c3d62c1076 chore: patch tests for pp.analyze default 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
ce64629d63 chore: two comments about bad pp.analyze behavior 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
3b3e54143c feat: pp.analyze isSubstLike support Eq.rec 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
ca3be9876e feat: flag to trust coercions 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
635bc78d72 feat: use structure extension to implement Structure.lean 2021-08-02 18:03:20 -07: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
Leonardo de Moura
9e4582a7d0 fix: fixes #593 2021-08-02 10:46:12 -07:00
Wojciech Nawrocki
f51b80060d feat: generic tagged Format 2021-08-01 09:58:44 +02:00
Wojciech Nawrocki
d2e23ff5cf fix: deriving RpcEncoding 2021-08-01 09:58:44 +02:00
Sebastian Ullrich
32bea73708 fix: ensure hygiene of double-quoted names
Fixes #586
2021-07-30 07:17:50 -07: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