lean4-htt/tests
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
..
bench chore: remove command universes 2021-06-29 17:01:07 -07:00
compiler chore: remove command universes 2021-06-29 17:01:07 -07:00
elabissues chore: move pp_options.cpp to Lean 2021-01-27 14:16:12 +01:00
ir
lean feat: improve DiscrTree 2021-07-29 16:08:26 -07:00
leanpkg feat: user-defined attributes 2021-07-26 18:24:10 -07:00
playground chore: update webserver demo 2021-07-15 21:57:55 +02:00
plugin chore: fix test 2021-01-27 15:04:59 +01:00
simpperf feat: add simp benchmark 2020-12-31 15:46:56 -08:00
.gitignore
common.sh