Commit graph

3404 commits

Author SHA1 Message Date
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
Gabriel Ebner
3cff5ceb99 perf: make trace[...] ... notation lazy 2021-06-23 00:07:27 -07:00
Sebastian Ullrich
30a0954424 refactor: revert MonadRef changes 2021-06-21 10:17:26 -07:00
Sebastian Ullrich
da4c46370d feat: store elaborator declaration name in info tree 2021-06-21 10:17:26 -07:00
Daniel Selsam
ded51882a0
feat: pp motives and misc delab fixes 2021-06-13 00:06:27 +02:00
Leonardo de Moura
a435f3d641 feat: reduce s.1 =?= v to s =?= ⟨v⟩ if structure has a single field
This feature was suggested by @dselsam at PR #521.
It closes #509
2021-06-11 11:23:19 -07:00
Gabriel Ebner
94e299a730 fix: instantiate mvars in rewrite tactic 2021-06-11 10:27:05 -07:00
Reijo Jaakkola
32897440dc
fix: change IO.FS.Handle.read to return empty array at EOF
Make EOF handling in IO.FS.Handle consistent with EOF handling in
IO.FS.Handle.getLine. Previously returned error at EOF which ended up
causing segmentation fault. Remove the declaration of g_io_error_eof,
since it becomes redundant.

Closes #349
2021-06-08 13:17:53 +02:00